Don't use dummy directory; directly use tmpfs

This commit is contained in:
topjohnwu 2017-09-27 04:35:16 +08:00
parent 6ce37b44db
commit 83af0497e4
3 changed files with 8 additions and 10 deletions

View File

@ -276,14 +276,13 @@ static void clone_skeleton(struct node_entry *node) {
} }
closedir(dir); closedir(dir);
snprintf(buf, PATH_MAX, "%s%s", DUMMDIR, full_path); if (node->status & IS_SKEL) {
mkdir_p(buf, 0755); LOGI("tmpfs: %s\n", full_path);
clone_attr(full_path, buf); mount("tmpfs", full_path, "tmpfs", 0, NULL);
if (node->status & IS_SKEL) }
bind_mount(buf, full_path);
vec_for_each(node->children, child) { vec_for_each(node->children, child) {
snprintf(buf, PATH_MAX, "%s%s/%s", DUMMDIR, full_path, child->name); snprintf(buf, PATH_MAX, "%s/%s", full_path, child->name);
// Create the dummy file/directory // Create the dummy file/directory
if (IS_DIR(child)) if (IS_DIR(child))
@ -303,7 +302,7 @@ static void clone_skeleton(struct node_entry *node) {
// Mount from module file to dummy file // Mount from module file to dummy file
snprintf(buf2, PATH_MAX, "%s/%s%s/%s", MOUNTPOINT, child->module, full_path, child->name); snprintf(buf2, PATH_MAX, "%s/%s%s/%s", MOUNTPOINT, child->module, full_path, child->name);
} else if (child->status & (IS_SKEL | IS_INTER)) { } else if (child->status & (IS_SKEL | IS_INTER)) {
// It's a intermediate folder, recursive clone // It's an intermediate folder, recursive clone
clone_skeleton(child); clone_skeleton(child);
continue; continue;
} else if (child->status & IS_DUMMY) { } else if (child->status & IS_DUMMY) {

View File

@ -31,7 +31,6 @@
#define MANAGERAPK DATABIN "/magisk.apk" #define MANAGERAPK DATABIN "/magisk.apk"
#define MAGISKTMP "/dev/magisk" #define MAGISKTMP "/dev/magisk"
#define MIRRDIR MAGISKTMP "/mirror" #define MIRRDIR MAGISKTMP "/mirror"
#define DUMMDIR MAGISKTMP "/dummy"
#define BBPATH MAGISKTMP "/bin" #define BBPATH MAGISKTMP "/bin"
#define CACHEMOUNT "/cache/magisk_mount" #define CACHEMOUNT "/cache/magisk_mount"

View File

@ -137,9 +137,9 @@ static void hide_daemon(int pid) {
vec_init(&mount_list); vec_init(&mount_list);
file_to_vector(buffer, &mount_list); file_to_vector(buffer, &mount_list);
// Unmount any loop mounts and dummy mounts // Unmount any loop mounts
vec_for_each(&mount_list, line) { vec_for_each(&mount_list, line) {
if (strstr(line, "/dev/block/loop") || strstr(line, DUMMDIR)) { if (strstr(line, "/dev/block/loop")) {
sscanf(line, "%*s %4096s", buffer); sscanf(line, "%*s %4096s", buffer);
lazy_unmount(buffer); lazy_unmount(buffer);
} }