Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 29 May 2015 20:50:41 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r283754 - head/sys/dev/mmc
Message-ID:  <201505292050.t4TKoggD086591@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Fri May 29 20:50:41 2015
New Revision: 283754
URL: https://svnweb.freebsd.org/changeset/base/283754

Log:
  Do not set d_fwsectors nor d_fwheads. Primarily because the values
  tend to be invalid. On a Beaglebone Black, we get 8192 sectors per
  track and that causes major breakages.
  
  Differential Revision: D2646
  Reviewed by:	ian@ imp@

Modified:
  head/sys/dev/mmc/mmcsd.c

Modified: head/sys/dev/mmc/mmcsd.c
==============================================================================
--- head/sys/dev/mmc/mmcsd.c	Fri May 29 20:22:53 2015	(r283753)
+++ head/sys/dev/mmc/mmcsd.c	Fri May 29 20:50:41 2015	(r283754)
@@ -163,33 +163,10 @@ mmcsd_attach(device_t dev)
 	d->d_sectorsize = mmc_get_sector_size(dev);
 	d->d_maxsize = mmc_get_max_data(dev) * d->d_sectorsize;
 	d->d_mediasize = (off_t)mmc_get_media_size(dev) * d->d_sectorsize;
-	d->d_stripeoffset = 0;
 	d->d_stripesize = mmc_get_erase_sector(dev) * d->d_sectorsize;
 	d->d_unit = device_get_unit(dev);
 	d->d_flags = DISKFLAG_CANDELETE;
-	d->d_delmaxsize = mmc_get_erase_sector(dev) * d->d_sectorsize * 1; /* conservative */
-	/*
-	 * The d_fw* values are fake. However, layout is aided by making the
-	 * number of fwsectors equal to the erase sectors from the drive since
-	 * we set the stripe size equal to that. We set fwheads such that there
-	 * are ~20 cylinder groups since all values are somewhat arbitrary here
-	 * and this gives good behavior with ffs without wasting too much
-	 * space.  Sadly, geom_part wants to round partitions to these
-	 * values. While not bad, in and of itself, the values we present here
-	 * will almost certainly be different then the values that USB SD
-	 * adapters use and there's too much variation between brands to just
-	 * use those values here.  Also SD to ATA adapters favor traditional
-	 * ata sizes, which are different again from the USB adapters (which
-	 * favor SCSI values). This rounding leads to a loss of up to 5% of the
-	 * usable space (usually much less, but that's why 20 was selected: to
-	 * limit this effect at a few percent). gpart needs a way to override
-	 * this behavior for situations like this, but doesn't provide
-	 * one. Perhaps this behavior should be tunable as well, but maybe that
-	 * belongs in the disk layer.  These values will be much better than
-	 * the default ones.
-	 */
-	d->d_fwsectors = mmc_get_erase_sector(dev);
-	d->d_fwheads = mmc_get_media_size(dev) / (d->d_fwsectors * 20);
+	d->d_delmaxsize = mmc_get_erase_sector(dev) * d->d_sectorsize;
 	strlcpy(d->d_ident, mmc_get_card_sn_string(dev), sizeof(d->d_ident));
 	strlcpy(d->d_descr, mmc_get_card_id_string(dev), sizeof(d->d_descr));
 



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