ref: d51673903684ef948787a209a7e48acf92e6a745
parent: 22ba05cbfc93fb8fe75f8504e30e13db1423e1b0
author: 9ferno <gophone2015@gmail.com>
date: Fri Dec 2 05:01:35 EST 2022
updated to work for the second scenario
--- a/blk.c
+++ b/blk.c
@@ -118,6 +118,15 @@
fprint(fd, "unknown tag type %d\n", tag);
}
+/*
+ 0 1 latest
+ ------------------
+1. 0 255 0
+2. 255 0 1
+3. >= 0
+4. < 1
+
+ */
u8
recentmetadata(void *buf, void **cur, void **new)
{
@@ -127,15 +136,23 @@
panic("recentmetadata buf == nil\n");
ms = buf;
- if((ms[0].verd == 0 && ms[1].verd == 255) ||
- (ms[0].verd >= ms[1].verd)){
- if(new != nil)
- *new = ms+1;
- if(cur != nil)
- *cur = ms;
- return 0;
- }
+ if(ms[0].verd == 0 && ms[1].verd == 255)
+ goto Use0;
+ else if(ms[0].verd == 255 && ms[1].verd == 0)
+ goto Use1;
+ else if(ms[0].verd >= ms[1].verd)
+ goto Use0;
+ else
+ goto Use1;
+Use0:
+ if(new != nil)
+ *new = ms+1;
+ if(cur != nil)
+ *cur = ms;
+ return 0;
+
+Use1:
if(new != nil)
*new = ms;
if(cur != nil)