diff options
author | Tejun Heo <tj@kernel.org> | 2010-11-13 05:55:18 -0500 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2010-11-13 05:55:18 -0500 |
commit | d4d77629953eabd3c14f6fa5746f6b28babfc55f (patch) | |
tree | 38cce0d4764ecb34a9f7f49332959780e28bb786 /fs/super.c | |
parent | 75f1dc0d076d1c1168f2115f1941ea627d38bd5a (diff) |
block: clean up blkdev_get() wrappers and their users
After recent blkdev_get() modifications, open_by_devnum() and
open_bdev_exclusive() are simple wrappers around blkdev_get().
Replace them with blkdev_get_by_dev() and blkdev_get_by_path().
blkdev_get_by_dev() is identical to open_by_devnum().
blkdev_get_by_path() is slightly different in that it doesn't
automatically add %FMODE_EXCL to @mode.
All users are converted. Most conversions are mechanical and don't
introduce any behavior difference. There are several exceptions.
* btrfs now sets FMODE_EXCL in btrfs_device->mode, so there's no
reason to OR it explicitly on blkdev_put().
* gfs2, nilfs2 and the generic mount_bdev() now set FMODE_EXCL in
sb->s_mode.
* With the above changes, sb->s_mode now always should contain
FMODE_EXCL. WARN_ON_ONCE() added to kill_block_super() to detect
errors.
The new blkdev_get_*() functions are with proper docbook comments.
While at it, add function description to blkdev_get() too.
Signed-off-by: Tejun Heo <tj@kernel.org>
Cc: Philipp Reisner <philipp.reisner@linbit.com>
Cc: Neil Brown <neilb@suse.de>
Cc: Mike Snitzer <snitzer@redhat.com>
Cc: Joern Engel <joern@lazybastard.org>
Cc: Chris Mason <chris.mason@oracle.com>
Cc: Jan Kara <jack@suse.cz>
Cc: "Theodore Ts'o" <tytso@mit.edu>
Cc: KONISHI Ryusuke <konishi.ryusuke@lab.ntt.co.jp>
Cc: reiserfs-devel@vger.kernel.org
Cc: xfs-masters@oss.sgi.com
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'fs/super.c')
-rw-r--r-- | fs/super.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/fs/super.c b/fs/super.c index 22374bf0ba87..5d9a4497849a 100644 --- a/fs/super.c +++ b/fs/super.c | |||
@@ -766,13 +766,13 @@ struct dentry *mount_bdev(struct file_system_type *fs_type, | |||
766 | { | 766 | { |
767 | struct block_device *bdev; | 767 | struct block_device *bdev; |
768 | struct super_block *s; | 768 | struct super_block *s; |
769 | fmode_t mode = FMODE_READ; | 769 | fmode_t mode = FMODE_READ | FMODE_EXCL; |
770 | int error = 0; | 770 | int error = 0; |
771 | 771 | ||
772 | if (!(flags & MS_RDONLY)) | 772 | if (!(flags & MS_RDONLY)) |
773 | mode |= FMODE_WRITE; | 773 | mode |= FMODE_WRITE; |
774 | 774 | ||
775 | bdev = open_bdev_exclusive(dev_name, mode, fs_type); | 775 | bdev = blkdev_get_by_path(dev_name, mode, fs_type); |
776 | if (IS_ERR(bdev)) | 776 | if (IS_ERR(bdev)) |
777 | return ERR_CAST(bdev); | 777 | return ERR_CAST(bdev); |
778 | 778 | ||
@@ -807,7 +807,7 @@ struct dentry *mount_bdev(struct file_system_type *fs_type, | |||
807 | * holding an active reference. | 807 | * holding an active reference. |
808 | */ | 808 | */ |
809 | up_write(&s->s_umount); | 809 | up_write(&s->s_umount); |
810 | blkdev_put(bdev, mode | FMODE_EXCL); | 810 | blkdev_put(bdev, mode); |
811 | down_write(&s->s_umount); | 811 | down_write(&s->s_umount); |
812 | } else { | 812 | } else { |
813 | char b[BDEVNAME_SIZE]; | 813 | char b[BDEVNAME_SIZE]; |
@@ -831,7 +831,7 @@ struct dentry *mount_bdev(struct file_system_type *fs_type, | |||
831 | error_s: | 831 | error_s: |
832 | error = PTR_ERR(s); | 832 | error = PTR_ERR(s); |
833 | error_bdev: | 833 | error_bdev: |
834 | blkdev_put(bdev, mode | FMODE_EXCL); | 834 | blkdev_put(bdev, mode); |
835 | error: | 835 | error: |
836 | return ERR_PTR(error); | 836 | return ERR_PTR(error); |
837 | } | 837 | } |
@@ -862,6 +862,7 @@ void kill_block_super(struct super_block *sb) | |||
862 | bdev->bd_super = NULL; | 862 | bdev->bd_super = NULL; |
863 | generic_shutdown_super(sb); | 863 | generic_shutdown_super(sb); |
864 | sync_blockdev(bdev); | 864 | sync_blockdev(bdev); |
865 | WARN_ON_ONCE(!(mode & FMODE_EXCL)); | ||
865 | blkdev_put(bdev, mode | FMODE_EXCL); | 866 | blkdev_put(bdev, mode | FMODE_EXCL); |
866 | } | 867 | } |
867 | 868 | ||