X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/404c5d56e441fda9f4f266e49c09871ae4e03963..2d30a417c2362b797b83c98f038a47a655a07180:/src/plugins/file_system/s4u_FileSystem.cpp diff --git a/src/plugins/file_system/s4u_FileSystem.cpp b/src/plugins/file_system/s4u_FileSystem.cpp index b29dd66d3d..bfa07cc1c0 100644 --- a/src/plugins/file_system/s4u_FileSystem.cpp +++ b/src/plugins/file_system/s4u_FileSystem.cpp @@ -5,6 +5,7 @@ #include "simgrid/plugins/file_system.h" #include "simgrid/s4u/Actor.hpp" +#include "simgrid/s4u/Comm.hpp" #include "simgrid/s4u/Engine.hpp" #include "src/surf/HostImpl.hpp" #include "src/surf/xml/platf_private.hpp" @@ -36,9 +37,9 @@ namespace s4u { simgrid::xbt::Extension FileSystemDiskExt::EXTENSION_ID; simgrid::xbt::Extension FileDescriptorHostExt::EXTENSION_ID; -Disk* File::find_local_disk_on(const Host* host) +const Disk* File::find_local_disk_on(const Host* host) { - Disk* d = nullptr; + const Disk* d = nullptr; size_t longest_prefix_length = 0; for (auto const& disk : host->get_disks()) { std::string current_mount; @@ -52,15 +53,15 @@ Disk* File::find_local_disk_on(const Host* host) longest_prefix_length = current_mount.length(); d = disk; } - if (longest_prefix_length > 0) { /* Mount point found, split fullpath_ into mount_name and path+filename*/ - mount_point_ = fullpath_.substr(0, longest_prefix_length); - if (mount_point_ == std::string("/")) - path_ = fullpath_; - else - path_ = fullpath_.substr(longest_prefix_length, fullpath_.length()); - XBT_DEBUG("%s + %s", mount_point_.c_str(), path_.c_str()); - } else - xbt_die("Can't find mount point for '%s' on '%s'", fullpath_.c_str(), host->get_cname()); + xbt_assert(longest_prefix_length > 0, "Can't find mount point for '%s' on '%s'", fullpath_.c_str(), + host->get_cname()); + /* Mount point found, split fullpath_ into mount_name and path+filename*/ + mount_point_ = fullpath_.substr(0, longest_prefix_length); + if (mount_point_ == std::string("/")) + path_ = fullpath_; + else + path_ = fullpath_.substr(longest_prefix_length, fullpath_.length()); + XBT_DEBUG("%s + %s", mount_point_.c_str(), path_.c_str()); } return d; } @@ -141,7 +142,7 @@ sg_size_t File::read(sg_size_t size) if (host && host->get_name() != Host::current()->get_name() && read_size > 0) { /* the file is hosted on a remote host, initiate a communication between src and dest hosts for data transfer */ XBT_DEBUG("File is on %s remote host, initiate data transfer of %llu bytes.", host->get_cname(), read_size); - host->sendto(Host::current(), read_size); + Comm::sendto(host, Host::current(), read_size); } return read_size; @@ -165,7 +166,7 @@ sg_size_t File::write(sg_size_t size, bool write_inside) if (host && host->get_name() != Host::current()->get_name()) { /* the file is hosted on a remote host, initiate a communication between src and dest hosts for data transfer */ XBT_DEBUG("File is on %s remote host, initiate data transfer of %llu bytes.", host->get_cname(), size); - Host::current()->sendto(host, size); + Comm::sendto(Host::current(), host, size); } XBT_DEBUG("WRITE %s on disk '%s'. size '%llu/%llu' '%llu:%llu'", get_path(), local_disk_->get_cname(), size, size_, sg_disk_get_size_used(local_disk_), sg_disk_get_size(local_disk_)); @@ -307,7 +308,7 @@ int File::remote_copy(sg_host_t host, const std::string& fullpath) if (src_host) { XBT_DEBUG("Initiate data transfer of %llu bytes between %s and %s.", read_size, src_host->get_cname(), dst_host->get_cname()); - src_host->sendto(dst_host, read_size); + Comm::sendto(src_host, dst_host, read_size); } /* Create file on remote host, write it and close it */