From: Yan, Zheng Date: Wed, 31 Jul 2019 02:43:35 +0000 (+0800) Subject: mds: fix InoTable::force_consume_to() X-Git-Tag: v15.1.0~1841^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=e10840ba9ceb9bfae6130d76a93ced2b889fc03f;p=ceph.git mds: fix InoTable::force_consume_to() original code assumes free inode numbers are contiguous Fixes: https://tracker.ceph.com/issues/41006 Signed-off-by: "Yan, Zheng" --- diff --git a/src/mds/InoTable.cc b/src/mds/InoTable.cc index caa1bfc45310..fb0ec2972416 100644 --- a/src/mds/InoTable.cc +++ b/src/mds/InoTable.cc @@ -226,15 +226,10 @@ bool InoTable::repair(inodeno_t id) bool InoTable::force_consume_to(inodeno_t ino) { - auto it = free.begin(); - if (it != free.end() && it.get_start() <= ino) { - inodeno_t min = it.get_start(); - derr << "erasing " << min << " to " << ino << dendl; - free.erase(min, ino - min + 1); - projected_free = free; - projected_version = ++version; - return true; - } else { + inodeno_t first = free.range_start(); + if (first > ino) return false; - } + + skip_inos(inodeno_t(ino + 1 - first)); + return true; }