From 7f936b774dbe22f70ebd74b4ff87685fc48c7fd2 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Thu, 22 Jun 2023 15:03:09 -0400 Subject: [PATCH 1/3] u3: improve snapshot corruption size checks --- pkg/noun/manage.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/noun/manage.c b/pkg/noun/manage.c index 0ae9537691..43680fafa2 100644 --- a/pkg/noun/manage.c +++ b/pkg/noun/manage.c @@ -617,11 +617,16 @@ _find_home(void) nor_w = (low_p + ((1 << u3a_page) - 1)) >> u3a_page; sou_w = u3P.pag_w - (hig_p >> u3a_page); - if ( (nor_w != u3P.nor_u.pgs_w) || (sou_w != u3P.sou_u.pgs_w) ) { + if ( (nor_w > u3P.nor_u.pgs_w) || (sou_w > u3P.sou_u.pgs_w) ) { fprintf(stderr, "loom: corrupt size north (%u, %u) south (%u, %u)\r\n", nor_w, u3P.nor_u.pgs_w, sou_w, u3P.sou_u.pgs_w); u3_assert(!"loom: corrupt size"); } + + if ( (nor_w < u3P.nor_u.pgs_w) || (sou_w < u3P.sou_u.pgs_w) ) { + fprintf(stderr, "loom: strange size north (%u, %u) south (%u, %u)\r\n", + nor_w, u3P.nor_u.pgs_w, sou_w, u3P.sou_u.pgs_w); + } } /* As a further guard against any sneaky loom corruption */ From 7140a465be7784ce9d0a49ba344e99158617747d Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Thu, 22 Jun 2023 16:27:46 -0400 Subject: [PATCH 2/3] u3: special-case north.bin in snapshot-size warning --- pkg/noun/manage.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pkg/noun/manage.c b/pkg/noun/manage.c index 43680fafa2..8fcb9d5d08 100644 --- a/pkg/noun/manage.c +++ b/pkg/noun/manage.c @@ -617,15 +617,18 @@ _find_home(void) nor_w = (low_p + ((1 << u3a_page) - 1)) >> u3a_page; sou_w = u3P.pag_w - (hig_p >> u3a_page); - if ( (nor_w > u3P.nor_u.pgs_w) || (sou_w > u3P.sou_u.pgs_w) ) { + if ( (nor_w > u3P.nor_u.pgs_w) || (sou_w != u3P.sou_u.pgs_w) ) { fprintf(stderr, "loom: corrupt size north (%u, %u) south (%u, %u)\r\n", nor_w, u3P.nor_u.pgs_w, sou_w, u3P.sou_u.pgs_w); u3_assert(!"loom: corrupt size"); } - if ( (nor_w < u3P.nor_u.pgs_w) || (sou_w < u3P.sou_u.pgs_w) ) { - fprintf(stderr, "loom: strange size north (%u, %u) south (%u, %u)\r\n", - nor_w, u3P.nor_u.pgs_w, sou_w, u3P.sou_u.pgs_w); + // the north segment is in-order on disk; it being oversized + // doesn't necessarily indicate corruption. + // + if ( nor_w < u3P.nor_u.pgs_w ) { + fprintf(stderr, "loom: strange size north (%u, %u)\r\n", + nor_w, u3P.nor_u.pgs_w,); } } From 272bb84c4d4d74e1bd665354978b02822e063359 Mon Sep 17 00:00:00 2001 From: Joe Bryan Date: Thu, 22 Jun 2023 16:38:03 -0400 Subject: [PATCH 3/3] u3: delete spurious trailing comma --- pkg/noun/manage.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/noun/manage.c b/pkg/noun/manage.c index 8fcb9d5d08..09c9a370a9 100644 --- a/pkg/noun/manage.c +++ b/pkg/noun/manage.c @@ -628,7 +628,7 @@ _find_home(void) // if ( nor_w < u3P.nor_u.pgs_w ) { fprintf(stderr, "loom: strange size north (%u, %u)\r\n", - nor_w, u3P.nor_u.pgs_w,); + nor_w, u3P.nor_u.pgs_w); } }