diff --git a/include/sysfs.h b/include/sysfs.h index ea87d6a12..a7e66f74b 100644 --- a/include/sysfs.h +++ b/include/sysfs.h @@ -68,7 +68,9 @@ void ul_sysfs_init_debug(void); struct path_cxt *ul_new_sysfs_path(dev_t devno, struct path_cxt *parent, const char *prefix); int sysfs_blkdev_init_path(struct path_cxt *pc, dev_t devno, struct path_cxt *parent); + int sysfs_blkdev_set_parent(struct path_cxt *pc, struct path_cxt *parent); +struct path_cxt *sysfs_blkdev_get_parent(struct path_cxt *pc); char *sysfs_blkdev_get_name(struct path_cxt *pc, char *buf, size_t bufsiz); int sysfs_blkdev_is_partition_dirent(DIR *dir, struct dirent *d, const char *parent_name); diff --git a/lib/sysfs.c b/lib/sysfs.c index 5b4031e00..953627715 100644 --- a/lib/sysfs.c +++ b/lib/sysfs.c @@ -148,6 +148,12 @@ int sysfs_blkdev_set_parent(struct path_cxt *pc, struct path_cxt *parent) return 0; } +struct path_cxt *sysfs_blkdev_get_parent(struct path_cxt *pc) +{ + struct sysfs_blkdev *blk = ul_path_get_dialect(pc); + return blk ? blk->parent : NULL; +} + /* * Redirects ENOENT errors to the parent, if the path is to the queue/ * sysfs directory. For example