Author: mav
Date: Fri Jan 15 23:56:19 2010
New Revision: 202427
URL: http://svn.freebsd.org/changeset/base/202427

Log:
  MFC r201645:
  Change the way in which zero stripesize is handled. Instead of reporting
  zero stripeoffset in such case (as if device has no stripes), report offset
  from the beginning of the media (as if device has single infinite stripe).
  
  This gives partitioning tools information, required to guess better
  partition alignment, in case if hardware doesn't report it's stripe size.
  For example, it should give disklabel info about odd offset made by fdisk.

Modified:
  stable/8/sys/geom/geom_slice.c
  stable/8/sys/geom/part/g_part.c
  stable/8/sys/geom/uzip/g_uzip.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)
  stable/8/sys/dev/xen/xenpci/   (props changed)

Modified: stable/8/sys/geom/geom_slice.c
==============================================================================
--- stable/8/sys/geom/geom_slice.c      Fri Jan 15 23:54:14 2010        
(r202426)
+++ stable/8/sys/geom/geom_slice.c      Fri Jan 15 23:56:19 2010        
(r202427)
@@ -393,10 +393,10 @@ g_slice_config(struct g_geom *gp, u_int 
        pp = g_new_providerf(gp, sbuf_data(sb));
        pp2 = LIST_FIRST(&gp->consumer)->provider;
        pp->flags = pp2->flags & G_PF_CANDELETE;
-       if (pp2->stripesize > 0) {
-               pp->stripesize = pp2->stripesize;
-               pp->stripeoffset = (pp2->stripeoffset + offset) % 
pp->stripesize;
-       }
+       pp->stripesize = pp2->stripesize;
+       pp->stripeoffset = pp2->stripeoffset + offset;
+       if (pp->stripesize > 0)
+               pp->stripeoffset %= pp->stripesize;
        if (0 && bootverbose)
                printf("GEOM: Configure %s, start %jd length %jd end %jd\n",
                    pp->name, (intmax_t)offset, (intmax_t)length,

Modified: stable/8/sys/geom/part/g_part.c
==============================================================================
--- stable/8/sys/geom/part/g_part.c     Fri Jan 15 23:54:14 2010        
(r202426)
+++ stable/8/sys/geom/part/g_part.c     Fri Jan 15 23:56:19 2010        
(r202427)
@@ -268,11 +268,10 @@ g_part_new_provider(struct g_geom *gp, s
        entry->gpe_pp->mediasize -= entry->gpe_offset - offset;
        entry->gpe_pp->sectorsize = pp->sectorsize;
        entry->gpe_pp->flags = pp->flags & G_PF_CANDELETE;
-       if (pp->stripesize > 0) {
-               entry->gpe_pp->stripesize = pp->stripesize;
-               entry->gpe_pp->stripeoffset = (pp->stripeoffset +
-                   entry->gpe_offset) % pp->stripesize;
-       }
+       entry->gpe_pp->stripesize = pp->stripesize;
+       entry->gpe_pp->stripeoffset = pp->stripeoffset + entry->gpe_offset;
+       if (pp->stripesize > 0)
+               entry->gpe_pp->stripeoffset %= pp->stripesize;
        g_error_provider(entry->gpe_pp, 0);
 }
 

Modified: stable/8/sys/geom/uzip/g_uzip.c
==============================================================================
--- stable/8/sys/geom/uzip/g_uzip.c     Fri Jan 15 23:54:14 2010        
(r202426)
+++ stable/8/sys/geom/uzip/g_uzip.c     Fri Jan 15 23:56:19 2010        
(r202427)
@@ -467,10 +467,8 @@ g_uzip_taste(struct g_class *mp, struct 
        pp2->sectorsize = 512;
        pp2->mediasize = (off_t)sc->nblocks * sc->blksz;
         pp2->flags = pp->flags & G_PF_CANDELETE;
-        if (pp->stripesize > 0) {
-                pp2->stripesize = pp->stripesize;
-                pp2->stripeoffset = pp->stripeoffset;
-        }
+        pp2->stripesize = pp->stripesize;
+        pp2->stripeoffset = pp->stripeoffset;
        g_error_provider(pp2, 0);
        g_access(cp, -1, 0, 0);
 
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to