diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/loop-util.c | 6 | ||||
-rw-r--r-- | src/shared/loop-util.h | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c index 49f4b2bf6e..54251f0fb7 100644 --- a/src/shared/loop-util.c +++ b/src/shared/loop-util.c @@ -369,6 +369,7 @@ static int loop_configure( return -ENOMEM; *d = (LoopDevice) { + .n_ref = 1, .fd = TAKE_FD(loop_with_fd), .lock_fd = TAKE_FD(lock_fd), .node = TAKE_PTR(node), @@ -624,7 +625,7 @@ int loop_device_make_by_path( return loop_device_make_internal(path, fd, open_flags, 0, 0, loop_flags, lock_op, ret); } -LoopDevice* loop_device_unref(LoopDevice *d) { +static LoopDevice* loop_device_free(LoopDevice *d) { _cleanup_close_ int control = -1; int r; @@ -696,6 +697,8 @@ LoopDevice* loop_device_unref(LoopDevice *d) { return mfree(d); } +DEFINE_TRIVIAL_REF_UNREF_FUNC(LoopDevice, loop_device, loop_device_free); + void loop_device_relinquish(LoopDevice *d) { assert(d); @@ -796,6 +799,7 @@ int loop_device_open_full( return -ENOMEM; *d = (LoopDevice) { + .n_ref = 1, .fd = TAKE_FD(fd), .lock_fd = TAKE_FD(lock_fd), .nr = nr, diff --git a/src/shared/loop-util.h b/src/shared/loop-util.h index cb0183ba07..756041adaa 100644 --- a/src/shared/loop-util.h +++ b/src/shared/loop-util.h @@ -11,6 +11,7 @@ typedef struct LoopDevice LoopDevice; /* Some helpers for setting up loopback block devices */ struct LoopDevice { + unsigned n_ref; int fd; int lock_fd; int nr; /* The loopback device index (i.e. 4 for /dev/loop4); if this object encapsulates a non-loopback block device, set to -1 */ @@ -34,6 +35,7 @@ static inline int loop_device_open(const char *loop_path, int open_flags, int lo return loop_device_open_full(loop_path, -1, open_flags, lock_op, ret); } +LoopDevice* loop_device_ref(LoopDevice *d); LoopDevice* loop_device_unref(LoopDevice *d); DEFINE_TRIVIAL_CLEANUP_FUNC(LoopDevice*, loop_device_unref); |