From 6a506ee7f30dfc7defa9fc285a9dad7eb98237da Mon Sep 17 00:00:00 2001 From: longpanda Date: Wed, 24 Nov 2021 15:46:21 +0800 Subject: [PATCH] Optimization for FreeBSD fragments process. --- .../grub-2.04/grub-core/ventoy/ventoy_cmd.c | 36 +----- .../geom_ventoy_ko/12.x/32/geom_ventoy.ko.xz | Bin 6512 -> 7516 bytes .../geom_ventoy_ko/12.x/64/geom_ventoy.ko.xz | Bin 6164 -> 7132 bytes .../geom_ventoy_ko/13.x/32/geom_ventoy.ko.xz | Bin 7676 -> 7828 bytes .../geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz | Bin 7432 -> 7584 bytes .../12.x/sys/geom/ventoy/g_ventoy.c | 106 ++++++++++++++---- .../12.x/sys/geom/ventoy/g_ventoy.h | 27 +++++ .../13.x/sys/geom/ventoy/g_ventoy.c | 26 ++++- 8 files changed, 140 insertions(+), 55 deletions(-) diff --git a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c index 9940b5f2..5adcdc65 100644 --- a/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c +++ b/GRUB2/MOD_SRC/grub-2.04/grub-core/ventoy/ventoy_cmd.c @@ -51,35 +51,11 @@ GRUB_MOD_LICENSE ("GPLv3+"); -static grub_uint8_t g_check_mbr_data[440] = { +static grub_uint8_t g_check_mbr_data[] = { 0xEB, 0x63, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFA, 0x90, 0x90, 0xF6, 0xC2, 0x80, 0x74, 0x05, 0xF6, 0xC2, 0x70, - 0x74, 0x02, 0xB2, 0x80, 0xEA, 0x79, 0x7C, 0x00, 0x00, 0x31, 0xC0, 0x8E, 0xD8, 0x8E, 0xD0, 0xBC, - 0x00, 0x20, 0xFB, 0xA0, 0x64, 0x7C, 0x3C, 0xFF, 0x74, 0x02, 0x88, 0xC2, 0x52, 0xBE, 0x90, 0x7D, - 0xE8, 0x16, 0x01, 0xBE, 0x05, 0x7C, 0xB4, 0x41, 0xBB, 0xAA, 0x55, 0xCD, 0x13, 0x5A, 0x52, 0x72, - 0x3D, 0x81, 0xFB, 0x55, 0xAA, 0x75, 0x37, 0x83, 0xE1, 0x01, 0x74, 0x32, 0x31, 0xC0, 0x89, 0x44, - 0x04, 0x40, 0x88, 0x44, 0xFF, 0x89, 0x44, 0x02, 0xC7, 0x04, 0x10, 0x00, 0x66, 0x8B, 0x1E, 0x5C, - 0x7C, 0x66, 0x89, 0x5C, 0x08, 0x66, 0x8B, 0x1E, 0x60, 0x7C, 0x66, 0x89, 0x5C, 0x0C, 0xC7, 0x44, - 0x06, 0x00, 0x70, 0xB4, 0x42, 0xCD, 0x13, 0x72, 0x05, 0xBB, 0x00, 0x70, 0xEB, 0x76, 0xB4, 0x08, - 0xCD, 0x13, 0x73, 0x0D, 0x5A, 0x84, 0xD2, 0x0F, 0x83, 0xD8, 0x00, 0xBE, 0x96, 0x7D, 0xE9, 0x82, - 0x00, 0x66, 0x0F, 0xB6, 0xC6, 0x88, 0x64, 0xFF, 0x40, 0x66, 0x89, 0x44, 0x04, 0x0F, 0xB6, 0xD1, - 0xC1, 0xE2, 0x02, 0x88, 0xE8, 0x88, 0xF4, 0x40, 0x89, 0x44, 0x08, 0x0F, 0xB6, 0xC2, 0xC0, 0xE8, - 0x02, 0x66, 0x89, 0x04, 0x66, 0xA1, 0x60, 0x7C, 0x66, 0x09, 0xC0, 0x75, 0x4E, 0x66, 0xA1, 0x5C, - 0x7C, 0x66, 0x31, 0xD2, 0x66, 0xF7, 0x34, 0x88, 0xD1, 0x31, 0xD2, 0x66, 0xF7, 0x74, 0x04, 0x3B, - 0x44, 0x08, 0x7D, 0x37, 0xFE, 0xC1, 0x88, 0xC5, 0x30, 0xC0, 0xC1, 0xE8, 0x02, 0x08, 0xC1, 0x88, - 0xD0, 0x5A, 0x88, 0xC6, 0xBB, 0x00, 0x70, 0x8E, 0xC3, 0x31, 0xDB, 0xB8, 0x01, 0x02, 0xCD, 0x13, - 0x72, 0x1E, 0x8C, 0xC3, 0x60, 0x1E, 0xB9, 0x00, 0x01, 0x8E, 0xDB, 0x31, 0xF6, 0xBF, 0x00, 0x80, - 0x8E, 0xC6, 0xFC, 0xF3, 0xA5, 0x1F, 0x61, 0xFF, 0x26, 0x5A, 0x7C, 0xBE, 0x93, 0x7D, 0xEB, 0x03, - 0xBE, 0x99, 0x7D, 0xE8, 0x33, 0x00, 0xBE, 0x9C, 0x7D, 0xE8, 0x2D, 0x00, 0xCD, 0x18, 0xEB, 0xFE, - 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0x54, 0x00, 0x47, 0x65, 0x00, 0x48, 0x44, 0x00, 0x52, 0x64, 0x00, 0x20, 0x45, 0x72, 0x0D, - 0x0A, 0x00, 0xBB, 0x01, 0x00, 0xB4, 0x0E, 0xCD, 0x10, 0xAC, 0x3C, 0x00, 0x75, 0xF4, 0xC3, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; initrd_info *g_initrd_img_list = NULL; @@ -655,12 +631,8 @@ static int ventoy_check_official_device(grub_device_t dev) grub_memset(mbr, 0, 512); grub_disk_read(disk, 0, 0, 512, mbr); grub_disk_close(disk); - - g_check_mbr_data[92] = mbr[92]; - g_check_mbr_data[102] = mbr[102]; - g_check_mbr_data[103] = mbr[103]; - grub_memcpy(g_check_mbr_data + 0x180, mbr + 0x180, 16); - if (grub_memcmp(g_check_mbr_data, mbr, 440)) + + if (grub_memcmp(g_check_mbr_data, mbr, 0x30) || grub_memcmp(g_check_mbr_data + 0x30, mbr + 0x190, 16)) { return ventoy_set_check_result(12); } diff --git a/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/12.x/32/geom_ventoy.ko.xz b/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/12.x/32/geom_ventoy.ko.xz index 6e6d994b9870db06dad27bad5f6682a22be377bf..710122b44331e6a13b99db67bb9d2425859b98e1 100644 GIT binary patch literal 7516 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 literal 6512 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 literal 6164 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 diff --git a/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/32/geom_ventoy.ko.xz b/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/32/geom_ventoy.ko.xz index 2de914580e3188ab8ea566e538481d20044d39f8..27666a9c2033046d58d5d087df62cad6ff863d70 100644 GIT binary patch literal 7828 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 literal 7676 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 diff --git a/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz b/Unix/ventoy_unix/FreeBSD/geom_ventoy_ko/13.x/64/geom_ventoy.ko.xz index a4b74178d2b08173ad0d992031df701c1b8bc601..537592ebf1a87be506ba2e5800364c1cf371e7db 100644 GIT binary patch literal 7584 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%0A9VrGbf7~{vpy(u1kb>`r4P!Grcaq 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 CJI|j0 literal 7432 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 G1X)_Du$W5# diff --git a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.c b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.c index 8de7a222..ab507192 100644 --- a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.c +++ b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.c @@ -65,12 +65,22 @@ static g_taste_t g_ventoy_taste; static g_ctl_req_t g_ventoy_config; static g_dumpconf_t g_ventoy_dumpconf; -static const char *g_ventoy_disk_uuid = NULL; +static char g_ventoy_disk_uuid[64]; static bool g_ventoy_tasted = false; static off_t g_ventoy_disk_size = 0; static off_t g_disk_map_start = 0; static off_t g_disk_map_end = 0; +struct g_ventoy_map g_ventoy_map_data __attribute__((aligned (65536))) = +{ + { VENTOY_UNIX_SEG_MAGIC0, VENTOY_UNIX_SEG_MAGIC1, VENTOY_UNIX_SEG_MAGIC2, VENTOY_UNIX_SEG_MAGIC3 }, + { 0, 0, 0, 0 }, + 0, 0, + { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, + { { 0, 0 } }, + { VENTOY_UNIX_SEG_MAGIC0, VENTOY_UNIX_SEG_MAGIC1, VENTOY_UNIX_SEG_MAGIC2, VENTOY_UNIX_SEG_MAGIC3 } +}; + struct g_class g_ventoy_class = { .name = G_VENTOY_CLASS_NAME, .version = G_VERSION, @@ -677,23 +687,50 @@ g_ventoy_destroy_geom(struct gctl_req *req __unused, static bool g_vtoy_check_disk(struct g_class *mp, struct g_provider *pp) { int i; + bool ret = true; uint8_t *buf; char uuid[64]; const char *value; struct g_consumer *cp; struct g_geom *gp; + uint8_t mbrdata[] = { + 0xEB, 0x63, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x54, 0x00, 0x47, 0x65, 0x00, 0x48, 0x44, 0x00, 0x52, 0x64, 0x00, 0x20, 0x45, 0x72, 0x0D, + }; if (g_ventoy_disk_size == 0) { - if (resource_string_value("ventoy", 0, "disksize", &value) == 0) + if (VENTOY_MAP_VALID(g_ventoy_map_data.magic2)) { - G_DEBUG("ventoy.disksize: %s\n", value); - g_ventoy_disk_size = strtouq(value, NULL, 0); + G_DEBUG("ventoy map data is valid. [OK]\n"); + + for (i = 0; i < 16; i++) + { + sprintf(uuid + i * 2, "%02x", g_ventoy_map_data.diskuuid[i]); + } + snprintf(g_ventoy_disk_uuid, sizeof(g_ventoy_disk_uuid), "%s", uuid); + g_ventoy_disk_size = g_ventoy_map_data.disksize; + + G_DEBUG("ventoy.disksize: %llu\n", (unsigned long long)g_ventoy_disk_size); + G_DEBUG("ventoy.diskuuid: <%s>\n", g_ventoy_disk_uuid); } - - if (resource_string_value("ventoy", 0, "diskuuid", &g_ventoy_disk_uuid) == 0) + else { - G_DEBUG("ventoy.diskuuid: <%s>\n", g_ventoy_disk_uuid); + G_DEBUG("ventoy map data is invalid, get from resource\n"); + + if (resource_string_value("ventoy", 0, "disksize", &value) == 0) + { + G_DEBUG("ventoy.disksize: %s\n", value); + g_ventoy_disk_size = strtouq(value, NULL, 0); + } + + if (resource_string_value("ventoy", 0, "diskuuid", &value) == 0) + { + snprintf(g_ventoy_disk_uuid, sizeof(g_ventoy_disk_uuid), "%s", value); + G_DEBUG("ventoy.diskuuid: <%s>\n", value); + } } } @@ -735,14 +772,25 @@ static bool g_vtoy_check_disk(struct g_class *mp, struct g_provider *pp) { sprintf(uuid + i * 2, "%02x", buf[0x180 + i]); } + + if (strncmp(g_ventoy_disk_uuid, uuid, 32)) + { + ret = false; + } + + if (memcmp(mbrdata, buf, 0x30) || memcmp(mbrdata + 0x30, buf + 0x190, 16)) + { + ret = false; + } + g_free(buf); - - if (strncmp(g_ventoy_disk_uuid, uuid, 32) == 0) + + if (ret) { - return true; + G_DEBUG("ventoy disk check OK\n"); } - return false; + return ret; } static struct g_geom * @@ -778,7 +826,16 @@ g_ventoy_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) G_DEBUG("######### ventoy disk <%s> #############\n", pp->name); - resource_int_value("ventoy", 0, "segnum", &disknum); + if (VENTOY_MAP_VALID(g_ventoy_map_data.magic2)) + { + disknum = (int)g_ventoy_map_data.segnum; + G_DEBUG("segnum from map data is:<%d>\n", disknum); + } + else + { + resource_int_value("ventoy", 0, "segnum", &disknum); + G_DEBUG("segnum from resource is:<%d>\n", disknum); + } strlcpy(md.md_magic, G_VENTOY_MAGIC, sizeof(md.md_magic)); md.md_version = G_VENTOY_VERSION; @@ -800,18 +857,29 @@ g_ventoy_taste(struct g_class *mp, struct g_provider *pp, int flags __unused) for (i = 0; i < disknum; i ++) { - if (resource_string_value("ventoy", i, "seg", &value) == 0) + if (VENTOY_MAP_VALID(g_ventoy_map_data.magic2)) { - g_disk_map_start = strtouq(value, &endpos, 0); - g_disk_map_end = strtouq(endpos + 1, NULL, 0); + G_DEBUG("[map] ventoy segment%d: 0x%llx@0x%llx\n", i, + (long long)g_ventoy_map_data.seglist[i].seg_start_bytes, + (long long)g_ventoy_map_data.seglist[i].seg_end_bytes); + + g_disk_map_start = (off_t)g_ventoy_map_data.seglist[i].seg_start_bytes; + g_disk_map_end = (off_t)g_ventoy_map_data.seglist[i].seg_end_bytes; } else { - printf("Failed to parse ventoy seg %d\n", i); - continue; + if (resource_string_value("ventoy", i, "seg", &value) == 0) + { + g_disk_map_start = strtouq(value, &endpos, 0); + g_disk_map_end = strtouq(endpos + 1, NULL, 0); + } + else + { + printf("Failed to parse ventoy seg %d\n", i); + continue; + } + G_DEBUG("[resource] ventoy segment%d: %s\n", i, value); } - - G_DEBUG("ventoy segment%d: %s\n", i, value); G_VENTOY_DEBUG(1, "Adding disk %s to %s.", pp->name, gp->name); error = g_ventoy_add_disk(sc, pp, i); diff --git a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.h b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.h index e442b246..abe565bd 100644 --- a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.h +++ b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/12.x/sys/geom/ventoy/g_ventoy.h @@ -76,6 +76,33 @@ struct g_ventoy_softc { struct mtx sc_lock; }; #define sc_name sc_geom->name + + +#pragma pack(1) +#define VENTOY_UNIX_SEG_MAGIC0 0x11223344 +#define VENTOY_UNIX_SEG_MAGIC1 0x55667788 +#define VENTOY_UNIX_SEG_MAGIC2 0x99aabbcc +#define VENTOY_UNIX_SEG_MAGIC3 0xddeeff00 +#define VENTOY_UNIX_MAX_SEGNUM 40960 +struct g_ventoy_seg { + uint64_t seg_start_bytes; + uint64_t seg_end_bytes; +}; + +struct g_ventoy_map{ + uint32_t magic1[4]; + uint32_t magic2[4]; + uint64_t segnum; + uint64_t disksize; + uint8_t diskuuid[16]; + struct g_ventoy_seg seglist[VENTOY_UNIX_MAX_SEGNUM]; + uint32_t magic3[4]; +}; +#pragma pack() + +#define VENTOY_MAP_VALID(magic2) \ + (magic2[0] == VENTOY_UNIX_SEG_MAGIC0 && magic2[1] == VENTOY_UNIX_SEG_MAGIC1 && magic2[2] == VENTOY_UNIX_SEG_MAGIC2 && magic2[3] == VENTOY_UNIX_SEG_MAGIC3) + #endif /* _KERNEL */ struct g_ventoy_metadata { diff --git a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c index 5477c5ea..1924a06e 100644 --- a/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c +++ b/Unix/ventoy_unix_src/FreeBSD/geom_ventoy_src/13.x/sys/geom/ventoy/g_ventoy.c @@ -721,11 +721,18 @@ g_ventoy_destroy_geom(struct gctl_req *req __unused, static bool g_vtoy_check_disk(struct g_class *mp, struct g_provider *pp) { int i; + bool ret = true; uint8_t *buf; char uuid[64]; const char *value; struct g_consumer *cp; struct g_geom *gp; + uint8_t mbrdata[] = { + 0xEB, 0x63, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x56, 0x54, 0x00, 0x47, 0x65, 0x00, 0x48, 0x44, 0x00, 0x52, 0x64, 0x00, 0x20, 0x45, 0x72, 0x0D, + }; if (g_ventoy_disk_size == 0) { @@ -799,14 +806,25 @@ static bool g_vtoy_check_disk(struct g_class *mp, struct g_provider *pp) { sprintf(uuid + i * 2, "%02x", buf[0x180 + i]); } + + if (strncmp(g_ventoy_disk_uuid, uuid, 32)) + { + ret = false; + } + + if (memcmp(mbrdata, buf, 0x30) || memcmp(mbrdata + 0x30, buf + 0x190, 16)) + { + ret = false; + } + g_free(buf); - - if (strncmp(g_ventoy_disk_uuid, uuid, 32) == 0) + + if (ret) { - return true; + G_DEBUG("ventoy disk check OK\n"); } - return false; + return ret; } static struct g_geom *