|
|
|
|
|
|
|
|
|
|
xen-changelog
[Xen-changelog] Cope when the filename returned by losetup for an existi
# 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
|
|
|
|
|