Give users and devices control over sdcardfs.
am: 20ca983
* commit '20ca9836b9a780c41a22850f478a29f29677553e':
Give users and devices control over sdcardfs.
Change-Id: I0144b346157952f79fdde5100f0fdc01daa58d9b
This commit is contained in:
commit
0762e99064
1 changed files with 28 additions and 1 deletions
|
|
@ -43,6 +43,7 @@
|
|||
#include <cutils/hashmap.h>
|
||||
#include <cutils/log.h>
|
||||
#include <cutils/multiuser.h>
|
||||
#include <cutils/properties.h>
|
||||
#include <packagelistparser/packagelistparser.h>
|
||||
|
||||
#include <private/android_filesystem_config.h>
|
||||
|
|
@ -89,6 +90,9 @@
|
|||
|
||||
#define ERROR(x...) ALOGE(x)
|
||||
|
||||
#define PROP_SDCARDFS_DEVICE "ro.sys.sdcardfs"
|
||||
#define PROP_SDCARDFS_USER "persist.sys.sdcardfs"
|
||||
|
||||
#define FUSE_UNKNOWN_INO 0xffffffff
|
||||
|
||||
/* Maximum number of bytes to write in one request. */
|
||||
|
|
@ -1993,6 +1997,29 @@ static bool supports_sdcardfs(void) {
|
|||
return false;
|
||||
}
|
||||
|
||||
static bool should_use_sdcardfs(void) {
|
||||
char property[PROPERTY_VALUE_MAX];
|
||||
|
||||
// Allow user to have a strong opinion about state
|
||||
property_get(PROP_SDCARDFS_USER, property, "");
|
||||
if (!strcmp(property, "force_on")) {
|
||||
ALOGW("User explicitly enabled sdcardfs");
|
||||
return supports_sdcardfs();
|
||||
} else if (!strcmp(property, "force_off")) {
|
||||
ALOGW("User explicitly disabled sdcardfs");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Fall back to device opinion about state
|
||||
if (property_get_bool(PROP_SDCARDFS_DEVICE, false)) {
|
||||
ALOGW("Device explicitly enabled sdcardfs");
|
||||
return supports_sdcardfs();
|
||||
} else {
|
||||
ALOGW("Device explicitly disabled sdcardfs");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
const char *source_path = NULL;
|
||||
const char *label = NULL;
|
||||
|
|
@ -2065,7 +2092,7 @@ int main(int argc, char **argv) {
|
|||
sleep(1);
|
||||
}
|
||||
|
||||
if (supports_sdcardfs()) {
|
||||
if (should_use_sdcardfs()) {
|
||||
run_sdcardfs(source_path, label, uid, gid, userid, multi_user, full_write);
|
||||
} else {
|
||||
run(source_path, label, uid, gid, userid, multi_user, full_write);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue