X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/1a64ca4c11a1eb7ba2ecd102f877ac571486a034..5e9351c7145890c8105dd81af2f09cd6dc50383f:/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..12dd673424 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 */ @@ -328,7 +329,7 @@ FileSystemDiskExt::FileSystemDiskExt(const Disk* ptr) const char* size_str = ptr->get_property("size"); std::string dummyfile; if (size_str) - size_ = surf_parse_get_size(dummyfile, -1, size_str, "disk size", ptr->get_name()); + size_ = xbt_parse_get_size(dummyfile, -1, size_str, "disk size " + ptr->get_name()); const char* current_mount_str = ptr->get_property("mount"); if (current_mount_str)