[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 bac71019f6aacc8393eddfb7f28a3972d253ea50 # Parent d47438cf9fcb8514b12f890ca161f77597f058a8 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 d47438cf9fcb -r bac71019f6aa tools/examples/block --- a/tools/examples/block Wed Mar 8 22:57:27 2006 +++ b/tools/examples/block Wed Mar 8 22:57:34 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 |