[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] Cope when the filename returned by losetup for an existing loop device is not
# HG changeset patch # User emellor@xxxxxxxxxxxxxxxxxxxxxx # Node ID 871f768aadc621cf5e44e090c30293074aa27033 # Parent 1a1e3dcbbf19401bb13ff5f304bd2ab65f0af720 Cope when the filename returned by losetup for an existing loop device is not fully qualified. In this case, the readlink -f call to canonicalise that name fails. Closes bug #553. Signed-off-by: Ewan Mellor <ewan@xxxxxxxxxxxxx> diff -r 1a1e3dcbbf19 -r 871f768aadc6 tools/examples/block --- a/tools/examples/block Thu Mar 2 20:45:13 2006 +++ b/tools/examples/block Fri Mar 3 14:32:42 2006 @@ -321,7 +321,28 @@ fi fi - f=$(readlink -f "$f") + # Canonicalise the filename for the comparison. + + # I have seen this readlink fails because the filename given by + # losetup is only the basename. This cannot happen when the loop + # device is set up through this script, because file is + # canonicalised above, but it may happen when loop devices are set + # up some other way. This readlink may also conceivably fail if + # the file backing this loop device has been removed. + + # For maximum safety, in the case that $f does not resolve, we + # assume that $file and $f are in the same directory. + + # If you create a loopback filesystem, remove it and continue to + # run on it, and then create another file with the same name, then + # this check will block that -- don't do that. + + # If you create loop devices through some other mechanism, use + # relative filenames, and then use the same filename through this + # script, then this check will block that -- don't do that either. + + f=$(readlink -f "$f" || echo $(dirname "$file")/$(basename "$f")) + if [ "$f" == "$file" ] then _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |