MCPcopy Create free account
hub / github.com/deepseek-ai/3FS / writeToChunks

Method writeToChunks

tests/lib/UnitTestFabric.cc:703–791  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

701}
702
703bool UnitTestFabric::writeToChunks(storage::ChainId chainId,
704 storage::ChunkId chunkBegin,
705 storage::ChunkId chunkEnd,
706 std::span<uint8_t> chunkData,
707 uint32_t offset,
708 uint32_t length,
709 const storage::client::WriteOptions &options,
710 std::vector<storage::IOResult> *results) {
711 // register a block of memory
712
713 if (length == 0) {
714 length = chunkData.size();
715 }
716
717 auto regRes = storageClient_->registerIOBuffer(&chunkData[0], chunkData.size());
718
719 if (!regRes) {
720 return false;
721 }
722
723 auto ioBuffer = std::move(*regRes);
724
725 // create write IOs
726
727 std::vector<storage::client::WriteIO> writeIOs;
728 storage::ChunkId chunkId = chunkBegin;
729
730 for (uint32_t chunkIndex = 0; chunkId < chunkEnd; chunkId = storage::ChunkId(chunkBegin, ++chunkIndex)) {
731 auto writeIO = storageClient_->createWriteIO(chainId,
732 chunkId,
733 offset /*offset*/,
734 length /*length*/,
735 setupConfig_.chunk_size() /*chunkSize*/,
736 &chunkData[0],
737 &ioBuffer);
738 writeIOs.push_back(std::move(writeIO));
739 }
740
741 flat::UserInfo dummyUserInfo{};
742 std::vector<folly::SemiFuture<folly::Expected<folly::Unit, hf3fs::Status>>> ioTasks;
743
744 for (auto &writeIO : writeIOs) {
745 auto task = storageClient_->write(writeIO, dummyUserInfo, options).scheduleOn(&requestExe_).start();
746 ioTasks.push_back(std::move(task));
747 }
748
749 folly::coro::blockingWait(folly::coro::collectAllRange(std::move(ioTasks)));
750
751 for (size_t writeIndex = 0; writeIndex < writeIOs.size(); writeIndex++) {
752 const auto &writeIO = writeIOs[writeIndex];
753
754 if (results) results->push_back(writeIO.result);
755
756 if (!writeIO.result.lengthInfo) {
757 XLOGF(ERR,
758 "Write IO #{}/{} to chunk {} on {}: error code {}",
759 writeIndex + 1,
760 writeIOs.size(),

Callers

nothing calls this directly

Calls 10

registerIOBufferMethod · 0.80
createWriteIOMethod · 0.80
push_backMethod · 0.80
ChunkIdClass · 0.50
sizeMethod · 0.45
chunk_sizeMethod · 0.45
startMethod · 0.45
writeMethod · 0.45
errorMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected