loop-util: move resize partition ioctl call to blockdev-util.[ch]

The other BLKPG calls have wrappers in blockdev-util.[ch], let's place
them all there.

No change in behaviour.
This commit is contained in:
Lennart Poettering
2022-09-01 15:59:54 +02:00
parent cf0dc88da6
commit 91e1ce1a7c
3 changed files with 42 additions and 15 deletions
+36 -2
View 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;
+1
View 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);
+5 -13
View 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) {