diff options
author | Al Viro <viro@zeniv.linux.org.uk> | 2010-03-21 22:34:11 -0400 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2010-05-21 18:31:14 -0400 |
commit | 389b8be6ef419397e4f176652927ebad6ebb4b77 (patch) | |
tree | 941037c2296b94b30f4a883235f54930b6aa485e | |
parent | 79d7e39ee1d4b423206f6cfd2cd2eed6253d95fe (diff) |
get rid of open-coded grab_super() in get_active_super()
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
-rw-r--r-- | fs/super.c | 19 |
1 files changed, 3 insertions, 16 deletions
diff --git a/fs/super.c b/fs/super.c index 156eae5ed503..d8c8b1d2d010 100644 --- a/fs/super.c +++ b/fs/super.c | |||
@@ -487,22 +487,9 @@ struct super_block *get_active_super(struct block_device *bdev) | |||
487 | if (sb->s_bdev != bdev) | 487 | if (sb->s_bdev != bdev) |
488 | continue; | 488 | continue; |
489 | 489 | ||
490 | sb->s_count++; | 490 | if (grab_super(sb)) /* drops sb_lock */ |
491 | spin_unlock(&sb_lock); | 491 | return sb; |
492 | down_write(&sb->s_umount); | 492 | |
493 | if (sb->s_root) { | ||
494 | spin_lock(&sb_lock); | ||
495 | if (sb->s_count > S_BIAS) { | ||
496 | atomic_inc(&sb->s_active); | ||
497 | sb->s_count--; | ||
498 | spin_unlock(&sb_lock); | ||
499 | return sb; | ||
500 | } | ||
501 | spin_unlock(&sb_lock); | ||
502 | } | ||
503 | up_write(&sb->s_umount); | ||
504 | put_super(sb); | ||
505 | yield(); | ||
506 | spin_lock(&sb_lock); | 493 | spin_lock(&sb_lock); |
507 | } | 494 | } |
508 | spin_unlock(&sb_lock); | 495 | spin_unlock(&sb_lock); |