On Tue, Aug 30, 2011 at 01:25:14AM +0200, Rogier Krieger wrote:
> ...at present do not seem to go together nicely:
> 
> # tail -n 1 /etc/fstab
> 73123067c3dc34d4.a /data ffs rw,userquota,groupquota 1 1
> 
> # /sbin/quotacheck /data
> quotacheck: 73123067c3dc34d4.a: No such file or directory
> 
> 
> Would the attached diff be acceptable? It appears to solve my issue,
> working with both the /dev/sd0a and duid forms. Note that (for
> unchanged fstab and patch applied), using quotacheck with the
> then-current physical device (sd0a) complains.
> # /sbin/quotacheck /dev/sd0a
> /dev/sd0a not found in /etc/fstab
> 
> Hardly surprising, since it's indeed not in fstab; I suppose it's
> overkill to add logic for this. In case the diff gets mangled in
> transit, alternatively try: http://pastebin.com/VRN8wZX6
> 
> Regards,
> 
> Rogier

I think that the logic to recognize '/dev/sd0a' as being in fstab
whether literally or as a DUID would be required. This would appear
to require moving the opendev() to above the getfsent() loop and
adding a check for "argnum = oneof(realpath, argv, argc)". And of
course moving the associated close().

Not using quotacheck I can't quickly determine if that works.

Checking for other consumers of getfsent() vs device name on
command line would be interesting.

.... Ken

> 
> 
> Index: Makefile
> ===================================================================
> RCS file: /cvs/src/sbin/quotacheck/Makefile,v
> retrieving revision 1.6
> diff -u -r1.6 Makefile
> --- Makefile    21 Sep 1997 11:37:57 -0000      1.6
> +++ Makefile    29 Aug 2011 23:20:47 -0000
> @@ -6,4 +6,7 @@
>  MAN=   quotacheck.8
>  .PATH: ${.CURDIR}/../fsck
> 
> +LDADD+=-lutil
> +DPADD+=${LIBUTIL}
> +
>  .include <bsd.prog.mk>
> Index: quotacheck.c
> ===================================================================
> RCS file: /cvs/src/sbin/quotacheck/quotacheck.c,v
> retrieving revision 1.25
> diff -u -r1.25 quotacheck.c
> --- quotacheck.c        27 Oct 2009 23:59:34 -0000      1.25
> +++ quotacheck.c        29 Aug 2011 23:20:47 -0000
> @@ -50,6 +50,7 @@
>  #include <grp.h>
>  #include <errno.h>
>  #include <unistd.h>
> +#include <util.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <string.h>
> @@ -263,13 +264,14 @@
>         ino_t ino, inosused;
>         pid_t pid;
>         char *cp;
> +       char *realdev;
> 
>         switch (pid = fork()) {
>         case -1:        /* error */
>                 warn("fork");
>                 return 1;
>         case 0:         /* child */
> -               if ((fi = open(fsname, O_RDONLY, 0)) < 0)
> +               if ((fi = opendev(fsname, O_RDONLY, 0, &realdev)) < 0)
>                         err(1, "%s", fsname);
>                 sync();
>                 dev_bsize = 1;

Reply via email to