diff --git a/fs_mgr/fs_mgr.cpp b/fs_mgr/fs_mgr.cpp index 56ea92cf2..410209b9f 100644 --- a/fs_mgr/fs_mgr.cpp +++ b/fs_mgr/fs_mgr.cpp @@ -245,11 +245,11 @@ static void check_fs(const std::string& blk_device, const std::string& fs_type, if (should_force_check(*fs_stat)) { ret = android_fork_execvp_ext( ARRAY_SIZE(e2fsck_forced_argv), const_cast(e2fsck_forced_argv), &status, - true, LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), NULL, 0); + true, LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), nullptr, 0); } else { ret = android_fork_execvp_ext( ARRAY_SIZE(e2fsck_argv), const_cast(e2fsck_argv), &status, true, - LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), NULL, 0); + LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), nullptr, 0); } if (ret < 0) { @@ -263,13 +263,19 @@ static void check_fs(const std::string& blk_device, const std::string& fs_type, } } else if (is_f2fs(fs_type)) { const char* f2fs_fsck_argv[] = {F2FS_FSCK_BIN, "-a", blk_device.c_str()}; - LINFO << "Running " << F2FS_FSCK_BIN << " -a " << realpath(blk_device); + const char* f2fs_fsck_forced_argv[] = {F2FS_FSCK_BIN, "-f", blk_device.c_str()}; - ret = android_fork_execvp_ext(ARRAY_SIZE(f2fs_fsck_argv), - const_cast(f2fs_fsck_argv), - &status, true, LOG_KLOG | LOG_FILE, - true, const_cast(FSCK_LOG_FILE), - NULL, 0); + if (should_force_check(*fs_stat)) { + LINFO << "Running " << F2FS_FSCK_BIN << " -f " << realpath(blk_device); + ret = android_fork_execvp_ext( + ARRAY_SIZE(f2fs_fsck_forced_argv), const_cast(f2fs_fsck_forced_argv), &status, + true, LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), nullptr, 0); + } else { + LINFO << "Running " << F2FS_FSCK_BIN << " -a " << realpath(blk_device); + ret = android_fork_execvp_ext( + ARRAY_SIZE(f2fs_fsck_argv), const_cast(f2fs_fsck_argv), &status, true, + LOG_KLOG | LOG_FILE, true, const_cast(FSCK_LOG_FILE), nullptr, 0); + } if (ret < 0) { /* No need to check for error in fork, we can't really handle it now */ LERROR << "Failed trying to run " << F2FS_FSCK_BIN;