am 75a3e1a9: VOLD - make volume daemon to handle state change from shared to no_media

Merge commit '75a3e1a95af0a2790de1b12aeca0008bfdc61649' into gingerbread-plus-aosp

* commit '75a3e1a95af0a2790de1b12aeca0008bfdc61649':
  VOLD - make volume daemon to handle state change from shared to no_media
gugelfrei
Ethan 14 years ago committed by Android Git Automerger
commit 2c7d5761d2

@ -266,6 +266,7 @@ void DirectVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent *evt
int major = atoi(evt->findParam("MAJOR"));
int minor = atoi(evt->findParam("MINOR"));
char msg[255];
int state;
SLOGD("Volume %s %s partition %d:%d removed\n", getLabel(), getMountpoint(), major, minor);
@ -275,7 +276,8 @@ void DirectVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent *evt
* the removal notification will be sent on the Disk
* itself
*/
if (getState() != Volume::State_Mounted) {
state = getState();
if (state != Volume::State_Mounted && state != Volume::State_Shared) {
return;
}
@ -300,6 +302,19 @@ void DirectVolume::handlePartitionRemoved(const char *devpath, NetlinkEvent *evt
} else {
SLOGD("Crisis averted");
}
} else if (state == Volume::State_Shared) {
/* removed during mass storage */
snprintf(msg, sizeof(msg), "Volume %s bad removal (%d:%d)",
getLabel(), major, minor);
mVm->getBroadcaster()->sendBroadcast(ResponseCode::VolumeBadRemoval,
msg, false);
if (mVm->unshareVolume(getLabel(), "ums")) {
SLOGE("Failed to unshare volume on bad removal (%s)",
strerror(errno));
} else {
SLOGD("Crisis averted");
}
}
}

Loading…
Cancel
Save