ref: 736cb14cb5327a57d21beb27f028ff2e39bc1342
parent: d7be09a034257bf26b5b8d5faaa6da05f92f805a
author: Ori Bernstein <ori@eigenstate.org>
date: Sun Oct 15 20:00:11 EDT 2023
qgen: set queue generation when enqueuing makes it harder to forget to set it, eg, when enqueueing a flush block.
--- a/blk.c
+++ b/blk.c
@@ -1010,7 +1010,6 @@
qe.op = Qfree;
qe.bp = p->bp;
qe.b = nil;
- qe.qgen = agetv(&fs->qgen);
qput(a->sync, qe);
if(p->b != nil){
setflag(p->b, Bfreed);
@@ -1037,7 +1036,6 @@
holdblk(b);
finalize(b);
qe.op = Qwrite;
- qe.qgen = agetv(&fs->qgen);
qe.bp = b->bp;
qe.b = b;
qput(a->sync, qe);
@@ -1084,6 +1082,7 @@
break;
q->heap[i] = q->heap[(i-1)/2];
}
+ qe.qgen = agetv(&fs->qgen);
q->heap[i] = qe;
q->nheap++;
rwakeup(&q->emptyrz);