]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libblkid: swap: report fsblocksize
authorThomas Weißschuh <thomas@t-8ch.de>
Wed, 14 Dec 2022 00:30:25 +0000 (00:30 +0000)
committerThomas Weißschuh <thomas@t-8ch.de>
Wed, 14 Dec 2022 12:01:01 +0000 (12:01 +0000)
libblkid/src/superblocks/swap.c
tests/expected/blkid/low-probe-swap1

index 6a05c257b6cd13756f6dccf83174c1703dcdd566..0d130ae55b8e09e69705109c0c7940c4d345ef22 100644 (file)
@@ -37,14 +37,19 @@ struct swap_header_v1_2 {
 #define TOI_MAGIC_STRLEN       (sizeof(TOI_MAGIC_STRING) - 1)
 
 static void swap_set_info_swap1(blkid_probe pr,
+               const struct blkid_idmag *mag,
                const struct swap_header_v1_2 *hdr)
 {
        enum BLKID_ENDIANNESS endianness = le32_to_cpu(hdr->version) == 1 ?
                BLKID_ENDIANNESS_LITTLE : BLKID_ENDIANNESS_BIG;
        blkid_probe_set_fsendianness(pr, endianness);
+
+       uint32_t pagesize = mag->sboff + mag->len;
+       blkid_probe_set_fsblocksize(pr, pagesize);
 }
 
-static int swap_set_info(blkid_probe pr, const char *version)
+static int swap_set_info(blkid_probe pr, const struct blkid_idmag *mag,
+               const char *version)
 {
        struct swap_header_v1_2 *hdr;
 
@@ -64,7 +69,7 @@ static int swap_set_info(blkid_probe pr, const char *version)
                        DBG(LOWPROBE, ul_debug("not set last swap page"));
                        return 1;
                }
-               swap_set_info_swap1(pr, hdr);
+               swap_set_info_swap1(pr, mag, hdr);
        }
 
        /* arbitrary sanity check.. is there any garbage down there? */
@@ -103,7 +108,7 @@ static int probe_swap(blkid_probe pr, const struct blkid_idmag *mag)
        }
 
        if (!memcmp(mag->magic, "SWAPSPACE2", mag->len))
-               return swap_set_info(pr, "1");
+               return swap_set_info(pr, mag, "1");
 
        return 1;
 }
@@ -113,15 +118,15 @@ static int probe_swsuspend(blkid_probe pr, const struct blkid_idmag *mag)
        if (!mag)
                return 1;
        if (!memcmp(mag->magic, "S1SUSPEND", mag->len))
-               return swap_set_info(pr, "s1suspend");
+               return swap_set_info(pr, mag, "s1suspend");
        if (!memcmp(mag->magic, "S2SUSPEND", mag->len))
-               return swap_set_info(pr, "s2suspend");
+               return swap_set_info(pr, mag, "s2suspend");
        if (!memcmp(mag->magic, "ULSUSPEND", mag->len))
-               return swap_set_info(pr, "ulsuspend");
+               return swap_set_info(pr, mag, "ulsuspend");
        if (!memcmp(mag->magic, TOI_MAGIC_STRING, TOI_MAGIC_STRLEN))
-               return swap_set_info(pr, "tuxonice");
+               return swap_set_info(pr, mag, "tuxonice");
        if (!memcmp(mag->magic, "LINHIB0001", mag->len))
-               return swap_set_info(pr, "linhib0001");
+               return swap_set_info(pr, mag, "linhib0001");
 
        return 1;       /* no signature detected */
 }
index 3565ce236ccc36b4abfed044e064511b82d1b44b..c37eb2c466bc8060e04b0f04326973d2637c37a0 100644 (file)
@@ -1,4 +1,5 @@
 ID_FS_ENDIANNESS=LITTLE
+ID_FS_FSBLOCKSIZE=4096
 ID_FS_LABEL=SWAP-TEST
 ID_FS_LABEL_ENC=SWAP-TEST
 ID_FS_TYPE=swap