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"