aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2007-12-19 15:05:15 +0000
committerKeir Fraser <keir.fraser@citrix.com>2007-12-19 15:05:15 +0000
commitdb9b8625ccaa654a9f0395ef500ee83f7b662320 (patch)
treedb011f722327f5a013ab2df3d28e897a1f02944b
parentbe169a04bc6b64b1acd881a54203d2788573364c (diff)
downloadxen-db9b8625ccaa654a9f0395ef500ee83f7b662320.tar.gz
xen-db9b8625ccaa654a9f0395ef500ee83f7b662320.tar.bz2
xen-db9b8625ccaa654a9f0395ef500ee83f7b662320.zip
tools/examples/block better use of losetup -r
Use losetup -r when the vbd is specified to be readonly, but only if -r is supported (rather than always creating a writeable losetup mapping if possible). This was inspired by (but not derived from) a diff from the Fedora 8 patchset which uses -r iff the vbd is specified as readonly. We need to be cleverer upstream because not all systems have losetup -r. Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
-rw-r--r--tools/examples/block9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/examples/block b/tools/examples/block
index cd7bd78107..f946784f03 100644
--- a/tools/examples/block
+++ b/tools/examples/block
@@ -327,10 +327,13 @@ mount it read-write in a guest domain."
fatal 'Failed to find an unused loop device'
fi
- status=$(losetup "$loopdev" "$file" || echo "failed")
- if [ -n "$status" ]; then
- do_or_die losetup -r "$loopdev" "$file"
+ if LANG=C losetup -h 2>&1 | grep read-only >/dev/null
+ then
+ roflag="-$mode"; roflag="${roflag#-w}"
+ else
+ roflag=''
fi
+ do_or_die losetup $roflag "$loopdev" "$file"
xenstore_write "$XENBUS_PATH/node" "$loopdev"
write_dev "$loopdev"
release_lock "block"