diff mbox series

[v2,1/2] btrfs-progs: fi show: Print missing device for a mounted file system

Message ID 20210910083344.1876661-1-nborisov@suse.com (mailing list archive)
State New, archived
Headers show
Series [v2,1/2] btrfs-progs: fi show: Print missing device for a mounted file system | expand

Commit Message

Nikolay Borisov Sept. 10, 2021, 8:33 a.m. UTC
Currently when a device is missing for a mounted filesystem the output
that is produced is unhelpful:

Label: none  uuid: 139ef309-021f-4b98-a3a8-ce230a83b1e2
	Total devices 2 FS bytes used 128.00KiB
	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
	*** Some devices missing

While the context which prints this is perfectly capable of showing
which device exactly is missing, like so:

Label: none  uuid: 4a85a40b-9b79-4bde-8e52-c65a550a176b
	Total devices 2 FS bytes used 128.00KiB
	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
	devid    2 size 0 used 0 path /dev/loop1 MISSING

This is a lot more usable output as it presents the user with the id
of the missing device and its path.

Signed-off-by: Nikolay Borisov <nborisov@suse.com>
---

V2:
 * Removed stars around MISSING
 cmds/filesystem.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

--
2.17.1

Comments

Johannes Thumshirn Sept. 10, 2021, 9:15 a.m. UTC | #1
On 10/09/2021 10:33, Nikolay Borisov wrote:
> Currently when a device is missing for a mounted filesystem the output
> that is produced is unhelpful:
> 
> Label: none  uuid: 139ef309-021f-4b98-a3a8-ce230a83b1e2
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	*** Some devices missing
> 
> While the context which prints this is perfectly capable of showing
> which device exactly is missing, like so:
> 
> Label: none  uuid: 4a85a40b-9b79-4bde-8e52-c65a550a176b
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	devid    2 size 0 used 0 path /dev/loop1 MISSING
> 
> This is a lot more usable output as it presents the user with the id
> of the missing device and its path.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---

Looks good,
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>

but I think this also needs a patch for xfstests adjusting the filters.
Nikolay Borisov Sept. 10, 2021, 9:18 a.m. UTC | #2
On 10.09.21 г. 12:15, Johannes Thumshirn wrote:
> 2021 10:33, Nikolay Borisov wrote:
>> Currently when a device is missing for a mounted filesystem the output
>> that is produced is unhelpful:
>>
>> Label: none  uuid: 139ef309-021f-4b98-a3a8-ce230a83b1e2
>> 	Total devices 2 FS bytes used 128.00KiB
>> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
>> 	*** Some devices missing
>>
>> While the context which prints this is perfectly capable of showing
>> which device exactly is missing, like so:
>>
>> Label: none  uuid: 4a85a40b-9b79-4bde-8e52-c65a550a176b
>> 	Total devices 2 FS bytes used 128.00KiB
>> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
>> 	devid    2 size 0 used 0 path /dev/loop1 MISSING
>>
>> This is a lot more usable output as it presents the user with the id
>> of the missing device and its path.
>>
>> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
>> ---
> Looks good,
> Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
> 
> but I think this also needs a patch for xfstests adjusting the filters.
> 

It does, I had sent one, but I need to send v2 to adjust for the removed
***, ah this bike shedding ...
Nikolay Borisov Nov. 18, 2021, 3:22 p.m. UTC | #3
On 10.09.21 г. 11:33, Nikolay Borisov wrote:
> Currently when a device is missing for a mounted filesystem the output
> that is produced is unhelpful:
> 
> Label: none  uuid: 139ef309-021f-4b98-a3a8-ce230a83b1e2
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	*** Some devices missing
> 
> While the context which prints this is perfectly capable of showing
> which device exactly is missing, like so:
> 
> Label: none  uuid: 4a85a40b-9b79-4bde-8e52-c65a550a176b
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	devid    2 size 0 used 0 path /dev/loop1 MISSING
> 
> This is a lot more usable output as it presents the user with the id
> of the missing device and its path.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---
> 
> V2:
>  * Removed stars around MISSING


Ping
Wang Yugui Dec. 22, 2022, 11:55 a.m. UTC | #4
Hi,

> Currently when a device is missing for a mounted filesystem the output
> that is produced is unhelpful:
> 
> Label: none  uuid: 139ef309-021f-4b98-a3a8-ce230a83b1e2
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	*** Some devices missing
> 
> While the context which prints this is perfectly capable of showing
> which device exactly is missing, like so:
> 
> Label: none  uuid: 4a85a40b-9b79-4bde-8e52-c65a550a176b
> 	Total devices 2 FS bytes used 128.00KiB
> 	devid    1 size 5.00GiB used 1.26GiB path /dev/loop0
> 	devid    2 size 0 used 0 path /dev/loop1 MISSING
> 
> This is a lot more usable output as it presents the user with the id
> of the missing device and its path.
> 
> Signed-off-by: Nikolay Borisov <nborisov@suse.com>
> ---
> 
> V2:
>  * Removed stars around MISSING
>  cmds/filesystem.c | 7 +++----
>  1 file changed, 3 insertions(+), 4 deletions(-)
> 
> diff --git a/cmds/filesystem.c b/cmds/filesystem.c
> index db8433ba3542..dadd4c82a9b0 100644
> --- a/cmds/filesystem.c
> +++ b/cmds/filesystem.c
> @@ -295,7 +295,6 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
>  {
>  	int i;
>  	int fd;
> -	int missing = 0;
>  	char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
>  	struct btrfs_ioctl_dev_info_args *tmp_dev_info;
>  	int ret;
> @@ -325,8 +324,10 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
>  		/* Add check for missing devices even mounted */
>  		fd = open((char *)tmp_dev_info->path, O_RDONLY);
>  		if (fd < 0) {
> -			missing = 1;
> +			printf("\tdevid %4llu size 0 used 0 path %s MISSING\n",
> +					tmp_dev_info->devid, tmp_dev_info->path);
>  			continue;
> +
>  		}
>  		close(fd);
>  		canonical_path = path_canonicalize((char *)tmp_dev_info->path);
> @@ -339,8 +340,6 @@ static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
>  		free(canonical_path);
>  	}
> 
> -	if (missing)
> -		printf("\t*** Some devices missing\n");
>  	printf("\n");
>  	return 0;
>  }

Need we also fix print_one_uuid()/print_devices()?

There is
        pr_verbose(LOG_DEFAULT, "\t*** Some devices missing\n");
in print_one_uuid();

sorry that there is yet not a fix here.

Best Regards
Wang Yugui (wangyugui@e16-tech.com)
2022/12/22
diff mbox series

Patch

diff --git a/cmds/filesystem.c b/cmds/filesystem.c
index db8433ba3542..dadd4c82a9b0 100644
--- a/cmds/filesystem.c
+++ b/cmds/filesystem.c
@@ -295,7 +295,6 @@  static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
 {
 	int i;
 	int fd;
-	int missing = 0;
 	char uuidbuf[BTRFS_UUID_UNPARSED_SIZE];
 	struct btrfs_ioctl_dev_info_args *tmp_dev_info;
 	int ret;
@@ -325,8 +324,10 @@  static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
 		/* Add check for missing devices even mounted */
 		fd = open((char *)tmp_dev_info->path, O_RDONLY);
 		if (fd < 0) {
-			missing = 1;
+			printf("\tdevid %4llu size 0 used 0 path %s MISSING\n",
+					tmp_dev_info->devid, tmp_dev_info->path);
 			continue;
+
 		}
 		close(fd);
 		canonical_path = path_canonicalize((char *)tmp_dev_info->path);
@@ -339,8 +340,6 @@  static int print_one_fs(struct btrfs_ioctl_fs_info_args *fs_info,
 		free(canonical_path);
 	}

-	if (missing)
-		printf("\t*** Some devices missing\n");
 	printf("\n");
 	return 0;
 }