diff --git a/model/PrivateVolume.cpp b/model/PrivateVolume.cpp index 75757f7..e146633 100644 --- a/model/PrivateVolume.cpp +++ b/model/PrivateVolume.cpp @@ -177,6 +177,10 @@ status_t PrivateVolume::doMount() { return -EIO; } + return OK; +} + +void PrivateVolume::doPostMount() { auto vol_manager = VolumeManager::Instance(); std::string mediaPath(mPath + "/media"); @@ -189,8 +193,6 @@ status_t PrivateVolume::doMount() { addVolume(vol); vol->create(); } - - return OK; } status_t PrivateVolume::doUnmount() { diff --git a/model/PrivateVolume.h b/model/PrivateVolume.h index 9780485..607c4d1 100644 --- a/model/PrivateVolume.h +++ b/model/PrivateVolume.h @@ -49,6 +49,7 @@ class PrivateVolume : public VolumeBase { status_t doCreate() override; status_t doDestroy() override; status_t doMount() override; + void doPostMount() override; status_t doUnmount() override; status_t doFormat(const std::string& fsType) override; diff --git a/model/VolumeBase.cpp b/model/VolumeBase.cpp index 687d4f7..27448da 100644 --- a/model/VolumeBase.cpp +++ b/model/VolumeBase.cpp @@ -232,9 +232,14 @@ status_t VolumeBase::mount() { status_t res = doMount(); setState(res == OK ? State::kMounted : State::kUnmountable); + if (res == OK) { + doPostMount(); + } return res; } +void VolumeBase::doPostMount() {} + status_t VolumeBase::unmount() { if (mState != State::kMounted) { LOG(WARNING) << getId() << " unmount requires state mounted"; diff --git a/model/VolumeBase.h b/model/VolumeBase.h index 078bb0c..689750d 100644 --- a/model/VolumeBase.h +++ b/model/VolumeBase.h @@ -120,6 +120,7 @@ class VolumeBase { virtual status_t doCreate(); virtual status_t doDestroy(); virtual status_t doMount() = 0; + virtual void doPostMount(); virtual status_t doUnmount() = 0; virtual status_t doFormat(const std::string& fsType);