From 9f90735d37c0dfa0feb2a19c4528184bc7502e9f Mon Sep 17 00:00:00 2001 From: Dan Goodliffe Date: Sun, 20 Jul 2025 16:34:30 +0100 Subject: Don't pointlessly collect all the background functions of batch writes --- netfs/fuse/fuseFiles.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/netfs/fuse/fuseFiles.cpp b/netfs/fuse/fuseFiles.cpp index 61f965a..c5f2314 100644 --- a/netfs/fuse/fuseFiles.cpp +++ b/netfs/fuse/fuseFiles.cpp @@ -189,7 +189,6 @@ namespace NetFS { { try { using BackgroundOps = std::vector>>; - using BackgroundFuncs = std::vector>; auto cpy = [buf](off_t blockOffset, const auto && data) -> int { std::copy(data.begin(), data.end(), buf + blockOffset); return safe {data.size()}; @@ -203,13 +202,11 @@ namespace NetFS { auto remote = openFile->remote; auto blockSizes = openFile->blockSizes(size); if (fcr->Async) { - BackgroundFuncs fs; BackgroundOps ops; blockSizeIterate(blockSizes, - [&ops, &fs, &offset, &openFile, &remote, blockOffset = 0U, &cpy]( - safe blockSize) mutable { + [&ops, &offset, &openFile, &remote, blockOffset = 0U, &cpy](safe blockSize) mutable { const auto p = appendNewDefault(ops); - fs.push_back(waitOnWriteRangeAndThen(blockSize, offset, openFile, + waitOnWriteRangeAndThen(blockSize, offset, openFile, [p, offset, blockOffset, blockSize, &remote, &cpy](const auto &) { return remote->readAsync( offset, blockSize, @@ -220,26 +217,25 @@ namespace NetFS { [p](auto error) { p->set_exception(std::move(error)); }); - })); + }); offset += blockSize; blockOffset += blockSize; }); return collateTotal(ops); } if (openFile->bodyMaxSize < size) { - BackgroundFuncs fs; BackgroundOps ops; - blockSizeIterate(blockSizes, - [&offset, &remote, blockOffset = 0U, &ops, &fs, &cpy](safe blockSize) mutable { + blockSizeIterate( + blockSizes, [&offset, &remote, blockOffset = 0U, &ops, &cpy](safe blockSize) mutable { const auto p = appendNewDefault(ops); - fs.push_back(remote->readAsync( + remote->readAsync( offset, blockSize, [cpy, p, blockOffset](auto && resultBuf) { p->set_value(cpy(blockOffset, std::forward(resultBuf))); }, [p](auto error) { p->set_exception(std::move(error)); - })); + }); offset += blockSize; blockOffset += blockSize; }); -- cgit v1.2.3