core: try again bind mounting if the destination was already created
If the destination mount point is on a shared filesystem and is missing on the first attempt, we try to create it, but then fail with -EEXIST if something else created it in the meanwhile. Enter the retry logic on EEXIST, as we can just use the mount point if it was already created. Fixes https://github.com/systemd/systemd/issues/29690
This commit is contained in:
committed by
Luca Boccassi
parent
c5822010ae
commit
c3f0f6f8bd
@@ -1762,11 +1762,11 @@ static int apply_one_mount(
|
||||
(void) mkdir_parents(mount_entry_path(m), 0755);
|
||||
|
||||
q = make_mount_point_inode_from_path(what, mount_entry_path(m), 0755);
|
||||
if (q < 0) {
|
||||
if (q != -EEXIST) // FIXME: this shouldn't be logged at LOG_WARNING, but be bubbled up, and logged there to avoid duplicate logging
|
||||
log_warning_errno(q, "Failed to create destination mount point node '%s', ignoring: %m",
|
||||
mount_entry_path(m));
|
||||
} else
|
||||
if (q < 0 && q != -EEXIST)
|
||||
// FIXME: this shouldn't be logged at LOG_WARNING, but be bubbled up, and logged there to avoid duplicate logging
|
||||
log_warning_errno(q, "Failed to create destination mount point node '%s', ignoring: %m",
|
||||
mount_entry_path(m));
|
||||
else
|
||||
try_again = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user