mSavedDirtyRatio = -1;
// set dirty ratio to 0 when UMS is active
mUmsDirtyRatio = 0;
+ mVolManagerDisabled = 0;
}
VolumeManager::~VolumeManager() {
return -1;
}
+ if (mVolManagerDisabled) {
+ errno = EBUSY;
+ return -1;
+ }
+
return v->formatVol();
}
return -1;
}
+ if (mVolManagerDisabled) {
+ errno = EBUSY;
+ return -1;
+ }
+
dev_t d = v->getShareDevice();
if ((MAJOR(d) == 0) && (MINOR(d) == 0)) {
// This volume does not support raw disk access
return 0;
}
-extern "C" int vold_unmountVol(const char *label) {
+extern "C" int vold_disableVol(const char *label) {
VolumeManager *vm = VolumeManager::Instance();
+ vm->disableVolumeManager();
+ vm->unshareVolume(label, "ums");
return vm->unmountVolume(label, true);
}
int mUmsSharingCount;
int mSavedDirtyRatio;
int mUmsDirtyRatio;
+ int mVolManagerDisabled;
public:
virtual ~VolumeManager();
int unshareVolume(const char *label, const char *method);
int shareEnabled(const char *path, const char *method, bool *enabled);
int formatVolume(const char *label);
+ void disableVolumeManager(void) { mVolManagerDisabled = 1; }
/* ASEC */
int createAsec(const char *id, unsigned numSectors, const char *fstype,
extern "C" {
#endif /* __cplusplus */
#define UNMOUNT_NOT_MOUNTED_ERR -2
- int vold_unmountVol(const char *label);
+ int vold_disableVol(const char *label);
int vold_getNumDirectVolumes(void);
int vold_getDirectVolumeList(struct volume_info *v);
#ifdef __cplusplus
}
close(fd);
- ret=vold_unmountVol(vol_list[i].label);
+ ret=vold_disableVol(vol_list[i].label);
if ((ret < 0) && (ret != UNMOUNT_NOT_MOUNTED_ERR)) {
/* -2 is returned when the device exists but is not currently mounted.
* ignore the error and continue. */