On 08/17/16 03:07, Dag-Erling Smørgrav wrote:
Nathan Whitehorn <nwhiteh...@freebsd.org> writes:
As a note for people who weren't paying attention to the bug, we need
to fix this in a better way outside of the constraints of getting 11.0
out the door. The system (gpart, the installer, ZFS, etc.) uses the
reported GEOM stripesize for partition alignment and IO block size
selection. If that is wrong, we should identify devices on which it is
wrong and fix them, and maybe also add some global tunable that sets a
floor on the numbers reported by GEOM_DISK. Hacking the installer like
this is triage, which is fine, but not viable as a permanent solution
to anything.
Modifying GEOM to report a bogus number when none is provided by the
lower layer(s) is absolutely not going to happen.  You have absolutely
no idea what your proposed change will break.  And you keep refusing to
address the fact that most drivers don't report a stripe size, except by
repeating your claim that they do, with no evidence to back it up.  Feel
free to 'grep -r stripesize /usr/src/sys/dev'.  Go on, I'll wait.

And yet, if you look at the GEOM XML, it is reported and there. And, look, it's even right for the AF 512e disks in my machine!

          <sectorsize>512</sectorsize>
          <stripesize>4096</stripesize>

I've literally never seen a case where we don't already do the right thing here. The GEOM stripesize is, whether you like it or not, the way we have long ago decided to communicate the information about optimal alignment from the disk drivers to userland. We do a good job of it, too. It's correct, as far as I can tell, 100% of the time on all possible variants of AF disks. One could argue that calling this the "stripesize" is a hack, and I would agree, but it's what the operating system does and has done for many years.

As for grepping, the CAM disk drivers are all in sys/cam, not sys/dev, as I'm sure you know, and you will find all the code that handles this there.

Your contention that the installer does not make policy decisions is
equally spurious.  The installer makes many policy decisions, including
the disk layout, the size of the swap partition, the name of the pool,
the use of boot environments (which I dislike but am not allowed to
override), the number of filesets and their mountpoints (which I also
dislike and am not allowed to override either), etc.  The Unix
philosophy is to push such decisions up the stack, not down.  The
decision to align partitions on 4096-byte boundaries because we're not
sure of the correct number but know for a fact that using a smaller
number can have a huge impact on performance is the installer's to make.

Those are all things that the operating system does not have defaults for: there are no tools like, say, gpart or newfs that layout disks in any even vaguely automated way, and so no tools that would ever have defaults for, say, the size of a swap partition except for the installer. As such, the defaults are quite properly in the installer. This is quite different: there are many tools that care about disk alignment (say, gpart) and, by default, use the GEOM stripesize. The installer is, after this patch, overriding what was meant to be a system-wide default.

My concern is that pushing this into the installer means that newfs, zfs, gpart, etc., which all look at the GEOM stripesize for preferred alignment, will still have suboptimal behavior on systems affected by your patch. If we identified which drivers are reporting the wrong alignment, we could fix the whole system at a go by changing it there. As it is, we now have inconsistent default behavior for partitions between tools (the installer and sade will now use a different alignment than gpart on whatever systems you were trying to fix here) and between pre- and post-installation environments.

You are papering over a bug in some unspecified driver with some unspecified disks by hacking the installer. This is fine as an expedient for 11.0, but is a ridiculous solution to the problem otherwise. We should just fix the driver for whatever weird disk you have in your machine (what is it, by the way?). Since making the reported "stripe size" match the physical sector size is what GEOM has done since at least 2009, I doubt very much that fixing any bugs in that reported value would have the weird unintended consequences you imply it might.
-Nathan


DES

_______________________________________________
svn-src-head@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to