Add back "unmountable" volume state.

Also automatically unmount when format is requested.

Bug: 19993667
Change-Id: I2c81b7ccc9d69df61d7ae4df1e8224c02f260044
gugelfrei
Jeff Sharkey 9 years ago
parent 9f18fe7807
commit 0fd9535474

@ -145,8 +145,8 @@ status_t VolumeBase::doDestroy() {
}
status_t VolumeBase::mount() {
if (mState != State::kUnmounted) {
LOG(WARNING) << getId() << " mount requires state unmounted";
if ((mState != State::kUnmounted) && (mState != State::kUnmountable)) {
LOG(WARNING) << getId() << " mount requires state unmounted or unmountable";
return -EBUSY;
}
@ -155,7 +155,7 @@ status_t VolumeBase::mount() {
if (res == OK) {
setState(State::kMounted);
} else {
setState(State::kUnmounted);
setState(State::kUnmountable);
}
return res;
@ -183,8 +183,12 @@ status_t VolumeBase::unmount() {
}
status_t VolumeBase::format() {
if (mState != State::kUnmounted) {
LOG(WARNING) << getId() << " format requires state unmounted";
if (mState == State::kMounted) {
unmount();
}
if ((mState != State::kUnmounted) && (mState != State::kUnmountable)) {
LOG(WARNING) << getId() << " format requires state unmounted or unmountable";
return -EBUSY;
}

@ -63,11 +63,18 @@ public:
};
enum class State {
/* Next states: mounting, formatting */
kUnmounted = 0,
/* Next states: mounted, unmountable */
kMounting,
/* Next states: unmounting */
kMounted,
/* Next states: unmounted */
kFormatting,
/* Next states: unmounted */
kUnmounting,
/* Next states: mounting, formatting */
kUnmountable,
};
const std::string& getId() { return mId; }

Loading…
Cancel
Save