Skip to content

Commit

Permalink
exofs: remove BKL from super operations
Browse files Browse the repository at this point in the history
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 <[email protected]>
Signed-off-by: Al Viro <[email protected]>
  • Loading branch information
Boaz Harrosh authored and Al Viro committed Sep 24, 2009
1 parent 88a0a53 commit 1ba50bb
Showing 1 changed file with 0 additions and 6 deletions.
6 changes: 0 additions & 6 deletions fs/exofs/super.c
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,6 @@ int exofs_sync_fs(struct super_block *sb, int wait)
}

lock_super(sb);
lock_kernel();
sbi = sb->s_fs_info;
fscb->s_nextid = cpu_to_le64(sbi->s_nextid);
fscb->s_numfiles = cpu_to_le32(sbi->s_numfiles);
Expand Down Expand Up @@ -245,7 +244,6 @@ int exofs_sync_fs(struct super_block *sb, int wait)
out:
if (or)
osd_end_request(or);
unlock_kernel();
unlock_super(sb);
kfree(fscb);
return ret;
Expand All @@ -268,8 +266,6 @@ static void exofs_put_super(struct super_block *sb)
int num_pend;
struct exofs_sb_info *sbi = sb->s_fs_info;

lock_kernel();

if (sb->s_dirt)
exofs_write_super(sb);

Expand All @@ -286,8 +282,6 @@ static void exofs_put_super(struct super_block *sb)
osduld_put_device(sbi->s_dev);
kfree(sb->s_fs_info);
sb->s_fs_info = NULL;

unlock_kernel();
}

/*
Expand Down

0 comments on commit 1ba50bb

Please sign in to comment.