mount: if unmount failed, do not proceed

This commit is contained in:
Girish Ramakrishnan
2021-06-22 09:53:31 -07:00
parent 5040b4f3f9
commit 15ff43369f
2 changed files with 9 additions and 4 deletions
+2 -1
View File
@@ -158,7 +158,8 @@ async function tryAddMount(volume, options) {
if (!safe.fs.writeFileSync(keyFilePath, `${volume.mountOptions.privateKey}\n`, { mode: 0o600 })) throw new BoxError(BoxError.FS_ERROR, safe.error);
}
await safe(shell.promises.sudo('addMount', [ ADD_MOUNT_CMD, renderMountFile(volume), options.timeout ], {}));
const [error] = await safe(shell.promises.sudo('addMount', [ ADD_MOUNT_CMD, renderMountFile(volume), options.timeout ], {}));
if (error && error.code === 2) throw new BoxError(BoxError.MOUNT_ERROR, 'Failed to unmount existing mount'); // at this point, the old mount config is still there
const status = await getStatus(volume.mountType, volume.hostPath);
if (status.state !== 'active') { // cleanup
+7 -3
View File
@@ -27,9 +27,13 @@ mount_filename=$(systemd-escape -p --suffix=mount "$where")
mount_file="/etc/systemd/system/${mount_filename}"
# cleanup any previous mount of same name (after midway box crash?)
if systemctl -q is-active mnt-volumes-ext4data.mount; then
if systemctl -q is-active "${mount_filename}"; then
echo "Previous mount active, unmounting"
systemctl stop "${mount_filename}" || true
# unmounting can fail if a user is cd'ed into the directory. if we go ahead and mount anyway, systemd says "active" because it's referring to the previous mount config
if ! systemctl stop "${mount_filename}"; then
echo "Failed to unmount"
exit 2
fi
fi
echo "$mount_file_contents" > "${mount_file}"
@@ -38,7 +42,7 @@ systemctl daemon-reload
if ! timeout "${timeout}" systemctl enable --now "${mount_filename}"; then
echo "Failed to mount"
exit 1
exit 3
fi
echo "Mount succeeded"