From 096033b9d931312c0688c2eea7e14626bfde0ad7 Mon Sep 17 00:00:00 2001 From: Sage Weil Date: Mon, 1 Jul 2019 09:33:22 -0500 Subject: [PATCH] os/bluestore/bluefs_types: consolidate contiguous extents If we allocate a new extent that is contiguous with the last extent, just extend it. This avoids having long vectors of continguous extents when a single large extent would suffice--especially with log files. Signed-off-by: Sage Weil (cherry picked from commit 4f3ce9bc201c20d10d739d42e3f7018408f110a6) --- src/os/bluestore/bluefs_types.h | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/os/bluestore/bluefs_types.h b/src/os/bluestore/bluefs_types.h index 6e67f49bf70b..9c8511711b38 100644 --- a/src/os/bluestore/bluefs_types.h +++ b/src/os/bluestore/bluefs_types.h @@ -88,8 +88,14 @@ struct bluefs_fnode_t { } void append_extent(const bluefs_extent_t& ext) { - extents_index.emplace_back(allocated); - extents.push_back(ext); + if (!extents.empty() && + extents.back().end() == ext.offset && + (uint64_t)extents.back().length + (uint64_t)ext.length < 0xffffffff) { + extents.back().length += ext.length; + } else { + extents_index.emplace_back(allocated); + extents.push_back(ext); + } allocated += ext.length; } -- 2.47.3