mirror_zfs/lib/libzfs
Ned Bass 613d88eda8 Align parition end on 1 MiB boundary
Some devices have exhibited sensitivity to the ending alignment of
partitions.  In particular, even if the first partition begins at 1
MiB, we have seen many sd driver task abort errors with certain SSDs
if the first partition doesn't end on a 1 MiB boundary.  This occurs
when the vdev label is read during pool creation or importation and
causes a delay of about 30 seconds per device.  It can also be
simulated with dd when the pool isn't imported:

  dd if=/dev/sda1 of=/dev/null bs=262144 count=1

For the record, this problem was observed with SMARTMOD
SG9XCA2E200GE01 200GB SSDs.  Unfortunately I don't have a good
explanation for this behavior. It seems to have something to do with
highly fragmented single-sector requests being issued to the device,
which it may not support.  With end-aligned partitions at least
page-sized requests were queued and issued to the driver according
to blktrace. In any case, aligning the partition end is a fairly
innocuous work-around, wasting at most 1 MiB of space.

Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #574
2012-03-05 09:49:50 -08:00
..
libzfs_changelist.c Remove HAVE_ZPL from commands and libraries 2011-02-04 16:14:34 -08:00
libzfs_config.c Fix gcc missing braces warnings 2010-08-27 15:34:03 -07:00
libzfs_dataset.c Ignore dataset if the dds_type is DMU_OST_OTHER 2012-01-19 09:29:48 -08:00
libzfs_diff.c Add linux compatibility 2010-08-31 13:41:59 -07:00
libzfs_fru.c Add linux topology support 2010-08-31 13:42:00 -07:00
libzfs_graph.c Fix gcc missing braces warnings 2010-08-27 15:34:03 -07:00
libzfs_import.c Improve 'zpool import' safety 2011-02-17 09:35:43 -08:00
libzfs_mount.c Add overlay(-O) mount option support 2012-01-12 15:49:38 -08:00
libzfs_pool.c Align parition end on 1 MiB boundary 2012-03-05 09:49:50 -08:00
libzfs_sendrecv.c Fix 'zfs send -D' segfault 2011-06-09 13:58:48 -07:00
libzfs_status.c Use gethostid in the Linux convention. 2011-04-25 10:36:17 -05:00
libzfs_util.c Use /dev/null for stdout/stderr in libzfs_run_process(). 2011-08-01 13:52:23 -07:00
Makefile.am Combine libraries: spl, avl, efi, share, unicode. 2012-01-17 15:19:50 -08:00
Makefile.in Cleanly support debug packages 2012-02-27 14:08:17 -08:00