From da531dd8d5d3aa284b7f73ce6345e54ce3b3bc1d Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Mon, 8 Jul 2013 14:21:03 +0200 Subject: [PATCH] lsblk: use devno to get mountpoint The device (for example LVM logical volume) could be renamed and then the device name from /proc/self/mountinfo does not match with reality. So, we also need to check devno. Unfortunately we cannot completely rely on devno, because for example btrfs uses psudo device numbers. References: https://bugzilla.redhat.com/show_bug.cgi?id=980463 Signed-off-by: Karel Zak --- misc-utils/lsblk.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/misc-utils/lsblk.c b/misc-utils/lsblk.c index 494bc73a84..4f4350587a 100644 --- a/misc-utils/lsblk.c +++ b/misc-utils/lsblk.c @@ -372,8 +372,12 @@ static char *get_device_mountpoint(struct blkdev_cxt *cxt) mnt_table_parse_mtab(mtab, NULL); } - /* try /etc/mtab or /proc/self/mountinfo */ - fs = mnt_table_find_srcpath(mtab, cxt->filename, MNT_ITER_BACKWARD); + /* Note that maj:min in /proc/self/mouninfo does not have to match with + * devno as returned by stat(), so we have to try devname too + */ + fs = mnt_table_find_devno(mtab, makedev(cxt->maj, cxt->min), MNT_ITER_BACKWARD); + if (!fs) + fs = mnt_table_find_srcpath(mtab, cxt->filename, MNT_ITER_BACKWARD); if (!fs) return is_active_swap(cxt->filename) ? xstrdup("[SWAP]") : NULL; -- 2.47.3