From 265e6785be0071942420acf2bdf067d6c0340eaa Mon Sep 17 00:00:00 2001 From: Venky Shankar Date: Wed, 17 Jul 2024 10:05:45 +0000 Subject: [PATCH] mds: account for header size during omap commit fnode_t is set in the omap header during directory commit operation which isn't accounted when tracking operation size. Fixes: http://tracker.ceph.com/issues/67597 Signed-off-by: Venky Shankar --- src/mds/CDir.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc index af9f8edfffa5b..7d28e039d9c01 100644 --- a/src/mds/CDir.cc +++ b/src/mds/CDir.cc @@ -2494,6 +2494,10 @@ void CDir::_omap_commit_ops(int r, int op_prio, int64_t metapool, version_t vers mdcache->mds->heartbeat_reset(); } + // the last omap commit includes the omap header, so account for + // that size early on so that when we reach `commit_one(true)`, + // there is enough space for the header. + write_size += sizeof(fnode_t); using ceph::encode; for (auto &item : to_set) { bufferlist bl;