#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;
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? */
}
if (!memcmp(mag->magic, "SWAPSPACE2", mag->len))
- return swap_set_info(pr, "1");
+ return swap_set_info(pr, mag, "1");
return 1;
}
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 */
}