From: Sage Weil Date: Tue, 22 Dec 2015 17:45:58 +0000 (-0500) Subject: os/bluestore/BlueStore: note wal releases in fsck X-Git-Tag: v10.0.3~154^2~93 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=dc5d33b10578771e87a03e4f1f7808a19a014ec4;p=ceph.git os/bluestore/BlueStore: note wal releases in fsck Include these in used_blocks (they are about to be released but not reflected in the onode). Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueStore.cc b/src/os/bluestore/BlueStore.cc index 0f0a2851e550..90ffcd49c1ae 100644 --- a/src/os/bluestore/BlueStore.cc +++ b/src/os/bluestore/BlueStore.cc @@ -1948,6 +1948,27 @@ int BlueStore::fsck() } } + dout(1) << __func__ << " checking wal events" << dendl; + { + it = db->get_iterator(PREFIX_WAL); + for (it->lower_bound(string()); it->valid(); it->next()) { + bufferlist bl = it->value(); + bufferlist::iterator p = bl.begin(); + bluestore_wal_transaction_t wt; + try { + ::decode(wt, p); + } catch (buffer::error& e) { + derr << __func__ << " failed to decode wal txn " + << pretty_binary_string(it->key()) << dendl; + return -EIO; + } + dout(20) << __func__ << " wal " << wt.seq + << " ops " << wt.ops.size() + << " released " << wt.released << dendl; + used_blocks.insert(wt.released); + } + } + dout(1) << __func__ << " checking freelist vs allocated" << dendl; { const map& free = fm->get_freelist();