summaryrefslogtreecommitdiffstats
path: root/src/mds/CDir.cc
diff options
context:
space:
mode:
authorVenky Shankar <vshankar@redhat.com>2024-07-17 12:05:45 +0200
committerIgor Golikov <igolikov@ibm.com>2024-11-18 11:29:40 +0100
commit265e6785be0071942420acf2bdf067d6c0340eaa (patch)
treeb552742fd44a43286ea9d13032c9f5254a90ae68 /src/mds/CDir.cc
parentMerge pull request #60655 from xxhdx1985126/wip-seastore-move-out-root-meta (diff)
downloadceph-265e6785be0071942420acf2bdf067d6c0340eaa.tar.xz
ceph-265e6785be0071942420acf2bdf067d6c0340eaa.zip
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 <vshankar@redhat.com>
Diffstat (limited to '')
-rw-r--r--src/mds/CDir.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mds/CDir.cc b/src/mds/CDir.cc
index af9f8edfffa..7d28e039d9c 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;