exofs: remove BKL from super operations
the two places inside exofs that where taking the BKL were: exofs_put_super() - .put_super and exofs_sync_fs() - which is .sync_fs and is also called from .write_super. Now exofs_sync_fs() is protected from itself by also taking the sb_lock. exofs_put_super() directly calls exofs_sync_fs() so there is no danger between these two either. In anyway there is absolutely nothing dangerous been done inside exofs_sync_fs(). Unless there is some subtle race with the actual lifetime of the super_block in regard to .put_super and some other parts of the VFS. Which is highly unlikely. Signed-off-by: Boaz Harrosh <bharrosh@panasas.com> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
@@ -214,7 +214,6 @@ int exofs_sync_fs(struct super_block *sb, int wait)
|
|||||||
}
|
}
|
||||||
|
|
||||||
lock_super(sb);
|
lock_super(sb);
|
||||||
lock_kernel();
|
|
||||||
sbi = sb->s_fs_info;
|
sbi = sb->s_fs_info;
|
||||||
fscb->s_nextid = cpu_to_le64(sbi->s_nextid);
|
fscb->s_nextid = cpu_to_le64(sbi->s_nextid);
|
||||||
fscb->s_numfiles = cpu_to_le32(sbi->s_numfiles);
|
fscb->s_numfiles = cpu_to_le32(sbi->s_numfiles);
|
||||||
@@ -245,7 +244,6 @@ int exofs_sync_fs(struct super_block *sb, int wait)
|
|||||||
out:
|
out:
|
||||||
if (or)
|
if (or)
|
||||||
osd_end_request(or);
|
osd_end_request(or);
|
||||||
unlock_kernel();
|
|
||||||
unlock_super(sb);
|
unlock_super(sb);
|
||||||
kfree(fscb);
|
kfree(fscb);
|
||||||
return ret;
|
return ret;
|
||||||
@@ -268,8 +266,6 @@ static void exofs_put_super(struct super_block *sb)
|
|||||||
int num_pend;
|
int num_pend;
|
||||||
struct exofs_sb_info *sbi = sb->s_fs_info;
|
struct exofs_sb_info *sbi = sb->s_fs_info;
|
||||||
|
|
||||||
lock_kernel();
|
|
||||||
|
|
||||||
if (sb->s_dirt)
|
if (sb->s_dirt)
|
||||||
exofs_write_super(sb);
|
exofs_write_super(sb);
|
||||||
|
|
||||||
@@ -286,8 +282,6 @@ static void exofs_put_super(struct super_block *sb)
|
|||||||
osduld_put_device(sbi->s_dev);
|
osduld_put_device(sbi->s_dev);
|
||||||
kfree(sb->s_fs_info);
|
kfree(sb->s_fs_info);
|
||||||
sb->s_fs_info = NULL;
|
sb->s_fs_info = NULL;
|
||||||
|
|
||||||
unlock_kernel();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Reference in New Issue
Block a user