Message ID | e8480a482baedb6dd044fae1aba78be8ac3992f4.1598792561.git.anand.jain@oracle.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | btrfs: seed fix null ptr, use only main device_list_mutex, and cleanups | expand |
On 30.08.20 г. 17:41 ч., Anand Jain wrote: > In the function btrfs_remove_chunk() remove the local variable > %fs_devices, instead use the assigned pointer directly. > > Signed-off-by: Anand Jain <anand.jain@oracle.com> So this is minor enough and correct, however, have measured whether having multiple fs_info::fs_devices:device_list_Mutex derefs results in slightly (perhaps negligible) increase in code size. In any case the code is correct, so: Reviewed-by: Nikolay Borisov <nborisov@suse.com> > --- > fs/btrfs/volumes.c | 9 ++++----- > 1 file changed, 4 insertions(+), 5 deletions(-) > > diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c > index 7639a048c6cf..3e7a7d94a211 100644 > --- a/fs/btrfs/volumes.c > +++ b/fs/btrfs/volumes.c > @@ -2922,7 +2922,6 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) > struct map_lookup *map; > u64 dev_extent_len = 0; > int i, ret = 0; > - struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; > > em = btrfs_get_chunk_map(fs_info, chunk_offset, 1); > if (IS_ERR(em)) { > @@ -2944,14 +2943,14 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) > * a device replace operation that replaces the device object associated > * with map stripes (dev-replace.c:btrfs_dev_replace_finishing()). > */ > - mutex_lock(&fs_devices->device_list_mutex); > + mutex_lock(&fs_info->fs_devices->device_list_mutex); > for (i = 0; i < map->num_stripes; i++) { > struct btrfs_device *device = map->stripes[i].dev; > ret = btrfs_free_dev_extent(trans, device, > map->stripes[i].physical, > &dev_extent_len); > if (ret) { > - mutex_unlock(&fs_devices->device_list_mutex); > + mutex_unlock(&fs_info->fs_devices->device_list_mutex); > btrfs_abort_transaction(trans, ret); > goto out; > } > @@ -2967,12 +2966,12 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) > > ret = btrfs_update_device(trans, device); > if (ret) { > - mutex_unlock(&fs_devices->device_list_mutex); > + mutex_unlock(&fs_info->fs_devices->device_list_mutex); > btrfs_abort_transaction(trans, ret); > goto out; > } > } > - mutex_unlock(&fs_devices->device_list_mutex); > + mutex_unlock(&fs_info->fs_devices->device_list_mutex); > > ret = btrfs_free_chunk(trans, chunk_offset); > if (ret) { >
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 7639a048c6cf..3e7a7d94a211 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c @@ -2922,7 +2922,6 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) struct map_lookup *map; u64 dev_extent_len = 0; int i, ret = 0; - struct btrfs_fs_devices *fs_devices = fs_info->fs_devices; em = btrfs_get_chunk_map(fs_info, chunk_offset, 1); if (IS_ERR(em)) { @@ -2944,14 +2943,14 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) * a device replace operation that replaces the device object associated * with map stripes (dev-replace.c:btrfs_dev_replace_finishing()). */ - mutex_lock(&fs_devices->device_list_mutex); + mutex_lock(&fs_info->fs_devices->device_list_mutex); for (i = 0; i < map->num_stripes; i++) { struct btrfs_device *device = map->stripes[i].dev; ret = btrfs_free_dev_extent(trans, device, map->stripes[i].physical, &dev_extent_len); if (ret) { - mutex_unlock(&fs_devices->device_list_mutex); + mutex_unlock(&fs_info->fs_devices->device_list_mutex); btrfs_abort_transaction(trans, ret); goto out; } @@ -2967,12 +2966,12 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset) ret = btrfs_update_device(trans, device); if (ret) { - mutex_unlock(&fs_devices->device_list_mutex); + mutex_unlock(&fs_info->fs_devices->device_list_mutex); btrfs_abort_transaction(trans, ret); goto out; } } - mutex_unlock(&fs_devices->device_list_mutex); + mutex_unlock(&fs_info->fs_devices->device_list_mutex); ret = btrfs_free_chunk(trans, chunk_offset); if (ret) {
In the function btrfs_remove_chunk() remove the local variable %fs_devices, instead use the assigned pointer directly. Signed-off-by: Anand Jain <anand.jain@oracle.com> --- fs/btrfs/volumes.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)