From 93c687d895752582bd95ef52a53684b346f2cc70 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Tue, 16 Oct 2018 15:52:13 +0200 Subject: lib/sysfs: add function to detect partitioned devices Signed-off-by: Karel Zak --- include/sysfs.h | 1 + lib/sysfs.c | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/include/sysfs.h b/include/sysfs.h index 74f69fb9c..edda8ca99 100644 --- a/include/sysfs.h +++ b/include/sysfs.h @@ -97,6 +97,7 @@ dev_t sysfs_devname_to_devno(const char *name); dev_t __sysfs_devname_to_devno(const char *prefix, const char *name, const char *parent); char *sysfs_devno_to_devpath(dev_t devno, char *buf, size_t bufsiz); char *sysfs_devno_to_devname(dev_t devno, char *buf, size_t bufsiz); +int sysfs_devno_count_partitions(dev_t devno); int sysfs_blkdev_scsi_get_hctl(struct path_cxt *pc, int *h, int *c, int *t, int *l); char *sysfs_blkdev_scsi_host_strdup_attribute(struct path_cxt *pc, diff --git a/lib/sysfs.c b/lib/sysfs.c index 626451bdd..6916c2584 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -999,6 +999,20 @@ char *sysfs_devno_to_devname(dev_t devno, char *buf, size_t bufsiz) return res; } +int sysfs_devno_count_partitions(dev_t devno) +{ + struct path_cxt *pc = ul_new_sysfs_path(devno, NULL, NULL); + int n = 0; + + if (pc) { + char buf[PATH_MAX + 1]; + char *name = sysfs_blkdev_get_name(pc, buf, sizeof(buf)); + + n = sysfs_blkdev_count_partitions(pc, name); + ul_unref_path(pc); + } + return n; +} #ifdef TEST_PROGRAM_SYSFS -- cgit v1.2.3-55-g7522