summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard W.M. Jones <rjones@redhat.com>2011-03-28 13:35:53 +0100
committerRichard W.M. Jones <rjones@redhat.com>2011-03-28 14:21:55 +0100
commit4e529e06a4500959cd783f5029354fea47a253a6 (patch)
treefb90342de254f3188e56a8c412d991e7ae3eab6d
parentfeaddb062afcab9117215b4c2188f63d8b647b99 (diff)
downloadlibguestfs-4e529e06a4500959cd783f5029354fea47a253a6.tar.gz
libguestfs-4e529e06a4500959cd783f5029354fea47a253a6.tar.xz
libguestfs-4e529e06a4500959cd783f5029354fea47a253a6.zip
fish: fuse: Add -m dev:mnt:opts to allow mount options to be specified.
This lets you turn on ACLs and xattrs by doing: -m /dev/sda1:/:acl,user_xattr The extra parameter is passed through to mount_options: libguestfs: trace: mount_options "acl,user_xattr" "/dev/sda1" "/"
Notes
Notes: Labels: feature
-rw-r--r--fish/fish.c2
-rw-r--r--fish/guestfish.pod17
-rw-r--r--fish/options.c11
-rw-r--r--fish/options.h17
-rw-r--r--fuse/guestmount.pod14
5 files changed, 49 insertions, 12 deletions
diff --git a/fish/fish.c b/fish/fish.c
index 22f3359e..65a0c1dd 100644
--- a/fish/fish.c
+++ b/fish/fish.c
@@ -117,7 +117,7 @@ usage (int status)
" --keys-from-stdin Read passphrases from stdin\n"
" --listen Listen for remote commands\n"
" --live Connect to a live virtual machine\n"
- " -m|--mount dev[:mnt] Mount dev on mnt (if omitted, /)\n"
+ " -m|--mount dev[:mnt[:opts]] Mount dev on mnt (if omitted, /)\n"
" -n|--no-sync Don't autosync\n"
" -N|--new type Create prepared disk (test1.img, ...)\n"
" --progress-bars Enable progress bars even when not interactive\n"
diff --git a/fish/guestfish.pod b/fish/guestfish.pod
index abf6d7ac..98286d18 100644
--- a/fish/guestfish.pod
+++ b/fish/guestfish.pod
@@ -299,9 +299,9 @@ L</REMOTE CONTROL GUESTFISH OVER A SOCKET> below.
Connect to a live virtual machine.
(Experimental, see L<guestfs(3)/ATTACHING TO RUNNING DAEMONS>).
-=item B<-m dev[:mountpoint]>
+=item B<-m dev[:mountpoint[:options]]>
-=item B<--mount dev[:mountpoint]>
+=item B<--mount dev[:mountpoint[:options]]>
Mount the named partition or logical volume on the given mountpoint.
@@ -318,8 +318,17 @@ filesystems and LVs available (see L</list-partitions>,
L</list-filesystems> and L</lvs> commands), or you can use the
L<virt-filesystems(1)> program.
-Using this flag is mostly equivalent to using the C<mount-options>
-command or the C<mount-ro> command if the I<--ro> flag was given.
+The third (and rarely used) part of the mount parameter is the list of
+mount options used to mount the underlying filesystem. If this is not
+given, then the mount options are either the empty string or C<ro>
+(the latter if the I<--ro> flag is used). By specifying the mount
+options, you override this default choice. Probably the only time you
+would use this is to enable ACLs and/or extended attributes if the
+filesystem can support them:
+
+ -m /dev/sda1:/:acl,user_xattr
+
+Using this flag is equivalent to using the C<mount-options> command.
=item B<-n>
diff --git a/fish/options.c b/fish/options.c
index 436e10d8..43a15e49 100644
--- a/fish/options.c
+++ b/fish/options.c
@@ -1,5 +1,5 @@
/* libguestfs - guestfish and guestmount shared option parsing
- * Copyright (C) 2010 Red Hat Inc.
+ * Copyright (C) 2010-2011 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -106,11 +106,18 @@ mount_mps (struct mp *mp)
if (mp) {
mount_mps (mp->next);
+ const char *options;
+ if (mp->options)
+ options = mp->options;
+ else if (read_only)
+ options = "ro";
+ else
+ options = "";
+
/* Don't use guestfs_mount here because that will default to mount
* options -o sync,noatime. For more information, see guestfs(3)
* section "LIBGUESTFS GOTCHAS".
*/
- const char *options = read_only ? "ro" : "";
r = guestfs_mount_options (g, options, mp->device, mp->mountpoint);
if (r == -1) {
/* Display possible mountpoints before exiting. */
diff --git a/fish/options.h b/fish/options.h
index b755d906..e0cad013 100644
--- a/fish/options.h
+++ b/fish/options.h
@@ -1,5 +1,5 @@
/* libguestfs - guestfish and guestmount shared option parsing
- * Copyright (C) 2010 Red Hat Inc.
+ * Copyright (C) 2010-2011 Red Hat Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -109,6 +109,7 @@ struct mp {
struct mp *next;
char *device;
char *mountpoint;
+ char *options;
};
/* in inspect.c */
@@ -173,12 +174,20 @@ extern int add_libvirt_drives (const char *guest);
perror ("malloc"); \
exit (EXIT_FAILURE); \
} \
+ mp->options = NULL; \
+ mp->mountpoint = bad_cast ("/"); \
p = strchr (optarg, ':'); \
if (p) { \
*p = '\0'; \
- mp->mountpoint = p+1; \
- } else \
- mp->mountpoint = bad_cast ("/"); \
+ p++; \
+ mp->mountpoint = p; \
+ p = strchr (p, ':'); \
+ if (p) { \
+ *p = '\0'; \
+ p++; \
+ mp->options = p; \
+ } \
+ } \
mp->device = optarg; \
mp->next = mps; \
mps = mp
diff --git a/fuse/guestmount.pod b/fuse/guestmount.pod
index 338af97b..ea0cb638 100644
--- a/fuse/guestmount.pod
+++ b/fuse/guestmount.pod
@@ -148,7 +148,9 @@ to try to read passphrases from the user by opening C</dev/tty>.
Connect to a live virtual machine.
(Experimental, see L<guestfs(3)/ATTACHING TO RUNNING DAEMONS>).
-=item B<-m dev[:mnt]> | B<--mount dev[:mnt]>
+=item B<-m dev[:mountpoint[:options]]>
+
+=item B<--mount dev[:mountpoint[:options]]>
Mount the named partition or logical volume on the given mountpoint
B<in the guest> (this has nothing to do with mountpoints in the host).
@@ -156,6 +158,16 @@ B<in the guest> (this has nothing to do with mountpoints in the host).
If the mountpoint is omitted, it defaults to C</>. You have to mount
something on C</>.
+The third (and rarely used) part of the mount parameter is the list of
+mount options used to mount the underlying filesystem. If this is not
+given, then the mount options are either the empty string or C<ro>
+(the latter if the I<--ro> flag is used). By specifying the mount
+options, you override this default choice. Probably the only time you
+would use this is to enable ACLs and/or extended attributes if the
+filesystem can support them:
+
+ -m /dev/sda1:/:acl,user_xattr
+
=item B<-n> | B<--no-sync>
By default, we attempt to sync the guest disk when the FUSE mountpoint