switch-root: also check that mount IDs are the same, not just inodes
If /run/nextroot/ has been set up, use it, even if the inodes are the same. It could be a verity device that is reused, but with different sub-mounts or other differences. Or the same / tmpfs with different /usr/ mounts. If it was explicitly set up we should use it. Use the new helper to check that the mount IDs are also the same, not just the inodes.
This commit is contained in:
@@ -63,11 +63,11 @@ int switch_root(const char *new_root,
|
||||
if (new_root_fd < 0)
|
||||
return log_error_errno(errno, "Failed to open target directory '%s': %m", new_root);
|
||||
|
||||
r = inode_same_at(old_root_fd, "", new_root_fd, "", AT_EMPTY_PATH);
|
||||
r = fds_are_same_mount(old_root_fd, new_root_fd);
|
||||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to determine if old and new root directory are the same: %m");
|
||||
return log_error_errno(r, "Failed to check if old and new root directory/mount are the same: %m");
|
||||
if (r > 0) {
|
||||
log_debug("Skipping switch root, as old and new root directory are the same.");
|
||||
log_debug("Skipping switch root, as old and new root directories/mounts are the same.");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user