Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 24 Jul 1999 11:52:07 -0700 (PDT)
From:      bob@pmr.com
To:        freebsd-gnats-submit@freebsd.org
Subject:   bin/12789: Confusing error msg when dumping a filesystem by mount point thats not in /etc/fstab
Message-ID:  <19990724185207.7764614DE6@hub.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         12789
>Category:       bin
>Synopsis:       Confusing error msg when dumping a filesystem by mount point thats not in /etc/fstab
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jul 24 12:00:01 PDT 1999
>Closed-Date:
>Last-Modified:
>Originator:     Bob Willcox
>Release:        3.2-stable
>Organization:
Power Micro Research
>Environment:
FreeBSD luke.pmr.com 3.2-STABLE FreeBSD 3.2-STABLE #7: Tue Jul 20 12:00:05 CDT 1999     bob@luke.pmr.com:/usr/src/sys/compile/LUKE  i386

>Description:
When dumping a filesystem by specifying its mount point (rather than its
special file name) if there is no entry in fstab for the filesystem dump
fails with what can be a misleading error message.

For example if I dump /bsd (which has no fstab entry I get):

bob@luke-pf /usr/src/sbin/dump> dump -0ab 32 -f /dev/null /bsd                 
  DUMP: Date of this level 0 dump: Sat Jul 24 13:21:19 1999
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /bsd to /dev/null
  DUMP: bad sblock magic number

What has happened here is that dump, because it did not find an entry
for /bsd in /etc/fstab has opened the directory /bsd and tried to dump
it (and, of course, failed since it has no superblock).




>How-To-Repeat:
Run dump against a mounted filesystem that has no entry in /etc/fstab
and specifify its mount point rather than the special file path.
>Fix:
I have implemented a simple additional check to see that the open file
(should be the filesystem) isn't a directory (as it will be in this case).
If it is a directory, the changed code prints a warning message to assist
the user in diagnosing what he has done wrong.

The output from dump will now look like this:

bob@luke-pf /usr/src/sbin/dump> /usr/obj/usr/src/sbin/dump/dump -0ab 32 -f /d >
  DUMP: Date of this level 0 dump: Sat Jul 24 13:47:39 1999
  DUMP: Date of last level 0 dump: the epoch
  DUMP: Dumping /bsd to /dev/null
  DUMP: WARNING: /bsd will be processed as a directory, not a filesystem
  DUMP: bad sblock magic number
  DUMP: The ENTIRE dump is aborted.

There are, no doubt, other and likely better ways to solve this problem
but this worked for me (next time I won't spend so much time tracking
down what's really wrong).

Here is a patch for the change should you be interested:

Index: src/sbin/dump/main.c
===================================================================
RCS file: /usr/cvs/FreeBSD/src/sbin/dump/main.c,v
retrieving revision 1.18
diff -u -r1.18 main.c
--- main.c      1998/09/16 20:52:12     1.18
+++ main.c      1999/07/24 18:47:32
@@ -68,6 +68,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+#include <sys/stat.h>

 #include "dump.h"
 #include "pathnames.h"
@@ -104,6 +105,7 @@
        register int ch;
        int i, anydirskipped, bflag = 0, Tflag = 0, honorlevel = 1;
        ino_t maxino;
+       struct stat sb;

        spcl.c_date = 0;
        (void)time((time_t *)&spcl.c_date);
@@ -327,6 +333,11 @@
                msg("Cannot open %s\n", disk);
                exit(X_STARTUP);
        }
+       if (fstat(diskfd, &sb))
+               quit("unable to fstat filesystem");
+       if (S_ISDIR(sb.st_mode))
+               msg("WARNING: %s will be processed as a directory, not a filesystem\n",
+                       disk);
        sync();
        sblock = (struct fs *)sblock_buf;
        bread(SBOFF, (char *) sblock, SBSIZE);


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?19990724185207.7764614DE6>