* [PATCH] btrfs: Move missing device handling in a dedicate function
@ 2022-01-11 16:00 Nikolay Borisov
2022-01-12 3:28 ` Su Yue
2022-01-12 15:40 ` David Sterba
0 siblings, 2 replies; 3+ messages in thread
From: Nikolay Borisov @ 2022-01-11 16:00 UTC (permalink / raw)
To: linux-btrfs; +Cc: Nikolay Borisov
This simplifies the code flow in read_one_chunk and makes error handling
when handling missing devices a bit simipler by reducing it to a single
check if something went wrong. No functional changes.
Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---
fs/btrfs/volumes.c | 39 +++++++++++++++++++++++++--------------
1 file changed, 25 insertions(+), 14 deletions(-)
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
index b07d382d53a8..7518ac5c28dc 100644
--- a/fs/btrfs/volumes.c
+++ b/fs/btrfs/volumes.c
@@ -7060,6 +7060,27 @@ static void warn_32bit_meta_chunk(struct btrfs_fs_info *fs_info,
}
#endif
+static struct btrfs_device *handle_missing_device(struct btrfs_fs_info *fs_info,
+ u64 devid, u8 *uuid)
+{
+ struct btrfs_device *dev;
+
+ if (!btrfs_test_opt(fs_info, DEGRADED)) {
+ btrfs_report_missing_device(fs_info, devid, uuid, true);
+ return ERR_PTR(-ENOENT);
+ }
+
+ dev = add_missing_dev(fs_info->fs_devices, devid, uuid);
+ if (IS_ERR(dev)) {
+ btrfs_err(fs_info, "failed to init missing dev %llu: %ld",
+ devid, PTR_ERR(dev));
+ return dev;
+ }
+ btrfs_report_missing_device(fs_info, devid, uuid, false);
+
+ return dev;
+}
+
static int read_one_chunk(struct btrfs_key *key, struct extent_buffer *leaf,
struct btrfs_chunk *chunk)
{
@@ -7147,28 +7168,18 @@ static int read_one_chunk(struct btrfs_key *key, struct extent_buffer *leaf,
BTRFS_UUID_SIZE);
args.uuid = uuid;
map->stripes[i].dev = btrfs_find_device(fs_info->fs_devices, &args);
- if (!map->stripes[i].dev &&
- !btrfs_test_opt(fs_info, DEGRADED)) {
- free_extent_map(em);
- btrfs_report_missing_device(fs_info, devid, uuid, true);
- return -ENOENT;
- }
if (!map->stripes[i].dev) {
- map->stripes[i].dev =
- add_missing_dev(fs_info->fs_devices, devid,
- uuid);
+ map->stripes[i].dev = handle_missing_device(fs_info,
+ devid, uuid);
if (IS_ERR(map->stripes[i].dev)) {
free_extent_map(em);
- btrfs_err(fs_info,
- "failed to init missing dev %llu: %ld",
- devid, PTR_ERR(map->stripes[i].dev));
return PTR_ERR(map->stripes[i].dev);
+
}
- btrfs_report_missing_device(fs_info, devid, uuid, false);
}
+
set_bit(BTRFS_DEV_STATE_IN_FS_METADATA,
&(map->stripes[i].dev->dev_state));
-
}
write_lock(&map_tree->lock);
--
2.25.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs: Move missing device handling in a dedicate function
2022-01-11 16:00 [PATCH] btrfs: Move missing device handling in a dedicate function Nikolay Borisov
@ 2022-01-12 3:28 ` Su Yue
2022-01-12 15:40 ` David Sterba
1 sibling, 0 replies; 3+ messages in thread
From: Su Yue @ 2022-01-12 3:28 UTC (permalink / raw)
To: Nikolay Borisov; +Cc: linux-btrfs
On Tue 11 Jan 2022 at 18:00, Nikolay Borisov <nborisov@suse.com>
wrote:
> This simplifies the code flow in read_one_chunk and makes error
> handling
> when handling missing devices a bit simipler by reducing it to a
> single
> check if something went wrong. No functional changes.
>
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---
> fs/btrfs/volumes.c | 39 +++++++++++++++++++++++++--------------
> 1 file changed, 25 insertions(+), 14 deletions(-)
>
> diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c
> index b07d382d53a8..7518ac5c28dc 100644
> --- a/fs/btrfs/volumes.c
> +++ b/fs/btrfs/volumes.c
> @@ -7060,6 +7060,27 @@ static void warn_32bit_meta_chunk(struct
> btrfs_fs_info *fs_info,
> }
> #endif
>
> +static struct btrfs_device *handle_missing_device(struct
> btrfs_fs_info *fs_info,
> + u64 devid, u8
> *uuid)
> +{
> + struct btrfs_device *dev;
> +
> + if (!btrfs_test_opt(fs_info, DEGRADED)) {
> + btrfs_report_missing_device(fs_info, devid, uuid,
> true);
> + return ERR_PTR(-ENOENT);
> + }
> +
> + dev = add_missing_dev(fs_info->fs_devices, devid, uuid);
> + if (IS_ERR(dev)) {
> + btrfs_err(fs_info, "failed to init missing dev
> %llu: %ld",
> + devid, PTR_ERR(dev));
> + return dev;
> + }
> + btrfs_report_missing_device(fs_info, devid, uuid, false);
> +
> + return dev;
> +}
> +
> static int read_one_chunk(struct btrfs_key *key, struct
> extent_buffer *leaf,
> struct btrfs_chunk *chunk)
> {
> @@ -7147,28 +7168,18 @@ static int read_one_chunk(struct
> btrfs_key *key, struct extent_buffer *leaf,
> BTRFS_UUID_SIZE);
> args.uuid = uuid;
> map->stripes[i].dev =
> btrfs_find_device(fs_info->fs_devices, &args);
> - if (!map->stripes[i].dev &&
> - !btrfs_test_opt(fs_info, DEGRADED)) {
> - free_extent_map(em);
> - btrfs_report_missing_device(fs_info,
> devid, uuid, true);
> - return -ENOENT;
> - }
> if (!map->stripes[i].dev) {
> - map->stripes[i].dev =
> -
> add_missing_dev(fs_info->fs_devices, devid,
> - uuid);
> + map->stripes[i].dev =
> handle_missing_device(fs_info,
> +
> devid, uuid);
> if (IS_ERR(map->stripes[i].dev)) {
> free_extent_map(em);
> - btrfs_err(fs_info,
> - "failed to init missing
> dev %llu: %ld",
> - devid,
> PTR_ERR(map->stripes[i].dev));
> return
> PTR_ERR(map->stripes[i].dev);
> +
>
No need for the blank line, I think.
Reviewed-by: Su Yue <l@damenly.su>
--
Su
> }
> - btrfs_report_missing_device(fs_info,
> devid, uuid, false);
> }
> +
> set_bit(BTRFS_DEV_STATE_IN_FS_METADATA,
> &(map->stripes[i].dev->dev_state));
> -
> }
>
> write_lock(&map_tree->lock);
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] btrfs: Move missing device handling in a dedicate function
2022-01-11 16:00 [PATCH] btrfs: Move missing device handling in a dedicate function Nikolay Borisov
2022-01-12 3:28 ` Su Yue
@ 2022-01-12 15:40 ` David Sterba
1 sibling, 0 replies; 3+ messages in thread
From: David Sterba @ 2022-01-12 15:40 UTC (permalink / raw)
To: Nikolay Borisov; +Cc: linux-btrfs
On Tue, Jan 11, 2022 at 06:00:26PM +0200, Nikolay Borisov wrote:
> This simplifies the code flow in read_one_chunk and makes error handling
> when handling missing devices a bit simipler by reducing it to a single
> check if something went wrong. No functional changes.
>
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
Added to misc-next, thanks.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-01-12 15:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11 16:00 [PATCH] btrfs: Move missing device handling in a dedicate function Nikolay Borisov
2022-01-12 3:28 ` Su Yue
2022-01-12 15:40 ` David Sterba
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).