summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/loopdev.h5
-rw-r--r--lib/loopdev.c49
2 files changed, 27 insertions, 27 deletions
diff --git a/include/loopdev.h b/include/loopdev.h
index 121fb846b..3f2cec5f5 100644
--- a/include/loopdev.h
+++ b/include/loopdev.h
@@ -103,12 +103,12 @@ struct loopdev_cxt {
unsigned int info_failed:1; /* LOOP_GET_STATUS ioctl failed */
unsigned int control_ok:1; /* /dev/loop-control success */
- struct sysfs_cxt sysfs; /* pointer to /sys/dev/block/<maj:min>/ */
+ struct path_cxt *sysfs; /* pointer to /sys/dev/block/<maj:min>/ */
struct loop_info64 info; /* for GET/SET ioctl */
struct loopdev_iter iter; /* scans /sys or /dev for used/free devices */
};
-#define UL_LOOPDEVCXT_EMPTY { .fd = -1, .sysfs = UL_SYSFSCXT_EMPTY }
+#define UL_LOOPDEVCXT_EMPTY { .fd = -1 }
/*
* loopdev_cxt.flags
@@ -154,7 +154,6 @@ extern int loopcxt_has_device(struct loopdev_cxt *lc);
extern int loopcxt_add_device(struct loopdev_cxt *lc);
extern char *loopcxt_strdup_device(struct loopdev_cxt *lc);
extern const char *loopcxt_get_device(struct loopdev_cxt *lc);
-extern struct sysfs_cxt *loopcxt_get_sysfs(struct loopdev_cxt *lc);
extern struct loop_info64 *loopcxt_get_info(struct loopdev_cxt *lc);
extern int loopcxt_get_fd(struct loopdev_cxt *lc);
diff --git a/lib/loopdev.c b/lib/loopdev.c
index 54d337ea3..0e2e98865 100644
--- a/lib/loopdev.c
+++ b/lib/loopdev.c
@@ -123,7 +123,8 @@ int loopcxt_set_device(struct loopdev_cxt *lc, const char *device)
DBG(CXT, ul_debugobj(lc, "%s name assigned", device));
}
- sysfs_deinit(&lc->sysfs);
+ ul_unref_path(lc->sysfs);
+ lc->sysfs = NULL;
return 0;
}
@@ -244,24 +245,24 @@ const char *loopcxt_get_device(struct loopdev_cxt *lc)
*
* Returns pointer to the sysfs context (see lib/sysfs.c)
*/
-struct sysfs_cxt *loopcxt_get_sysfs(struct loopdev_cxt *lc)
+static struct path_cxt *loopcxt_get_sysfs(struct loopdev_cxt *lc)
{
if (!lc || !*lc->device || (lc->flags & LOOPDEV_FL_NOSYSFS))
return NULL;
- if (!lc->sysfs.devno) {
- dev_t devno = sysfs_devname_to_devno(lc->device, NULL);
+ if (!lc->sysfs) {
+ dev_t devno = sysfs_devname_to_devno(lc->device);
if (!devno) {
DBG(CXT, ul_debugobj(lc, "sysfs: failed devname to devno"));
return NULL;
}
- if (sysfs_init(&lc->sysfs, devno, NULL)) {
+
+ lc->sysfs = ul_new_sysfs_path(devno, NULL, NULL);
+ if (!lc->sysfs)
DBG(CXT, ul_debugobj(lc, "sysfs: init failed"));
- return NULL;
- }
}
- return &lc->sysfs;
+ return lc->sysfs;
}
/*
@@ -686,7 +687,7 @@ struct loop_info64 *loopcxt_get_info(struct loopdev_cxt *lc)
*/
char *loopcxt_get_backing_file(struct loopdev_cxt *lc)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
char *res = NULL;
if (sysfs)
@@ -694,7 +695,7 @@ char *loopcxt_get_backing_file(struct loopdev_cxt *lc)
* This is always preffered, the loop_info64
* has too small buffer for the filename.
*/
- res = sysfs_strdup(sysfs, "loop/backing_file");
+ ul_path_read_string(sysfs, &res, "loop/backing_file");
if (!res && loopcxt_ioctl_enabled(lc)) {
struct loop_info64 *lo = loopcxt_get_info(lc);
@@ -718,11 +719,11 @@ char *loopcxt_get_backing_file(struct loopdev_cxt *lc)
*/
int loopcxt_get_offset(struct loopdev_cxt *lc, uint64_t *offset)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
int rc = -EINVAL;
if (sysfs)
- rc = sysfs_read_u64(sysfs, "loop/offset", offset);
+ rc = ul_path_read_u64(sysfs, offset, "loop/offset");
if (rc && loopcxt_ioctl_enabled(lc)) {
struct loop_info64 *lo = loopcxt_get_info(lc);
@@ -746,11 +747,11 @@ int loopcxt_get_offset(struct loopdev_cxt *lc, uint64_t *offset)
*/
int loopcxt_get_blocksize(struct loopdev_cxt *lc, uint64_t *blocksize)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
int rc = -EINVAL;
if (sysfs)
- rc = sysfs_read_u64(sysfs, "queue/logical_block_size", blocksize);
+ rc = ul_path_read_u64(sysfs, blocksize, "queue/logical_block_size");
/* Fallback based on BLKSSZGET ioctl */
if (rc) {
@@ -778,11 +779,11 @@ int loopcxt_get_blocksize(struct loopdev_cxt *lc, uint64_t *blocksize)
*/
int loopcxt_get_sizelimit(struct loopdev_cxt *lc, uint64_t *size)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
int rc = -EINVAL;
if (sysfs)
- rc = sysfs_read_u64(sysfs, "loop/sizelimit", size);
+ rc = ul_path_read_u64(sysfs, size, "loop/sizelimit");
if (rc && loopcxt_ioctl_enabled(lc)) {
struct loop_info64 *lo = loopcxt_get_info(lc);
@@ -927,12 +928,12 @@ int loopmod_supports_partscan(void)
*/
int loopcxt_is_partscan(struct loopdev_cxt *lc)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
if (sysfs) {
/* kernel >= 3.2 */
int fl;
- if (sysfs_read_int(sysfs, "loop/partscan", &fl) == 0)
+ if (ul_path_read_s32(sysfs, &fl, "loop/partscan") == 0)
return fl;
}
@@ -947,11 +948,11 @@ int loopcxt_is_partscan(struct loopdev_cxt *lc)
*/
int loopcxt_is_autoclear(struct loopdev_cxt *lc)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
if (sysfs) {
int fl;
- if (sysfs_read_int(sysfs, "loop/autoclear", &fl) == 0)
+ if (ul_path_read_s32(sysfs, &fl, "loop/autoclear") == 0)
return fl;
}
@@ -970,11 +971,11 @@ int loopcxt_is_autoclear(struct loopdev_cxt *lc)
*/
int loopcxt_is_readonly(struct loopdev_cxt *lc)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
if (sysfs) {
int fl;
- if (sysfs_read_int(sysfs, "ro", &fl) == 0)
+ if (ul_path_read_s32(sysfs, &fl, "ro") == 0)
return fl;
}
@@ -993,11 +994,11 @@ int loopcxt_is_readonly(struct loopdev_cxt *lc)
*/
int loopcxt_is_dio(struct loopdev_cxt *lc)
{
- struct sysfs_cxt *sysfs = loopcxt_get_sysfs(lc);
+ struct path_cxt *sysfs = loopcxt_get_sysfs(lc);
if (sysfs) {
int fl;
- if (sysfs_read_int(sysfs, "loop/dio", &fl) == 0)
+ if (ul_path_read_s32(sysfs, &fl, "loop/dio") == 0)
return fl;
}
if (loopcxt_ioctl_enabled(lc)) {