Btrfs: corret fmode_t annotations
authorChristoph Hellwig <hch@lst.de>
Tue, 2 Dec 2008 11:36:09 +0000 (06:36 -0500)
committerChris Mason <chris.mason@oracle.com>
Tue, 2 Dec 2008 11:36:09 +0000 (06:36 -0500)
Make sure to propagate fmode_t properly and use the right constants for
it.

Signed-off-by: Christoph Hellwig <hch@lst.de>
fs/btrfs/super.c
fs/btrfs/volumes.c
fs/btrfs/volumes.h

index 93a21c77064abb2642319d6cbda09cba9cc7bfc0..09908f25fca9c759407377f51206a5cbe15b6a78 100644 (file)
@@ -242,7 +242,7 @@ int btrfs_parse_options(struct btrfs_root *root, char *options)
  * All other options will be parsed on much later in the mount process and
  * only when we need to allocate a new super block.
  */
-static int btrfs_parse_early_options(const char *options, int flags,
+static int btrfs_parse_early_options(const char *options, fmode_t flags,
                void *holder, char **subvol_name,
                struct btrfs_fs_devices **fs_devices)
 {
@@ -418,18 +418,22 @@ static int btrfs_get_sb(struct file_system_type *fs_type, int flags,
        struct super_block *s;
        struct dentry *root;
        struct btrfs_fs_devices *fs_devices = NULL;
+       fmode_t mode = FMODE_READ;
        int error = 0;
 
-       error = btrfs_parse_early_options(data, flags, fs_type,
+       if (!(flags & MS_RDONLY))
+               mode |= FMODE_WRITE;
+
+       error = btrfs_parse_early_options(data, mode, fs_type,
                                          &subvol_name, &fs_devices);
        if (error)
                goto error;
 
-       error = btrfs_scan_one_device(dev_name, flags, fs_type, &fs_devices);
+       error = btrfs_scan_one_device(dev_name, mode, fs_type, &fs_devices);
        if (error)
                goto error_free_subvol_name;
 
-       error = btrfs_open_devices(fs_devices, flags, fs_type);
+       error = btrfs_open_devices(fs_devices, mode, fs_type);
        if (error)
                goto error_free_subvol_name;
 
@@ -591,7 +595,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
        len = strnlen(vol->name, BTRFS_PATH_NAME_MAX);
        switch (cmd) {
        case BTRFS_IOC_SCAN_DEV:
-               ret = btrfs_scan_one_device(vol->name, MS_RDONLY,
+               ret = btrfs_scan_one_device(vol->name, FMODE_READ,
                                            &btrfs_fs_type, &fs_devices);
                break;
        }
index 769f2c5d9e9e53040418c31a2d6fa279c74f271b..6c523b3360f671432beebb88b02b79a8f76d0c2a 100644 (file)
@@ -394,7 +394,7 @@ int btrfs_close_devices(struct btrfs_fs_devices *fs_devices)
 }
 
 int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
-                        int flags, void *holder)
+                        fmode_t flags, void *holder)
 {
        struct block_device *bdev;
        struct list_head *head = &fs_devices->devices;
@@ -469,7 +469,7 @@ int __btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
 error_brelse:
                brelse(bh);
 error_close:
-               close_bdev_exclusive(bdev, MS_RDONLY);
+               close_bdev_exclusive(bdev, FMODE_READ);
 error:
                continue;
        }
@@ -488,7 +488,7 @@ out:
 }
 
 int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
-                      int flags, void *holder)
+                      fmode_t flags, void *holder)
 {
        int ret;
 
@@ -507,7 +507,7 @@ int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
        return ret;
 }
 
-int btrfs_scan_one_device(const char *path, int flags, void *holder,
+int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder,
                          struct btrfs_fs_devices **fs_devices_ret)
 {
        struct btrfs_super_block *disk_super;
@@ -1008,7 +1008,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
                        goto out;
                }
        } else {
-               bdev = open_bdev_exclusive(device_path, MS_RDONLY,
+               bdev = open_bdev_exclusive(device_path, FMODE_READ,
                                      root->fs_info->bdev_holder);
                if (IS_ERR(bdev)) {
                        ret = PTR_ERR(bdev);
@@ -1078,7 +1078,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
                BUG_ON(device->writeable);
                brelse(bh);
                if (bdev)
-                       close_bdev_exclusive(bdev, MS_RDONLY);
+                       close_bdev_exclusive(bdev, FMODE_READ);
 
                if (device->bdev) {
                        close_bdev_exclusive(device->bdev, device->mode);
@@ -1121,7 +1121,7 @@ int btrfs_rm_device(struct btrfs_root *root, char *device_path)
        }
        if (bdev) {
                /* one close for us */
-               close_bdev_exclusive(bdev, MS_RDONLY);
+               close_bdev_exclusive(bdev, FMODE_READ);
        }
        kfree(device->name);
        kfree(device);
@@ -1132,7 +1132,7 @@ error_brelse:
        brelse(bh);
 error_close:
        if (bdev)
-               close_bdev_exclusive(bdev, MS_RDONLY);
+               close_bdev_exclusive(bdev, FMODE_READ);
 out:
        mutex_unlock(&root->fs_info->volume_mutex);
        mutex_unlock(&uuid_mutex);
@@ -2913,7 +2913,7 @@ static int open_seed_devices(struct btrfs_root *root, u8 *fsid)
                goto out;
        }
 
-       ret = __btrfs_open_devices(fs_devices, MS_RDONLY,
+       ret = __btrfs_open_devices(fs_devices, FMODE_READ,
                                   root->fs_info->bdev_holder);
        if (ret)
                goto out;
index 9b41e4d3984d2206670b351deb6a1ad10060ac0e..fcbdcb3ae13eb2b252fe772b5e345472756a2e45 100644 (file)
@@ -135,8 +135,8 @@ int btrfs_map_bio(struct btrfs_root *root, int rw, struct bio *bio,
                  int mirror_num, int async_submit);
 int btrfs_read_super_device(struct btrfs_root *root, struct extent_buffer *buf);
 int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
-                      int flags, void *holder);
-int btrfs_scan_one_device(const char *path, int flags, void *holder,
+                      fmode_t flags, void *holder);
+int btrfs_scan_one_device(const char *path, fmode_t flags, void *holder,
                          struct btrfs_fs_devices **fs_devices_ret);
 int btrfs_close_devices(struct btrfs_fs_devices *fs_devices);
 int btrfs_close_extra_devices(struct btrfs_fs_devices *fs_devices);