From: Sage Weil Date: Tue, 22 Dec 2015 21:11:48 +0000 (-0500) Subject: os/bluestore/BlueFS: implement invalidate_cache X-Git-Tag: v10.0.3~154^2~61 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=5662bd8b2e188f6b1a700866b4c9fafd3c2c5da9;p=ceph.git os/bluestore/BlueFS: implement invalidate_cache Signed-off-by: Sage Weil --- diff --git a/src/os/bluestore/BlueFS.cc b/src/os/bluestore/BlueFS.cc index adaaaf49623..56d7f4af8f5 100644 --- a/src/os/bluestore/BlueFS.cc +++ b/src/os/bluestore/BlueFS.cc @@ -681,7 +681,19 @@ void BlueFS::_invalidate_cache(FileRef f, uint64_t offset, uint64_t length) { dout(10) << __func__ << " file " << f->fnode << " " << offset << "~" << length << dendl; -#warning implement _invalidate_cache + if (offset & ~super.block_mask()) { + offset &= super.block_mask(); + length = ROUND_UP_TO(length, super.block_size); + } + uint64_t x_off = 0; + vector::iterator p = f->fnode.seek(offset, &x_off); + while (length > 0 && p != f->fnode.extents.end()) { + uint64_t x_len = MIN(p->length - x_off, length); + bdev[p->bdev]->invalidate_cache(p->offset + x_off, x_len); + dout(20) << " " << x_off << "~" << x_len << " of " << *p << dendl; + offset += x_len; + length -= x_len; + } } uint64_t BlueFS::_estimate_log_size()