diff options
author | Karel Zak | 2014-06-17 12:15:59 +0200 |
---|---|---|
committer | Karel Zak | 2014-06-17 12:15:59 +0200 |
commit | a22c6eb206fb716fa42bb245d0726efcb01355a1 (patch) | |
tree | c01caeb007219e80f93e075f5dbf7cb475faafdd /disk-utils/fdisk.c | |
parent | lib/sysfs: add sysfs_devno_is_wholedisk() (diff) | |
download | kernel-qcow2-util-linux-a22c6eb206fb716fa42bb245d0726efcb01355a1.tar.gz kernel-qcow2-util-linux-a22c6eb206fb716fa42bb245d0726efcb01355a1.tar.xz kernel-qcow2-util-linux-a22c6eb206fb716fa42bb245d0726efcb01355a1.zip |
fdisk: use sysfs_devno_is_wholedisk()
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'disk-utils/fdisk.c')
-rw-r--r-- | disk-utils/fdisk.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/disk-utils/fdisk.c b/disk-utils/fdisk.c index 7df6b899d..5da705293 100644 --- a/disk-utils/fdisk.c +++ b/disk-utils/fdisk.c @@ -30,11 +30,11 @@ #include "blkdev.h" #include "mbsalign.h" #include "fdisk.h" -#include "wholedisk.h" #include "pathnames.h" #include "canonicalize.h" #include "strutils.h" #include "closestream.h" +#include "sysfs.h" #include "pt-sun.h" /* to toggle flags */ @@ -722,23 +722,29 @@ static void print_all_devices_pt(struct fdisk_context *cxt) DBG(FRONTEND, ul_debug("reading "_PATH_PROC_PARTITIONS)); while (fgets(line, sizeof(line), f)) { - char ptname[128 + 1], devname[256]; + char buf[PATH_MAX], *cn; + dev_t devno; - if (sscanf(line, " %*d %*d %*d %128[^\n ]", ptname) != 1) + if (sscanf(line, " %*d %*d %*d %128[^\n ]", buf) != 1) continue; - snprintf(devname, sizeof(devname), "/dev/%s", ptname); + devno = sysfs_devname_to_devno(buf, NULL); + if (devno <= 0) + continue; - DBG(FRONTEND, ul_debug("listing %s", devname)); + if (sysfs_devno_is_lvm_private(devno) || + sysfs_devno_is_wholedisk(devno) <= 0) + continue; - if (is_whole_disk(devname)) { - char *cn = canonicalize_path(devname); - if (cn) { - if (!is_ide_cdrom_or_tape(cn)) - print_device_pt(cxt, cn); - free(cn); - } - } + if (!sysfs_devno_to_devpath(devno, buf, sizeof(buf))) + continue; + + cn = canonicalize_path(buf); + if (!cn) + continue; + if (!is_ide_cdrom_or_tape(cn)) + print_device_pt(cxt, cn); + free(cn); } fclose(f); } |