]> err.no Git - util-linux/commitdiff
mount: cleanup "none" fstype usage
authorKarel Zak <kzak@redhat.com>
Thu, 4 Oct 2007 13:07:30 +0000 (15:07 +0200)
committerKarel Zak <kzak@redhat.com>
Thu, 4 Oct 2007 13:07:30 +0000 (15:07 +0200)
 * disable to call /sbin/mount.none
 * rewrite fstype to "none" for MS_BIND and MS_MOVE
 * add notes about "none" to fstab.5 and mount.8

Signed-off-by: Karel Zak <kzak@redhat.com>
mount/fstab.5
mount/mount.8
mount/mount.c
mount/umount.c

index a7978b5f507f60d8e8982e2ccc27305c69206788..6109b5ee43011210472eaf3fa2e1e0939bc3f336 100644 (file)
@@ -142,6 +142,9 @@ An entry
 .I ignore
 causes the line to be ignored.  This is useful
 to show disk partitions which are currently unused.
+An entry
+.I none
+is useful for bind or move mounts.
 
 The fourth field,
 .RI ( fs_mntops ),
index 01001ade54187a64dc70e99400799ead8783d739..54b11d46962d7ad44c8d77104078707af95d9bbd 100644 (file)
@@ -108,6 +108,11 @@ file hierarchy somewhere else. The call is
 .br
 .B "mount --bind olddir newdir"
 .RE
+or fstab entry is:
+.RS
+.br
+.B "/olddir  /newdir  none  bind"
+.RE
 After this call the same contents is accessible in two places.
 One can also remount a single file (on a single file).
 
index 5bc2b30c331146bd39b6932040d1cd3db5238d11..2e458cad04c24e3d2805aac30616c5a3ac1b2088 100644 (file)
@@ -624,7 +624,10 @@ check_special_mountprog(const char *spec, const char *node, const char *type, in
   if (!external_allowed)
       return 0;
 
-  if (type && strlen(type) < 100) {
+  if (type == NULL || strcmp(type, "none") == 0)
+         return 0;
+
+  if (strlen(type) < 100) {
        sprintf(mountprog, "/sbin/mount.%s", type);
        if (stat(mountprog, &statbuf) == 0) {
            if (verbose)
@@ -719,8 +722,8 @@ guess_fstype_and_mount(const char *spec, const char *node, const char **types,
    if (*types && strcasecmp (*types, "auto") == 0)
       *types = NULL;
 
-   if (!*types && (flags & (MS_BIND | MS_MOVE)))
-      *types = "none";         /* random, but not "bind" */
+   if (flags & (MS_BIND | MS_MOVE))
+      *types = "none";
 
    if (!*types && !(flags & MS_REMOUNT)) {
       *types = guess_fstype_by_devname(spec);
index 3221619832afd4e2c0a3c17b236c8270c257cc3f..6af43546e51d16bb7a8bc7a9853a14bd7b6e69b3 100644 (file)
@@ -94,7 +94,10 @@ check_special_umountprog(const char *spec, const char *node,
        if (!external_allowed)
                return 0;
 
-       if (type && strlen(type) < 100) {
+       if (type == NULL || strcmp(type, "none") == 0)
+               return 0;
+
+       if (strlen(type) < 100) {
                sprintf(umountprog, "/sbin/umount.%s", type);
                if (stat(umountprog, &statbuf) == 0) {
                        res = fork();