Loading src/master.cpp +46 −32 Original line number Diff line number Diff line Loading @@ -395,11 +395,16 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { auto fs = FSPlugin::make_fs( static_cast<cargo::FSPlugin::type>(s.get_type())); struct stat buf; fs->stat(p, &buf); if(buf.st_mode & S_IFDIR) { auto rstat = fs->stat(p, &buf); if(rstat == 0 and (buf.st_mode & S_IFDIR)) { LOGGER_INFO("Expanding input directory {}", p); files = fs->readdir(p); // As we need to create a new directory, we need to order the files // so that directories are created in the correct order // Order the files alphabetically std::sort(files.begin(), files.end()); /* We have all the files expanded. Now create a new cargo::dataset for each file as s and a new Loading Loading @@ -430,15 +435,19 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { LOGGER_DEBUG("Expanded file {} -> {}", s_new.path(), d_new.path()); fs->stat(s_new.path(), &buf); rstat = fs->stat(s_new.path(), &buf); if(rstat == 0) { if(buf.st_mtime < now) { v_size_new.push_back(buf.st_size); v_s_new.push_back(s_new); v_d_new.push_back(d_new); } } // break; } } else { fs->stat(s.path(), &buf); rstat = fs->stat(s.path(), &buf); if(rstat == 0) { if(buf.st_mtime < now) { v_s_new.push_back(s); v_d_new.push_back(d); Loading @@ -446,6 +455,7 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { } } } } // empty m_expanded_sources pt.m_expanded_sources.assign(v_s_new.begin(), v_s_new.end()); Loading Loading @@ -578,12 +588,14 @@ master_server::transfer_datasets(const network::request& req, } else { // We do not create any optimization for single files fs->stat(s.path(), &buf); rstat = fs->stat(s.path(), &buf); if(rstat == 0) { v_size_new.push_back(buf.st_size); v_s_new.push_back(s); v_d_new.push_back(d); } } } m_request_manager.create(v_s_new.size(), world.size() - 1) .or_else([&](auto&& ec) { Loading @@ -594,7 +606,8 @@ master_server::transfer_datasets(const network::request& req, .map([&](auto&& r) { assert(v_s_new.size() == v_d_new.size()); if(m_ftio) { // if(sources[0].get_type() == cargo::dataset::type::gekkofs) { // if(sources[0].get_type() == // cargo::dataset::type::gekkofs) { // We have only one pendingTransfer for FTIO // that can be updated, the issue is that we Loading @@ -613,11 +626,12 @@ master_server::transfer_datasets(const network::request& req, // Create the directory if it does not exist (only in // parallel transfer) if(!std::filesystem::path(d.path()).parent_path().empty() and if(!std::filesystem::path(d.path()) .parent_path() .empty() and d.supports_parallel_transfer()) { std::filesystem::create_directories( std::filesystem::path(d.path()).parent_path()); LOGGER_INFO("Created directory {}", std::filesystem::path(d.path()).parent_path()); } } Loading Loading
src/master.cpp +46 −32 Original line number Diff line number Diff line Loading @@ -395,11 +395,16 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { auto fs = FSPlugin::make_fs( static_cast<cargo::FSPlugin::type>(s.get_type())); struct stat buf; fs->stat(p, &buf); if(buf.st_mode & S_IFDIR) { auto rstat = fs->stat(p, &buf); if(rstat == 0 and (buf.st_mode & S_IFDIR)) { LOGGER_INFO("Expanding input directory {}", p); files = fs->readdir(p); // As we need to create a new directory, we need to order the files // so that directories are created in the correct order // Order the files alphabetically std::sort(files.begin(), files.end()); /* We have all the files expanded. Now create a new cargo::dataset for each file as s and a new Loading Loading @@ -430,15 +435,19 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { LOGGER_DEBUG("Expanded file {} -> {}", s_new.path(), d_new.path()); fs->stat(s_new.path(), &buf); rstat = fs->stat(s_new.path(), &buf); if(rstat == 0) { if(buf.st_mtime < now) { v_size_new.push_back(buf.st_size); v_s_new.push_back(s_new); v_d_new.push_back(d_new); } } // break; } } else { fs->stat(s.path(), &buf); rstat = fs->stat(s.path(), &buf); if(rstat == 0) { if(buf.st_mtime < now) { v_s_new.push_back(s); v_d_new.push_back(d); Loading @@ -446,6 +455,7 @@ master_server::transfer_dataset_internal(pending_transfer& pt) { } } } } // empty m_expanded_sources pt.m_expanded_sources.assign(v_s_new.begin(), v_s_new.end()); Loading Loading @@ -578,12 +588,14 @@ master_server::transfer_datasets(const network::request& req, } else { // We do not create any optimization for single files fs->stat(s.path(), &buf); rstat = fs->stat(s.path(), &buf); if(rstat == 0) { v_size_new.push_back(buf.st_size); v_s_new.push_back(s); v_d_new.push_back(d); } } } m_request_manager.create(v_s_new.size(), world.size() - 1) .or_else([&](auto&& ec) { Loading @@ -594,7 +606,8 @@ master_server::transfer_datasets(const network::request& req, .map([&](auto&& r) { assert(v_s_new.size() == v_d_new.size()); if(m_ftio) { // if(sources[0].get_type() == cargo::dataset::type::gekkofs) { // if(sources[0].get_type() == // cargo::dataset::type::gekkofs) { // We have only one pendingTransfer for FTIO // that can be updated, the issue is that we Loading @@ -613,11 +626,12 @@ master_server::transfer_datasets(const network::request& req, // Create the directory if it does not exist (only in // parallel transfer) if(!std::filesystem::path(d.path()).parent_path().empty() and if(!std::filesystem::path(d.path()) .parent_path() .empty() and d.supports_parallel_transfer()) { std::filesystem::create_directories( std::filesystem::path(d.path()).parent_path()); LOGGER_INFO("Created directory {}", std::filesystem::path(d.path()).parent_path()); } } Loading