diff options
author | Lennart Poettering <lennart@poettering.net> | 2023-01-17 21:42:02 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2023-01-18 10:47:17 +0100 |
commit | 81dde3d85d57e1c91ac23208ce006f43502b54b2 (patch) | |
tree | 76312c4bbc3a42ec0763e9350ff92da739a641d6 /src/shared/dissect-image.c | |
parent | 1d93c00386212bf3749e5657de9da99cdd429239 (diff) | |
download | systemd-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.c | 18 |
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, |