mirror of
https://github.com/torvalds/linux.git
synced 2026-06-01 19:13:47 +02:00
btrfs: always open the device read-only in btrfs_scan_one_device()
btrfs_scan_one_device() opens the block device only to read the super block. Instead of passing a blk_mode_t argument to sometimes open it for writing, just hard code BLK_OPEN_READ as it will never write to the device or hand the block_device out to someone else. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Qu Wenruo <wqu@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
ea124ec327
commit
ae818824a2
|
|
@ -364,10 +364,9 @@ static int btrfs_parse_param(struct fs_context *fc, struct fs_parameter *param)
|
|||
break;
|
||||
case Opt_device: {
|
||||
struct btrfs_device *device;
|
||||
blk_mode_t mode = btrfs_open_mode(fc);
|
||||
|
||||
mutex_lock(&uuid_mutex);
|
||||
device = btrfs_scan_one_device(param->string, mode, false);
|
||||
device = btrfs_scan_one_device(param->string, false);
|
||||
mutex_unlock(&uuid_mutex);
|
||||
if (IS_ERR(device))
|
||||
return PTR_ERR(device);
|
||||
|
|
@ -1855,7 +1854,7 @@ static int btrfs_get_tree_super(struct fs_context *fc)
|
|||
* With 'true' passed to btrfs_scan_one_device() (mount time) we expect
|
||||
* either a valid device or an error.
|
||||
*/
|
||||
device = btrfs_scan_one_device(fc->source, mode, true);
|
||||
device = btrfs_scan_one_device(fc->source, true);
|
||||
ASSERT(device != NULL);
|
||||
if (IS_ERR(device)) {
|
||||
mutex_unlock(&uuid_mutex);
|
||||
|
|
@ -2233,7 +2232,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
|
|||
* Scanning outside of mount can return NULL which would turn
|
||||
* into 0 error code.
|
||||
*/
|
||||
device = btrfs_scan_one_device(vol->name, BLK_OPEN_READ, false);
|
||||
device = btrfs_scan_one_device(vol->name, false);
|
||||
ret = PTR_ERR_OR_ZERO(device);
|
||||
mutex_unlock(&uuid_mutex);
|
||||
break;
|
||||
|
|
@ -2251,7 +2250,7 @@ static long btrfs_control_ioctl(struct file *file, unsigned int cmd,
|
|||
* Scanning outside of mount can return NULL which would turn
|
||||
* into 0 error code.
|
||||
*/
|
||||
device = btrfs_scan_one_device(vol->name, BLK_OPEN_READ, false);
|
||||
device = btrfs_scan_one_device(vol->name, false);
|
||||
if (IS_ERR_OR_NULL(device)) {
|
||||
mutex_unlock(&uuid_mutex);
|
||||
if (IS_ERR(device))
|
||||
|
|
|
|||
|
|
@ -1439,7 +1439,7 @@ static bool btrfs_skip_registration(struct btrfs_super_block *disk_super,
|
|||
* the device or return an error. Multi-device and seeding devices are registered
|
||||
* in both cases.
|
||||
*/
|
||||
struct btrfs_device *btrfs_scan_one_device(const char *path, blk_mode_t flags,
|
||||
struct btrfs_device *btrfs_scan_one_device(const char *path,
|
||||
bool mount_arg_dev)
|
||||
{
|
||||
struct btrfs_super_block *disk_super;
|
||||
|
|
@ -1460,7 +1460,7 @@ struct btrfs_device *btrfs_scan_one_device(const char *path, blk_mode_t flags,
|
|||
* values temporarily, as the device paths of the fsid are the only
|
||||
* required information for assembling the volume.
|
||||
*/
|
||||
bdev_file = bdev_file_open_by_path(path, flags, NULL, NULL);
|
||||
bdev_file = bdev_file_open_by_path(path, BLK_OPEN_READ, NULL, NULL);
|
||||
if (IS_ERR(bdev_file))
|
||||
return ERR_CAST(bdev_file);
|
||||
|
||||
|
|
|
|||
|
|
@ -719,8 +719,7 @@ struct btrfs_block_group *btrfs_create_chunk(struct btrfs_trans_handle *trans,
|
|||
void btrfs_mapping_tree_free(struct btrfs_fs_info *fs_info);
|
||||
int btrfs_open_devices(struct btrfs_fs_devices *fs_devices,
|
||||
blk_mode_t flags, void *holder);
|
||||
struct btrfs_device *btrfs_scan_one_device(const char *path, blk_mode_t flags,
|
||||
bool mount_arg_dev);
|
||||
struct btrfs_device *btrfs_scan_one_device(const char *path, bool mount_arg_dev);
|
||||
int btrfs_forget_devices(dev_t devt);
|
||||
void btrfs_close_devices(struct btrfs_fs_devices *fs_devices);
|
||||
void btrfs_free_extra_devids(struct btrfs_fs_devices *fs_devices);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user