From: Karel Zak Date: Mon, 8 Jul 2013 12:21:03 +0000 (+0200) Subject: lsblk: use devno to get mountpoint X-Git-Tag: v2.24-rc1~456 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=da531dd8d5d3aa284b7f73ce6345e54ce3b3bc1d;p=thirdparty%2Futil-linux.git 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 --- 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;