summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid 'Digit' Turner <digit@google.com>2014-02-17 11:14:44 +0100
committerDavid 'Digit' Turner <digit@google.com>2014-02-24 23:32:00 +0100
commit28483d7ec497e06850be1d8f87d7fa522c8ab9d4 (patch)
tree696ce2045c14970de11f4b1a51521e229987bab0
parentdeb3eecd061e8a3a5f19ef5e10296f248f247881 (diff)
downloadsystem_core-28483d7ec497e06850be1d8f87d7fa522c8ab9d4.zip
system_core-28483d7ec497e06850be1d8f87d7fa522c8ab9d4.tar.gz
system_core-28483d7ec497e06850be1d8f87d7fa522c8ab9d4.tar.bz2
fs_mgr: Don't run e2fsck inside SDK system images.
These images do not have GPL-ed binaries like /system/bin/e2fsck so avoid running the program when we detect that we're running inside one of them. Note that this does not affect other emulator-based build products (e..g full-eng instead of sdk-eng), which do have the binaries. BUG=13057123 Change-Id: Ia42f1d02a3845fbf4b2f9d95818f35d760711a12
-rw-r--r--fs_mgr/fs_mgr.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/fs_mgr/fs_mgr.c b/fs_mgr/fs_mgr.c
index 4c2f247..dcda005 100644
--- a/fs_mgr/fs_mgr.c
+++ b/fs_mgr/fs_mgr.c
@@ -116,15 +116,24 @@ static void check_fs(char *blk_device, char *fs_type, char *target)
umount(target);
}
- INFO("Running %s on %s\n", E2FSCK_BIN, blk_device);
+ /*
+ * Some system images do not have e2fsck for licensing reasons
+ * (e.g. recent SDK system images). Detect these and skip the check.
+ */
+ if (access(E2FSCK_BIN, X_OK)) {
+ INFO("Not running %s on %s (executable not in system image)\n",
+ E2FSCK_BIN, blk_device);
+ } else {
+ INFO("Running %s on %s\n", E2FSCK_BIN, blk_device);
- ret = android_fork_execvp_ext(ARRAY_SIZE(e2fsck_argv), e2fsck_argv,
- &status, true, LOG_KLOG | LOG_FILE,
- true, FSCK_LOG_FILE);
+ ret = android_fork_execvp_ext(ARRAY_SIZE(e2fsck_argv), e2fsck_argv,
+ &status, true, LOG_KLOG | LOG_FILE,
+ true, FSCK_LOG_FILE);
- if (ret < 0) {
- /* No need to check for error in fork, we can't really handle it now */
- ERROR("Failed trying to run %s\n", E2FSCK_BIN);
+ if (ret < 0) {
+ /* No need to check for error in fork, we can't really handle it now */
+ ERROR("Failed trying to run %s\n", E2FSCK_BIN);
+ }
}
}