btrfs-progs: fi show: canonicalize path when using blkid and -d
(cherry picked from commit 5a169c3b0dd315fa5af48576de49231626acdb51)
This commit is contained in:
parent
adf7b1b428
commit
0e4dafe9d7
@ -0,0 +1,75 @@
|
|||||||
|
From cb740b3dfb97f09e458c4e0bcfd87a6f5d1e7a33 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Sterba <dsterba@suse.com>
|
||||||
|
Date: Wed, 31 Jan 2024 10:58:17 +0100
|
||||||
|
Subject: [PATCH] btrfs-progs: fi show: canonicalize path when using blkid and
|
||||||
|
-d
|
||||||
|
|
||||||
|
There's a report that passing raw device mapper path and -d don't work
|
||||||
|
together:
|
||||||
|
|
||||||
|
yyy@xxx ~ $ sudo btrfs filesystem show /dev/dm-0
|
||||||
|
Label: none uuid: a7fbb8d6-ec5d-4e88-bd8b-c686553e0dc7
|
||||||
|
Total devices 1 FS bytes used 144.00KiB
|
||||||
|
devid 1 size 256.00MiB used 88.00MiB path /dev/mapper/da0972636816-LogVol00
|
||||||
|
|
||||||
|
With --all-devices
|
||||||
|
|
||||||
|
yyy@xxx ~ $ sudo btrfs filesystem show --all-devices /dev/dm-0
|
||||||
|
ERROR: not a valid btrfs filesystem: /dev/dm-0
|
||||||
|
|
||||||
|
Where dm-0 corresponds to the LogVol00 device from above.
|
||||||
|
|
||||||
|
Passing the option -d skips some steps but still uses the real path of
|
||||||
|
the device that is required for scanning and identification, while
|
||||||
|
blkid uses the canonicalized path.
|
||||||
|
|
||||||
|
The combination of raw device name and -d was not handled as the raw
|
||||||
|
path is not in cache and thus not recognized. Canonicalization fixes
|
||||||
|
that although this changes the device name in the output.
|
||||||
|
|
||||||
|
Issue: #732
|
||||||
|
Signed-off-by: David Sterba <dsterba@suse.com>
|
||||||
|
---
|
||||||
|
cmds/filesystem.c | 11 ++++++++++-
|
||||||
|
1 file changed, 10 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/cmds/filesystem.c b/cmds/filesystem.c
|
||||||
|
index 1b444b8..4967bba 100644
|
||||||
|
--- a/cmds/filesystem.c
|
||||||
|
+++ b/cmds/filesystem.c
|
||||||
|
@@ -708,6 +708,7 @@ static int cmd_filesystem_show(const struct cmd_struct *cmd,
|
||||||
|
struct btrfs_fs_devices *fs_devices;
|
||||||
|
struct btrfs_root *root = NULL;
|
||||||
|
char *search = NULL;
|
||||||
|
+ char *canon_path = NULL;
|
||||||
|
int ret;
|
||||||
|
/* default, search both kernel and udev */
|
||||||
|
int where = -1;
|
||||||
|
@@ -789,8 +790,15 @@ static int cmd_filesystem_show(const struct cmd_struct *cmd,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (where == BTRFS_SCAN_LBLKID)
|
||||||
|
+ if (where == BTRFS_SCAN_LBLKID) {
|
||||||
|
+ /*
|
||||||
|
+ * Blkid needs canonicalized paths, eg. when the /dev/dm-0 is
|
||||||
|
+ * passed on command line.
|
||||||
|
+ */
|
||||||
|
+ canon_path = path_canonicalize(search);
|
||||||
|
+ search = canon_path;
|
||||||
|
goto devs_only;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
/* show mounted btrfs */
|
||||||
|
ret = btrfs_scan_kernel(search, unit_mode);
|
||||||
|
@@ -849,6 +857,7 @@ devs_only:
|
||||||
|
free_fs_devices(fs_devices);
|
||||||
|
}
|
||||||
|
out:
|
||||||
|
+ free(canon_path);
|
||||||
|
if (root)
|
||||||
|
close_ctree(root);
|
||||||
|
free_seen_fsid(seen_fsid_hash);
|
||||||
|
--
|
||||||
|
2.43.0
|
||||||
|
|
||||||
@ -1,6 +1,6 @@
|
|||||||
Name: btrfs-progs
|
Name: btrfs-progs
|
||||||
Version: 6.6.3
|
Version: 6.6.3
|
||||||
Release: 7
|
Release: 8
|
||||||
Summary: btrfs userspace programs
|
Summary: btrfs userspace programs
|
||||||
License: GPLv2 and GPL+ and LGPL-2.1+ and GPL-3.0+ and LGPL-2.1 and MIT
|
License: GPLv2 and GPL+ and LGPL-2.1+ and GPL-3.0+ and LGPL-2.1 and MIT
|
||||||
URL: https://btrfs.wiki.kernel.org/index.php/Main_Page
|
URL: https://btrfs.wiki.kernel.org/index.php/Main_Page
|
||||||
@ -12,6 +12,7 @@ Patch0003: 0003-fix-memory-leak-on-exit-path-in-table-vprintf.patch
|
|||||||
Patch0004: 0004-btrfs-progs-scrub-status-only-report-limits-if-at-le.patch
|
Patch0004: 0004-btrfs-progs-scrub-status-only-report-limits-if-at-le.patch
|
||||||
Patch0005: 0005-btrfs-progs-fix-freeing-of-device-after-error-in-btr.patch
|
Patch0005: 0005-btrfs-progs-fix-freeing-of-device-after-error-in-btr.patch
|
||||||
Patch0006: 0006-fix-double-free-on-error-in-read_raid56.patch
|
Patch0006: 0006-fix-double-free-on-error-in-read_raid56.patch
|
||||||
|
Patch0007: 0007-btrfs-progs-fi-show-canonicalize-path-when-using-blk.patch
|
||||||
|
|
||||||
BuildRequires: python3-devel >= 3.4
|
BuildRequires: python3-devel >= 3.4
|
||||||
BuildRequires: libacl-devel, e2fsprogs-devel, libblkid-devel, libuuid-devel, zlib-devel, libzstd-devel, lzo-devel, systemd-devel
|
BuildRequires: libacl-devel, e2fsprogs-devel, libblkid-devel, libuuid-devel, zlib-devel, libzstd-devel, lzo-devel, systemd-devel
|
||||||
@ -77,6 +78,9 @@ make mandir=%{_mandir} bindir=%{_sbindir} libdir=%{_libdir} incdir=%{_includedir
|
|||||||
%{_mandir}/man8/*.gz
|
%{_mandir}/man8/*.gz
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Mon Jul 1 2024 liuh <liuhuan01@kylinos.cn> - 6.6.3-8
|
||||||
|
- btrfs-progs: fi show: canonicalize path when using blkid and -d
|
||||||
|
|
||||||
* Mon Jun 24 2024 zhangyaqi <zhangyaqi@kylinos.cn> - 6.6.3-7
|
* Mon Jun 24 2024 zhangyaqi <zhangyaqi@kylinos.cn> - 6.6.3-7
|
||||||
- fix double free on error in read_raid56()
|
- fix double free on error in read_raid56()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user