1dc728923Sopenharmony_cidiff --git a/lib/blkid/probe.c b/lib/blkid/probe.c
2dc728923Sopenharmony_ciindex b8b6558..1111c93 100644
3dc728923Sopenharmony_ci--- a/lib/blkid/probe.c
4dc728923Sopenharmony_ci+++ b/lib/blkid/probe.c
5dc728923Sopenharmony_ci@@ -1440,6 +1440,24 @@ static int probe_f2fs(struct blkid_probe *probe,
6dc728923Sopenharmony_ci     return 0;
7dc728923Sopenharmony_ci }
8dc728923Sopenharmony_ci 
9dc728923Sopenharmony_ci+static int probe_hmfs(struct blkid_probe *probe,
10dc728923Sopenharmony_ci+                      struct blkid_magic *id __BLKID_ATTR((unused)),
11dc728923Sopenharmony_ci+                      unsigned char *buf)
12dc728923Sopenharmony_ci+{
13dc728923Sopenharmony_ci+    hmfs_super_block *bs = NULL;
14dc728923Sopenharmony_ci+    if (buf == NULL) {
15dc728923Sopenharmony_ci+        return -1;
16dc728923Sopenharmony_ci+    }
17dc728923Sopenharmony_ci+    bs = (hmfs_super_block *)buf;
18dc728923Sopenharmony_ci+    set_uuid(probe->dev, bs->uuid, 0);
19dc728923Sopenharmony_ci+    if (bs->volume_name[0] != 0) {
20dc728923Sopenharmony_ci+        unsigned char vol_name_utf8[513] = {0};
21dc728923Sopenharmony_ci+        unicode_16le_to_utf8(vol_name_utf8, 512, (const unsigned char*)bs->volume_name, 512 * sizeof(__u16));
22dc728923Sopenharmony_ci+        blkid_set_tag(probe->dev, "LABEL", vol_name_utf8, 512);
23dc728923Sopenharmony_ci+    }
24dc728923Sopenharmony_ci+    return 0;
25dc728923Sopenharmony_ci+}
26dc728923Sopenharmony_ci+
27dc728923Sopenharmony_ci static uint64_t exfat_block_to_offset(const struct exfat_super_block *sb,
28dc728923Sopenharmony_ci                                       uint64_t block)
29dc728923Sopenharmony_ci {
30dc728923Sopenharmony_ci@@ -1646,6 +1664,7 @@ static struct blkid_magic type_array[] = {
31dc728923Sopenharmony_ci   { "lvm2pv",	 1,  0x218,  8, "LVM2 001",		probe_lvm2 },
32dc728923Sopenharmony_ci   { "btrfs",	 64,  0x40,  8, "_BHRfS_M",		probe_btrfs },
33dc728923Sopenharmony_ci   { "f2fs",	 1,      0,  4, "\x10\x20\xf5\xf2",	probe_f2fs },
34dc728923Sopenharmony_ci+  { "hmfs",  1,      0,  4, "\x24\x20\xf5\xfe", probe_hmfs },
35dc728923Sopenharmony_ci   { "exfat",     0,      3,  8, "EXFAT   ",             probe_exfat },
36dc728923Sopenharmony_ci   {   NULL,	 0,	 0,  0, NULL,			NULL }
37dc728923Sopenharmony_ci };
38dc728923Sopenharmony_cidiff --git a/lib/blkid/probe.h b/lib/blkid/probe.h
39dc728923Sopenharmony_ciindex dea4081..be79c42 100644
40dc728923Sopenharmony_ci--- a/lib/blkid/probe.h
41dc728923Sopenharmony_ci+++ b/lib/blkid/probe.h
42dc728923Sopenharmony_ci@@ -765,6 +765,8 @@ struct f2fs_super_block {
43dc728923Sopenharmony_ci     __u8 extension_list[F2FS_MAX_EXTENSION][8]; /* extension array */
44dc728923Sopenharmony_ci } __attribute__((__packed__));
45dc728923Sopenharmony_ci 
46dc728923Sopenharmony_ci+typedef struct f2fs_super_block hmfs_super_block;
47dc728923Sopenharmony_ci+
48dc728923Sopenharmony_ci struct exfat_super_block {
49dc728923Sopenharmony_ci     uint8_t jump[3];
50dc728923Sopenharmony_ci     uint8_t oem_name[8];
51