diff options
author | Nick Kralevich <nnk@google.com> | 2015-02-06 20:27:11 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-02-06 20:27:12 +0000 |
commit | 17b5b3520094de679c9e43a872c02d15758c83b8 (patch) | |
tree | c76cf5b81a708a4c8f53e615c7b07f1d31834361 | |
parent | 6289412222bfe26ebeef2ea9c422e828c11ffc30 (diff) | |
parent | 7294eb6cae4b201c481b2a171d042c56b810b8b3 (diff) | |
download | system_core-17b5b3520094de679c9e43a872c02d15758c83b8.zip system_core-17b5b3520094de679c9e43a872c02d15758c83b8.tar.gz system_core-17b5b3520094de679c9e43a872c02d15758c83b8.tar.bz2 |
Merge "fs_mgr: error check umount calls / add retry logic"
-rw-r--r-- | fs_mgr/fs_mgr.c | 16 | ||||
-rw-r--r-- | fs_mgr/fs_mgr_priv.h | 1 |
2 files changed, 14 insertions, 3 deletions
diff --git a/fs_mgr/fs_mgr.c b/fs_mgr/fs_mgr.c index fa52d16..a1391e0 100644 --- a/fs_mgr/fs_mgr.c +++ b/fs_mgr/fs_mgr.c @@ -119,7 +119,17 @@ static void check_fs(char *blk_device, char *fs_type, char *target) ret = mount(blk_device, target, fs_type, tmpmnt_flags, tmpmnt_opts); INFO("%s(): mount(%s,%s,%s)=%d\n", __func__, blk_device, target, fs_type, ret); if (!ret) { - umount(target); + int i; + for (i = 0; i < 5; i++) { + // Try to umount 5 times before continuing on. + // Should we try rebooting if all attempts fail? + int result = umount(target); + if (result == 0) { + break; + } + ERROR("%s(): umount(%s)=%d: %s\n", __func__, target, result, strerror(errno)); + sleep(1); + } } /* @@ -488,8 +498,8 @@ int fs_mgr_mount_all(struct fstab *fstab) encryptable = FS_MGR_MNTALL_DEV_MIGHT_BE_ENCRYPTED; } } else { - INFO("Could not umount %s - allow continue unencrypted\n", - fstab->recs[attempted_idx].mount_point); + WARNING("Could not umount %s (%s) - allow continue unencrypted\n", + fstab->recs[attempted_idx].mount_point, strerror(errno)); continue; } } diff --git a/fs_mgr/fs_mgr_priv.h b/fs_mgr/fs_mgr_priv.h index 34938fa..4ba6f92 100644 --- a/fs_mgr/fs_mgr_priv.h +++ b/fs_mgr/fs_mgr_priv.h @@ -21,6 +21,7 @@ #include <fs_mgr.h> #define INFO(x...) KLOG_INFO("fs_mgr", x) +#define WARNING(x...) KLOG_WARNING("fs_mgr", x) #define ERROR(x...) KLOG_ERROR("fs_mgr", x) #define CRYPTO_TMPFS_OPTIONS "size=256m,mode=0771,uid=1000,gid=1000" |