diff options
author | Doug Zongker <dougz@android.com> | 2010-09-22 05:01:51 +0200 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2010-09-22 05:01:51 +0200 |
commit | af78591c9a2aa8379c2d8528c31ea1eb813f6cae (patch) | |
tree | ee7e6f6f3e148f3264befc46015085497c2a13e2 /roots.c | |
parent | am 93ca4fc6: use fs_type "emmc" instead of "block" for consistency (do not merge) (diff) | |
parent | Merge "mount sdcard only on demand; fix sideload installs" into gingerbread (diff) | |
download | android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar.gz android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar.bz2 android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar.lz android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar.xz android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.tar.zst android_bootable_recovery-af78591c9a2aa8379c2d8528c31ea1eb813f6cae.zip |
Diffstat (limited to 'roots.c')
-rw-r--r-- | roots.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -35,6 +35,13 @@ void load_volume_table() { int alloc = 2; device_volumes = malloc(alloc * sizeof(Volume)); + // Insert an entry for /tmp, which is the ramdisk and is always mounted. + device_volumes[0].mount_point = "/tmp"; + device_volumes[0].fs_type = "ramdisk"; + device_volumes[0].device = NULL; + device_volumes[0].device2 = NULL; + num_volumes = 1; + FILE* fstab = fopen("/etc/recovery.fstab", "r"); if (fstab == NULL) { LOGE("failed to open /etc/recovery.fstab (%s)\n", strerror(errno)); @@ -104,6 +111,10 @@ int ensure_path_mounted(const char* path) { LOGE("unknown volume for path [%s]\n", path); return -1; } + if (strcmp(v->fs_type, "ramdisk") == 0) { + // the ramdisk is always mounted. + return 0; + } int result; result = scan_mounted_volumes(); @@ -160,6 +171,10 @@ int ensure_path_unmounted(const char* path) { LOGE("unknown volume for path [%s]\n", path); return -1; } + if (strcmp(v->fs_type, "ramdisk") == 0) { + // the ramdisk is always mounted; you can't unmount it. + return -1; + } int result; result = scan_mounted_volumes(); @@ -184,6 +199,11 @@ int format_volume(const char* volume) { LOGE("unknown volume \"%s\"\n", volume); return -1; } + if (strcmp(v->fs_type, "ramdisk") == 0) { + // you can't format the ramdisk. + LOGE("can't format_volume \"%s\"", volume); + return -1; + } if (strcmp(v->mount_point, volume) != 0) { LOGE("can't give path \"%s\" to format_volume\n", volume); return -1; |