summaryrefslogtreecommitdiff
path: root/src/shared/dissect-image.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2023-01-17 21:42:02 +0100
committerLennart Poettering <lennart@poettering.net>2023-01-18 10:47:17 +0100
commit81dde3d85d57e1c91ac23208ce006f43502b54b2 (patch)
tree76312c4bbc3a42ec0763e9350ff92da739a641d6 /src/shared/dissect-image.c
parent1d93c00386212bf3749e5657de9da99cdd429239 (diff)
downloadsystemd-81dde3d85d57e1c91ac23208ce006f43502b54b2.tar.gz
homework: when creating/resizing GPT partitions, also set sector size explicitly
Diffstat (limited to 'src/shared/dissect-image.c')
-rw-r--r--src/shared/dissect-image.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/shared/dissect-image.c b/src/shared/dissect-image.c
index da8eba83de..c0d052e0ea 100644
--- a/src/shared/dissect-image.c
+++ b/src/shared/dissect-image.c
@@ -189,6 +189,24 @@ not_found:
return 0; /* indicate we didn't find it */
}
+int probe_sector_size_prefer_ioctl(int fd, uint32_t *ret) {
+ struct stat st;
+
+ assert(fd >= 0);
+ assert(ret);
+
+ /* Just like probe_sector_size(), but if we are looking at a block device, will use the already
+ * configured sector size rather than probing by contents */
+
+ if (fstat(fd, &st) < 0)
+ return -errno;
+
+ if (S_ISBLK(st.st_mode))
+ return blockdev_get_sector_size(fd, ret);
+
+ return probe_sector_size(fd, ret);
+}
+
int probe_filesystem_full(
int fd,
const char *path,