From 4c482d8f677e4db90efe2944609c7a5a9671a542 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 12 Jul 2017 18:53:11 +0200 Subject: [PATCH] simplify mgmt of write on storage + cleanups decoupling files from storage model is one step closer --- src/surf/StorageImpl.cpp | 14 -------------- src/surf/StorageImpl.hpp | 9 +++++---- src/surf/storage_n11.cpp | 26 +++++--------------------- src/surf/storage_n11.hpp | 3 --- 4 files changed, 10 insertions(+), 42 deletions(-) diff --git a/src/surf/StorageImpl.cpp b/src/surf/StorageImpl.cpp index 1fb0fbcc67..03e1f87329 100644 --- a/src/surf/StorageImpl.cpp +++ b/src/surf/StorageImpl.cpp @@ -154,20 +154,6 @@ sg_size_t StorageImpl::getUsedSize() /********** * Action * **********/ -StorageAction::StorageAction(Model* model, double cost, bool failed, StorageImpl* storage, - e_surf_action_storage_type_t type) - : Action(model, cost, failed), type_(type), storage_(storage), file_(nullptr) -{ - progress_ = 0; -}; - -StorageAction::StorageAction(Model* model, double cost, bool failed, lmm_variable_t var, StorageImpl* storage, - e_surf_action_storage_type_t type) - : Action(model, cost, failed, var), type_(type), storage_(storage), file_(nullptr) -{ - progress_ = 0; -} - void StorageAction::setState(Action::State state) { Action::State old = getState(); diff --git a/src/surf/StorageImpl.hpp b/src/surf/StorageImpl.hpp index 97a3e7d588..c2ea20b3e0 100644 --- a/src/surf/StorageImpl.hpp +++ b/src/surf/StorageImpl.hpp @@ -185,7 +185,8 @@ public: * @param storage The Storage associated to this StorageAction * @param type [description] */ - StorageAction(Model* model, double cost, bool failed, StorageImpl* storage, e_surf_action_storage_type_t type); + StorageAction(Model* model, double cost, bool failed, StorageImpl* storage, e_surf_action_storage_type_t type) + : Action(model, cost, failed), type_(type), storage_(storage){}; /** * @brief StorageAction constructor @@ -198,14 +199,14 @@ public: * @param type [description] */ StorageAction(Model* model, double cost, bool failed, lmm_variable_t var, StorageImpl* storage, - e_surf_action_storage_type_t type); + e_surf_action_storage_type_t type) + : Action(model, cost, failed, var), type_(type), storage_(storage){}; void setState(simgrid::surf::Action::State state) override; e_surf_action_storage_type_t type_; StorageImpl* storage_; - FileImpl* file_; - double progress_; + FileImpl* file_ = nullptr; }; } } diff --git a/src/surf/storage_n11.cpp b/src/surf/storage_n11.cpp index 2ab9fced8e..dd44583307 100644 --- a/src/surf/storage_n11.cpp +++ b/src/surf/storage_n11.cpp @@ -80,34 +80,18 @@ void StorageN11Model::updateActionsState(double /*now*/, double delta) StorageAction *action = static_cast(&*it); - if (action->type_ == WRITE) { - // Update the disk usage - // Update the file size - // For each action of type write - double current_progress = delta * lmm_variable_getvalue(action->getVariable()); - long int incr = current_progress; - - XBT_DEBUG("%s:\n\t progress = %.2f, current_progress = %.2f, incr = %ld, lrint(1) = %ld, lrint(2) = %ld", - action->file_->cname(), action->progress_, current_progress, incr, - lrint(action->progress_ + current_progress), lrint(action->progress_) + incr); - - /* take care of rounding error accumulation */ - if (lrint(action->progress_ + current_progress) > lrint(action->progress_) + incr) - incr++; + double current_progress = lrint(lmm_variable_getvalue(action->getVariable()) * delta); - action->progress_ += current_progress; - - action->storage_->usedSize_ += incr; // disk usage - action->file_->incrPosition(incr); // current_position - // which becomes the new file size + action->updateRemains(current_progress); + if (action->type_ == WRITE) { + action->storage_->usedSize_ += current_progress; + action->file_->incrPosition(current_progress); action->file_->setSize(action->file_->tell()); action->storage_->getContent()->erase(action->file_->cname()); action->storage_->getContent()->insert({action->file_->cname(), action->file_->size()}); } - action->updateRemains(lmm_variable_getvalue(action->getVariable()) * delta); - if (action->getMaxDuration() > NO_MAX_DURATION) action->updateMaxDuration(delta); diff --git a/src/surf/storage_n11.hpp b/src/surf/storage_n11.hpp index 2da0174a66..42793eb325 100644 --- a/src/surf/storage_n11.hpp +++ b/src/surf/storage_n11.hpp @@ -44,11 +44,8 @@ public: StorageN11(StorageModel* model, const char* name, lmm_system_t maxminSystem, double bread, double bwrite, const char* type_id, char* content_name, sg_size_t size, char* attach); virtual ~StorageN11() = default; - StorageAction *open(const char* mount, const char* path); - StorageAction *ls(const char *path); StorageAction* read(sg_size_t size); StorageAction* write(sg_size_t size); - void rename(const char *src, const char *dest); }; /********** -- 2.20.1