If we observe an ENOENT on a read, set the complete flag. Any dirty
buffers we have will still be in memory, even if the write are in flight,
because the TX state remains pinned until the writes commit. Writes cannot
proceed faster than reads, even though reads may proceed faster than
writes.
Signed-off-by: Sage Weil <sage@inktank.com>
} else {
Object *ob = objects[poolid][oid];
+ if (r == -ENOENT && !ob->complete) {
+ ldout(cct, 7) << "bh_read_finish ENOENT, marking complete on " << *ob << dendl;
+ ob->complete = true;
+ }
+
// apply to bh's!
loff_t opos = start;
while (true) {