fs_mgr: error check umount calls / add retry logic
Don't silently ignore umount errors. At a minimum, log them. Add strerror(errno) to another umount call, to make sure we get some actionable data. check_fs: try 5 times umounting the filesystem. It appears that the umount is failing, perhaps because some service is opening the file on the device or other error. Try unmounting it multiple times in case it's a transient problem and we can recover. Bug: 19199624 Bug: 19156134 Change-Id: I7213eb52d55116fb2419a36494d26d5e159981a7
This commit is contained in:
parent
f52338fe1e
commit
7294eb6cae
2 changed files with 14 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
|
|
Loading…
Reference in a new issue