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.
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;
}