svn commit: r185990 - head/sbin/newfs

Luigi Rizzo rizzo at iet.unipi.it
Fri Dec 12 16:32:06 UTC 2008


On Fri, Dec 12, 2008 at 08:14:52AM -0800, Paul Saab wrote:
> This still will not work.  zfs can have arbitrary names.

So let me understand: this part of the code now is exactly as it was
two weeks ago, before i touched it. So, are you (and Peter) addressing
a pre-existing bug, or could you explain me what is broken now ?

Also, are you actually seeing the bug when you run the program,
or you just think there might be one ?

	cheers
	luigi

> On Fri, Dec 12, 2008 at 7:56 AM, Luigi Rizzo <luigi at freebsd.org> wrote:
> 
> > Author: luigi
> > Date: Fri Dec 12 15:56:38 2008
> > New Revision: 185990
> > URL: http://svn.freebsd.org/changeset/base/185990
> >
> > Log:
> >  Move the check for the ending char in the partition name where
> >  it was before -- the check is only made when getdisklabel()
> >  returns valid info.
> >  On passing, use MAXPARTITIONS to identify the max partition number,
> >  instead of the hardwired 'h'
> >
> >  MFC after:    4 weeks
> >
> > Modified:
> >  head/sbin/newfs/newfs.c
> >
> > Modified: head/sbin/newfs/newfs.c
> >
> > ==============================================================================
> > --- head/sbin/newfs/newfs.c     Fri Dec 12 14:57:25 2008        (r185989)
> > +++ head/sbin/newfs/newfs.c     Fri Dec 12 15:56:38 2008        (r185990)
> > @@ -354,11 +354,6 @@ main(int argc, char *argv[])
> >                mediasize = st.st_size;
> >                /* set fssize from the partition */
> >        } else {
> > -           part_name = special[strlen(special) - 1];
> > -           if ((part_name < 'a' || part_name > 'h') &&
> > !isdigit(part_name))
> > -               errx(1, "%s: can't figure out file system partition",
> > -                               special);
> > -
> >            if (sectorsize == 0)
> >                if (ioctl(disk.d_fd, DIOCGSECTORSIZE, &sectorsize) == -1)
> >                    sectorsize = 0;     /* back out on error for safety */
> > @@ -368,6 +363,12 @@ main(int argc, char *argv[])
> >        pp = NULL;
> >        lp = getdisklabel(special);
> >        if (lp != NULL) {
> > +               if (!is_file) /* already set for files */
> > +                       part_name = special[strlen(special) - 1];
> > +               if ((part_name < 'a' || part_name - 'a' >= MAXPARTITIONS)
> > &&
> > +                               !isdigit(part_name))
> > +                       errx(1, "%s: can't figure out file system
> > partition",
> > +                                       special);
> >                cp = &part_name;
> >                if (isdigit(*cp))
> >                        pp = &lp->d_partitions[RAW_PART];
> >


More information about the svn-src-head mailing list