]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
loop-util: move resize partition ioctl call to blockdev-util.[ch]
authorLennart Poettering <lennart@poettering.net>
Thu, 1 Sep 2022 10:10:30 +0000 (12:10 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 1 Sep 2022 13:59:54 +0000 (15:59 +0200)
The other BLKPG calls have wrappers in blockdev-util.[ch], let's place
them all there.

No change in behaviour.

src/shared/blockdev-util.c
src/shared/blockdev-util.h
src/shared/loop-util.c

index 6038591d8335ef3920693b622b24146b68152422..0b2554d4b23bb40f7731c923f01fa2dc3e44a722 100644 (file)
@@ -427,7 +427,13 @@ int path_get_whole_disk(const char *path, bool backing, dev_t *ret) {
         return fd_get_whole_disk(fd, backing, ret);
 }
 
-int block_device_add_partition(int fd, const char *name, int nr, uint64_t start, uint64_t size) {
+int block_device_add_partition(
+                int fd,
+                const char *name,
+                int nr,
+                uint64_t start,
+                uint64_t size) {
+
         assert(fd >= 0);
         assert(name);
         assert(nr > 0);
@@ -452,7 +458,11 @@ int block_device_add_partition(int fd, const char *name, int nr, uint64_t start,
         return RET_NERRNO(ioctl(fd, BLKPG, &ba));
 }
 
-int block_device_remove_partition(int fd, const char *name, int nr) {
+int block_device_remove_partition(
+                int fd,
+                const char *name,
+                int nr) {
+
         assert(fd >= 0);
         assert(name);
         assert(nr > 0);
@@ -475,6 +485,30 @@ int block_device_remove_partition(int fd, const char *name, int nr) {
         return RET_NERRNO(ioctl(fd, BLKPG, &ba));
 }
 
+int block_device_resize_partition(
+                int fd,
+                int nr,
+                uint64_t start,
+                uint64_t size) {
+
+        assert(fd >= 0);
+        assert(nr > 0);
+
+        struct blkpg_partition bp = {
+                .pno = nr,
+                .start = start,
+                .length = size,
+        };
+
+        struct blkpg_ioctl_arg ba = {
+                .op = BLKPG_RESIZE_PARTITION,
+                .data = &bp,
+                .datalen = sizeof(bp),
+        };
+
+        return RET_NERRNO(ioctl(fd, BLKPG, &ba));
+}
+
 int block_device_remove_all_partitions(int fd) {
         struct stat stat;
         _cleanup_(sd_device_unrefp) sd_device *dev = NULL;
index 8c9401b4a784e8b270351ab38c5e18690a0a3e87..2f1f347d091586e74118b152a214b031ef159016 100644 (file)
@@ -33,4 +33,5 @@ int path_get_whole_disk(const char *path, bool backing, dev_t *ret);
 
 int block_device_add_partition(int fd, const char *name, int nr, uint64_t start, uint64_t size);
 int block_device_remove_partition(int fd, const char *name, int nr);
+int block_device_resize_partition(int fd, int nr, uint64_t start, uint64_t size);
 int block_device_remove_all_partitions(int fd);
index ce9a982f02f6ff88cbd6407e13e29875ef7b5a87..fd68af41600e3f160bcc6a2938c38768894c7eb7 100644 (file)
@@ -869,19 +869,11 @@ static int resize_partition(int partition_fd, uint64_t offset, uint64_t size) {
         if (r < 0)
                 return r;
 
-        struct blkpg_partition bp = {
-                .pno = partno,
-                .start = offset == UINT64_MAX ? current_offset : offset,
-                .length = size == UINT64_MAX ? current_size : size,
-        };
-
-        struct blkpg_ioctl_arg ba = {
-                .op = BLKPG_RESIZE_PARTITION,
-                .data = &bp,
-                .datalen = sizeof(bp),
-        };
-
-        return RET_NERRNO(ioctl(whole_fd, BLKPG, &ba));
+        return block_device_resize_partition(
+                        whole_fd,
+                        partno,
+                        offset == UINT64_MAX ? current_offset : offset,
+                        size == UINT64_MAX ? current_size : size);
 }
 
 int loop_device_refresh_size(LoopDevice *d, uint64_t offset, uint64_t size) {