From: Matt Benjamin Date: Tue, 24 Mar 2026 18:10:28 +0000 (-0400) Subject: rgw/posix: fix cached size of uploaded objects X-Git-Tag: v21.0.1~82^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=60c28bc854e193621906878c43d6e852f504ed0b;p=ceph.git rgw/posix: fix cached size of uploaded objects Moves file open and stat into the (atomic) link step, so size is correctly interned in the cache. Fix suggested by dang. Signed-off-by: Matt Benjamin --- diff --git a/src/rgw/driver/posix/rgw_sal_posix.cc b/src/rgw/driver/posix/rgw_sal_posix.cc index edd98baa992..6295d5db243 100644 --- a/src/rgw/driver/posix/rgw_sal_posix.cc +++ b/src/rgw/driver/posix/rgw_sal_posix.cc @@ -754,6 +754,19 @@ int File::link_temp_file(const DoutPrefixProvider *dpp, optional_yield y, std::s return -ret; } + /* note that open() and stat() return already sign-reversed result codes */ + ret = open(dpp); + if (ret < 0) { + ldpp_dout(dpp, 20) << "ERROR: POSIXAtomicWriter failed opening file" << dendl; + return ret; + } + + ret = stat(dpp); + if (ret < 0) { + ldpp_dout(dpp, 20) << "ERROR: POSIXAtomicWriter failed closing file" << dendl; + return ret; + } + return 0; } @@ -4368,18 +4381,6 @@ int POSIXAtomicWriter::complete(size_t accounted_size, const std::string& etag, return ret; } - ret = obj->open(dpp); - if (ret < 0) { - ldpp_dout(rctx.dpp, 20) << "ERROR: POSIXAtomicWriter failed opening file" << dendl; - return ret; - } - - ret = obj->stat(dpp); - if (ret < 0) { - ldpp_dout(rctx.dpp, 20) << "ERROR: POSIXAtomicWriter failed closing file" << dendl; - return ret; - } - return 0; }