From: Karel Zak Date: Tue, 17 Jun 2014 10:15:01 +0000 (+0200) Subject: lib/sysfs: add sysfs_devno_is_wholedisk() X-Git-Tag: v2.25-rc1~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b55e5886ea8691e32abe2415119e43b94761fd95;p=thirdparty%2Futil-linux.git lib/sysfs: add sysfs_devno_is_wholedisk() Signed-off-by: Karel Zak --- diff --git a/include/sysfs.h b/include/sysfs.h index 2b77bf6dab..85a8910c64 100644 --- a/include/sysfs.h +++ b/include/sysfs.h @@ -74,6 +74,7 @@ extern int sysfs_devno_to_wholedisk(dev_t dev, char *diskname, size_t len, dev_t *diskdevno); extern int sysfs_devno_is_lvm_private(dev_t devno); +extern int sysfs_devno_is_wholedisk(dev_t devno); extern int sysfs_scsi_get_hctl(struct sysfs_cxt *cxt, int *h, int *c, int *t, int *l); diff --git a/lib/sysfs.c b/lib/sysfs.c index fe85f34cfe..0d8afa5606 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -539,6 +539,10 @@ static int get_dm_wholedisk(struct sysfs_cxt *cxt, char *diskname, return rc; } +/* + * Returns by @diskdevno whole disk device devno and (optionaly) by + * @diskname the whole disk device name. + */ int sysfs_devno_to_wholedisk(dev_t dev, char *diskname, size_t len, dev_t *diskdevno) { @@ -658,6 +662,20 @@ int sysfs_devno_is_lvm_private(dev_t devno) return rc; } +/* + * Return 0 or 1, or < 0 in case of error + */ +int sysfs_devno_is_wholedisk(dev_t devno) +{ + dev_t disk; + int rc; + + if (sysfs_devno_to_wholedisk(devno, NULL, 0, &disk) != 0) + return -1; + + return devno == disk; +} + int sysfs_scsi_get_hctl(struct sysfs_cxt *cxt, int *h, int *c, int *t, int *l) { char buf[PATH_MAX], *hctl;