diff --git a/src/shared/loop-util.c b/src/shared/loop-util.c index 84f415aa61c..2aa49369654 100644 --- a/src/shared/loop-util.c +++ b/src/shared/loop-util.c @@ -353,6 +353,7 @@ int loop_device_make( .nr = nr, .node = TAKE_PTR(loopdev), .relinquished = true, /* It's not allocated by us, don't destroy it when this object is freed */ + .devno = st.st_rdev, }; *ret = d; @@ -425,6 +426,10 @@ int loop_device_make( UINT64_C(240) * USEC_PER_MSEC * n_attempts/64)); } + if (fstat(loop_with_fd, &st) < 0) + return -errno; + assert(S_ISBLK(st.st_mode)); + d = new(LoopDevice, 1); if (!d) return -ENOMEM; @@ -432,6 +437,7 @@ int loop_device_make( .fd = TAKE_FD(loop_with_fd), .node = TAKE_PTR(loopdev), .nr = nr, + .devno = st.st_rdev, }; *ret = d; diff --git a/src/shared/loop-util.h b/src/shared/loop-util.h index 9538daea311..619b34716bf 100644 --- a/src/shared/loop-util.h +++ b/src/shared/loop-util.h @@ -10,6 +10,7 @@ typedef struct LoopDevice LoopDevice; struct LoopDevice { int fd; int nr; + dev_t devno; char *node; bool relinquished; };