1928 Commits

Author SHA1 Message Date
asomers
af2f11439d MFC r298420, r298439, r298644
r298420 | asomers | 2016-04-21 10:43:15 -0600 (Thu, 21 Apr 2016) | 10 lines

Notify userspace listeners when geom disk attributes have changed

sys/geom/geom_disk.c:
        disk_attr_changed(): Generate a devctl event of type GEOM:<attr> for
        every call.

r298439 | asomers | 2016-04-21 15:13:41 -0600 (Thu, 21 Apr 2016) | 10 lines

DRY on buffer sizes.  Update to r298420.

sys/geom/geom_disk.c:
        In disk_attr_changed, don't repeat a buffer size.

r298644 | asomers | 2016-04-26 08:48:58 -0600 (Tue, 26 Apr 2016) | 8 lines

Add GEOM::physpath documentation to devd.conf(5)
2016-05-19 16:04:20 +00:00
ngie
b8862d73f0 MFC r298671,r298672:
r298671 (by cem):

g_part_bsd64: Check for valid on-disk npartitions value

This value is u32 on disk, but assigned to an int in memory.  After we do the
implicit conversion via assignment, check that the result is at least one[1]
(non-negative[2]).

1. The subsequent for-loop iterates from gpt_entries minus one, down, until
   reaching zero.  A negative or zero initial index results in undefined signed
   integer overflow.
2. It is also used to index into arrays later.

In practice, we expected non-malicious disks to contain small positive values.

CID:		1223202

r298672 (by cem):

g_part_bsd64: Delete duplicate/dead code

RAW_PART is handled earlier in the loop.

CID:		1223201
2016-05-13 08:54:08 +00:00
pfg
bd88c5334c MFC r298755:
sys/geom: spelling fixes.

These affect debugging messages.
2016-05-12 00:45:57 +00:00
pfg
85aa8af670 MFC r298698:
geom: unsign some types to match their definitions and avoid overflows.

In struct:gctl_req, nargs is unsigned.

In mirror:
g_mirror_syncreqs is unsigned.

In raid:
in struct:g_raid_volume, v_disks_count is unsigned.

In virstor:
in struct:g_virstor_softc, n_components is unsigned.
2016-05-11 00:36:31 +00:00
smh
1645ae3459 MFC r292289:
Prevent g_access calls to bad multipath members

Sponsored by:	Multiplay
2016-01-25 09:29:29 +00:00
rpokala
ad88a89c79 MFC r294042: Add rotationrate to geom disk dumpconf
Parse and report the nominal rotation rate reported by the drive.

Approved by:	jhb
2016-01-21 03:05:03 +00:00
trasz
2d6e438962 MFC r289110:
Make geom_nop(4) collect statistics on all types of BIOs, not just
reads and writes.

PR:		kern/198405
Submitted by:	Matthew D. Fuller <fullermd at over-yonder dot net>
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D3679
2016-01-12 09:27:01 +00:00
ae
09204e7670 MFC r292057:
Make detection of GPT a bit more reliable.

  When we are detecting a partition table and didn't find PMBR, try to
  read backup GPT header from the last sector and if it is correct,
  assume that we have GPT.

  Differential Revision:	https://reviews.freebsd.org/D4282

MFC r292058:
  Remove a note about damaged PMBR. Now GPT will be detected automatically
  with such corruption.

Relnotes:	yes
2016-01-10 13:53:57 +00:00
ken
5baa144ddf MFC r291716, r291724, r291741, r291742
In addition to those revisions, add this change to a file that is not in
head:

sys/ia64/include/bus.h:
  	Guard kernel-only parts of the ia64 machine/bus.h header with
  	#ifdef _KERNEL.

  	This allows userland programs to include <machine/bus.h> to get the
  	definition of bus_addr_t and bus_size_t.

  ------------------------------------------------------------------------
  r291716 | ken | 2015-12-03 15:54:55 -0500 (Thu, 03 Dec 2015) | 257 lines

  Add asynchronous command support to the pass(4) driver, and the new
  camdd(8) utility.

  CCBs may be queued to the driver via the new CAMIOQUEUE ioctl, and
  completed CCBs may be retrieved via the CAMIOGET ioctl.  User
  processes can use poll(2) or kevent(2) to get notification when
  I/O has completed.

  While the existing CAMIOCOMMAND blocking ioctl interface only
  supports user virtual data pointers in a CCB (generally only
  one per CCB), the new CAMIOQUEUE ioctl supports user virtual and
  physical address pointers, as well as user virtual and physical
  scatter/gather lists.  This allows user applications to have more
  flexibility in their data handling operations.

  Kernel memory for data transferred via the queued interface is
  allocated from the zone allocator in MAXPHYS sized chunks, and user
  data is copied in and out.  This is likely faster than the
  vmapbuf()/vunmapbuf() method used by the CAMIOCOMMAND ioctl in
  configurations with many processors (there are more TLB shootdowns
  caused by the mapping/unmapping operation) but may not be as fast
  as running with unmapped I/O.

  The new memory handling model for user requests also allows
  applications to send CCBs with request sizes that are larger than
  MAXPHYS.  The pass(4) driver now limits queued requests to the I/O
  size listed by the SIM driver in the maxio field in the Path
  Inquiry (XPT_PATH_INQ) CCB.

  There are some things things would be good to add:

  1. Come up with a way to do unmapped I/O on multiple buffers.
     Currently the unmapped I/O interface operates on a struct bio,
     which includes only one address and length.  It would be nice
     to be able to send an unmapped scatter/gather list down to
     busdma.  This would allow eliminating the copy we currently do
     for data.

  2. Add an ioctl to list currently outstanding CCBs in the various
     queues.

  3. Add an ioctl to cancel a request, or use the XPT_ABORT CCB to do
     that.

  4. Test physical address support.  Virtual pointers and scatter
     gather lists have been tested, but I have not yet tested
     physical addresses or scatter/gather lists.

  5. Investigate multiple queue support.  At the moment there is one
     queue of commands per pass(4) device.  If multiple processes
     open the device, they will submit I/O into the same queue and
     get events for the same completions.  This is probably the right
     model for most applications, but it is something that could be
     changed later on.

  Also, add a new utility, camdd(8) that uses the asynchronous pass(4)
  driver interface.

  This utility is intended to be a basic data transfer/copy utility,
  a simple benchmark utility, and an example of how to use the
  asynchronous pass(4) interface.

  It can copy data to and from pass(4) devices using any target queue
  depth, starting offset and blocksize for the input and ouptut devices.
  It currently only supports SCSI devices, but could be easily extended
  to support ATA devices.

  It can also copy data to and from regular files, block devices, tape
  devices, pipes, stdin, and stdout.  It does not support queueing
  multiple commands to any of those targets, since it uses the standard
  read(2)/write(2)/writev(2)/readv(2) system calls.

  The I/O is done by two threads, one for the reader and one for the
  writer.  The reader thread sends completed read requests to the
  writer thread in strictly sequential order, even if they complete
  out of order.  That could be modified later on for random I/O patterns
  or slightly out of order I/O.

  camdd(8) uses kqueue(2)/kevent(2) to get I/O completion events from
  the pass(4) driver and also to send request notifications internally.

  For pass(4) devcies, camdd(8) uses a single buffer (CAM_DATA_VADDR)
  per CAM CCB on the reading side, and a scatter/gather list
  (CAM_DATA_SG) on the writing side.  In addition to testing both
  interfaces, this makes any potential reblocking of I/O easier.  No
  data is copied between the reader and the writer, but rather the
  reader's buffers are split into multiple I/O requests or combined
  into a single I/O request depending on the input and output blocksize.

  For the file I/O path, camdd(8) also uses a single buffer (read(2),
  write(2), pread(2) or pwrite(2)) on reads, and a scatter/gather list
  (readv(2), writev(2), preadv(2), pwritev(2)) on writes.

  Things that would be nice to do for camdd(8) eventually:

  1.  Add support for I/O pattern generation.  Patterns like all
      zeros, all ones, LBA-based patterns, random patterns, etc. Right
      Now you can always use /dev/zero, /dev/random, etc.

  2.  Add support for a "sink" mode, so we do only reads with no
      writes.  Right now, you can use /dev/null.

  3.  Add support for automatic queue depth probing, so that we can
      figure out the right queue depth on the input and output side
      for maximum throughput.  At the moment it defaults to 6.

  4.  Add support for SATA device passthrough I/O.

  5.  Add support for random LBAs and/or lengths on the input and
      output sides.

  6.  Track average per-I/O latency and busy time.  The busy time
      and latency could also feed in to the automatic queue depth
      determination.

  sys/cam/scsi/scsi_pass.h:
  	Define two new ioctls, CAMIOQUEUE and CAMIOGET, that queue
  	and fetch asynchronous CAM CCBs respectively.

  	Although these ioctls do not have a declared argument, they
  	both take a union ccb pointer.  If we declare a size here,
  	the ioctl code in sys/kern/sys_generic.c will malloc and free
  	a buffer for either the CCB or the CCB pointer (depending on
  	how it is declared).  Since we have to keep a copy of the
  	CCB (which is fairly large) anyway, having the ioctl malloc
  	and free a CCB for each call is wasteful.

  sys/cam/scsi/scsi_pass.c:
  	Add asynchronous CCB support.

  	Add two new ioctls, CAMIOQUEUE and CAMIOGET.

  	CAMIOQUEUE adds a CCB to the incoming queue.  The CCB is
  	executed immediately (and moved to the active queue) if it
  	is an immediate CCB, but otherwise it will be executed
  	in passstart() when a CCB is available from the transport layer.

  	When CCBs are completed (because they are immediate or
  	passdone() if they are queued), they are put on the done
  	queue.

  	If we get the final close on the device before all pending
  	I/O is complete, all active I/O is moved to the abandoned
  	queue and we increment the peripheral reference count so
  	that the peripheral driver instance doesn't go away before
  	all pending I/O is done.

  	The new passcreatezone() function is called on the first
  	call to the CAMIOQUEUE ioctl on a given device to allocate
  	the UMA zones for I/O requests and S/G list buffers.  This
  	may be good to move off to a taskqueue at some point.
  	The new passmemsetup() function allocates memory and
  	scatter/gather lists to hold the user's data, and copies
  	in any data that needs to be written.  For virtual pointers
  	(CAM_DATA_VADDR), the kernel buffer is malloced from the
  	new pass(4) driver malloc bucket.  For virtual
  	scatter/gather lists (CAM_DATA_SG), buffers are allocated
  	from a new per-pass(9) UMA zone in MAXPHYS-sized chunks.
  	Physical pointers are passed in unchanged.  We have support
  	for up to 16 scatter/gather segments (for the user and
  	kernel S/G lists) in the default struct pass_io_req, so
  	requests with longer S/G lists require an extra kernel malloc.

  	The new passcopysglist() function copies a user scatter/gather
  	list to a kernel scatter/gather list.  The number of elements
  	in each list may be different, but (obviously) the amount of data
  	stored has to be identical.

  	The new passmemdone() function copies data out for the
  	CAM_DATA_VADDR and CAM_DATA_SG cases.

  	The new passiocleanup() function restores data pointers in
  	user CCBs and frees memory.

  	Add new functions to support kqueue(2)/kevent(2):

  	passreadfilt() tells kevent whether or not the done
  	queue is empty.

  	passkqfilter() adds a knote to our list.

  	passreadfiltdetach() removes a knote from our list.

  	Add a new function, passpoll(), for poll(2)/select(2)
  	to use.

  	Add devstat(9) support for the queued CCB path.

  sys/cam/ata/ata_da.c:
  	Add support for the BIO_VLIST bio type.

  sys/cam/cam_ccb.h:
  	Add a new enumeration for the xflags field in the CCB header.
  	(This doesn't change the CCB header, just adds an enumeration to
  	use.)

  sys/cam/cam_xpt.c:
  	Add a new function, xpt_setup_ccb_flags(), that allows specifying
  	CCB flags.

  sys/cam/cam_xpt.h:
  	Add a prototype for xpt_setup_ccb_flags().

  sys/cam/scsi/scsi_da.c:
  	Add support for BIO_VLIST.

  sys/dev/md/md.c:
  	Add BIO_VLIST support to md(4).

  sys/geom/geom_disk.c:
  	Add BIO_VLIST support to the GEOM disk class.  Re-factor the I/O size
  	limiting code in g_disk_start() a bit.

  sys/kern/subr_bus_dma.c:
  	Change _bus_dmamap_load_vlist() to take a starting offset and
  	length.

  	Add a new function, _bus_dmamap_load_pages(), that will load a list
  	of physical pages starting at an offset.

  	Update _bus_dmamap_load_bio() to allow loading BIO_VLIST bios.
  	Allow unmapped I/O to start at an offset.

  sys/kern/subr_uio.c:
  	Add two new functions, physcopyin_vlist() and physcopyout_vlist().

  sys/pc98/include/bus.h:
  	Guard kernel-only parts of the pc98 machine/bus.h header with
  	#ifdef _KERNEL.

  	This allows userland programs to include <machine/bus.h> to get the
  	definition of bus_addr_t and bus_size_t.

  sys/sys/bio.h:
  	Add a new bio flag, BIO_VLIST.

  sys/sys/uio.h:
  	Add prototypes for physcopyin_vlist() and physcopyout_vlist().

  share/man/man4/pass.4:
  	Document the CAMIOQUEUE and CAMIOGET ioctls.

  usr.sbin/Makefile:
  	Add camdd.

  usr.sbin/camdd/Makefile:
  	Add a makefile for camdd(8).

  usr.sbin/camdd/camdd.8:
  	Man page for camdd(8).

  usr.sbin/camdd/camdd.c:
  	The new camdd(8) utility.

  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  r291724 | ken | 2015-12-03 17:07:01 -0500 (Thu, 03 Dec 2015) | 6 lines

  Fix typos in the camdd(8) usage() function output caused by an error in
  my diff filter script.

  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  r291741 | ken | 2015-12-03 22:38:35 -0500 (Thu, 03 Dec 2015) | 10 lines

  Fix g_disk_vlist_limit() to work properly with deletes.

  Add a new bp argument to g_disk_maxsegs(), and add a new function,
  g_disk_maxsize() tha will properly determine the maximum I/O size for a
  delete or non-delete bio.

  Submitted by:	will
  Sponsored by:	Spectra Logic

  ------------------------------------------------------------------------
  ------------------------------------------------------------------------
  r291742 | ken | 2015-12-03 22:44:12 -0500 (Thu, 03 Dec 2015) | 5 lines

  Fix a style issue in g_disk_limit().

  Noticed by:	bdrewery

  ------------------------------------------------------------------------

Sponsored by:	Spectra Logic
2015-12-16 19:01:14 +00:00
smh
ee4f717293 MFC r291004:
Fix early kernel dump via dumpdev env

Sponsored by:	Multiplay
2015-12-01 00:53:03 +00:00
smh
acd245f48b MFC r288153:
Use kenv 'dumpdev' in the same way as etc/rc.d/dumpon

Sponsored by:	Multiplay
2015-12-01 00:48:31 +00:00
smh
0fd4030a53 MFC r274366:
Add missing privilege check when setting the dump device.

Approved by:	pjd, secteam (both no objections)
Sponsored by:	Multiplay
2015-11-23 18:00:55 +00:00
smh
7389b64286 MFC r290406:
Fix g_eli error loss conditions

Sponsored by:	Multiplay
2015-11-23 12:17:46 +00:00
ngie
ce6ce6f599 MFC r286512:
Make some debug printf's into DPRINTF's to reduce noise on attach/detahh

Similar reasoning to what was done in r286367 with geom_uzip(4)

Differential Revision: D3320
Sponsored by: EMC / Isilon Storage Division
2015-10-25 22:38:17 +00:00
ngie
150ec7a9ce MFC r286367:
Make some debug printf's into DPRINTF's to reduce noise on attach/detach

Differential Revision: https://reviews.freebsd.org/D3306
Reviewed by: loos
Sponsored by: EMC / Isilon Storage Division
2015-10-25 22:21:19 +00:00
trasz
d6b9751caa MFC r287827:
Add a way to specify stripesize and stripeoffset to gnop(8). This makes
it possible to "simulate" 4K media, to eg test alignment handling.

Sponsored by:	The FreeBSD Foundation
2015-10-18 15:02:07 +00:00
trasz
e93b464d00 MFC r286283:
Fix panic triggered by code like this:
open("/dev/md0", O_EXEC);

Sponsored by:	The FreeBSD Foundation
2015-10-18 14:36:04 +00:00
trasz
43f70df899 MFC r286237:
Fix panic that would happen on forcibly unmounting devfs (note that
as it is now, devfs ignores MNT_FORCE anyway, so it needs to be modified
to trigger the panic) with consumers still opened.

Note that this still results in a leak of r/w/e counters.  It seems
to be harmless, though.  If anyone knows a better way to approach
this - please tell.

Sponsored by:	The FreeBSD Foundation
2015-10-18 14:34:13 +00:00
imp
617221c539 MFC 281310, 287567:
r287567 | imp | 2015-09-08 11:47:56 -0600 (Tue, 08 Sep 2015) | 16 lines

Mark the swap pager as direct dispatch compatible.

r281310 | mav | 2015-04-09 07:09:05 -0600 (Thu, 09 Apr 2015) | 4 lines

Remove sleeps from geom_up thread on device destruction.
2015-09-16 04:38:07 +00:00
imp
bd8403067b MFC: r287405:
Make out of memory behavior less pathological.
2015-09-08 18:37:16 +00:00
kib
8c79292e68 MFC r286404:
The condition to use direct processing for the unmapped bio is reverted.

MFC r286405:
Minor style cleanup of the code surrounding r286404.
2015-08-14 12:23:20 +00:00
pfg
2df02110dd MFC r286615:
Clean up some externally visible "more then" occurences
2015-08-14 02:45:22 +00:00
ae
b77ef6b082 MFC r285889:
Report the scheme and provider names in warning message about unaligned
  partition.

  PR:		201873
2015-08-02 16:25:21 +00:00
trasz
75c063e8b8 MFC r284582:
Fix off-by-one error in fstyp(8) and geom_label(4) that made them use
a single space (" ") as a CD9660 label name when no label was present.
Similar problem was also present in msdosfs label recognition.

Sponsored by:	The FreeBSD Foundation
2015-08-02 10:08:57 +00:00
allanjude
10c80a84da MFC: r285594
New partition flag for gpart, writes the 0xee partition in the pmbr in the second slot, rather than the first.
	Works around Lenovo legacy GPT boot issue

PR:		184910
Approved by:	re (gjb), marcel
Relnotes:	yes
Sponsored by:	ScaleEngine Inc.
Differential Revision:	https://reviews.freebsd.org/D3140
2015-07-21 15:50:14 +00:00
gjb
cee33caf0f MFC r273489 (cperciva):
Populate the GELI passphrase cache with the kern.geom.eli.passphrase
 variable (if any) provided in the boot environment.  Unset it from
 the kernel environment after doing this, so that the passphrase is
 no longer present in kernel memory once we enter userland.

 This will make it possible to provide a GELI passphrase via the boot
 loader.

 Note: head and stable/10 differ as a result of r273174, which renames
 the getenv(), setenv(), and unsetenv() functions with kern_getenv(),
 kern_setenv(), and kern_unsetenv(), which was reverted in the relevant
 parts of this change in 10-STABLE.

PR:		200448
Approved by:	re (kib)
Sponsored by:	The FreeBSD Foundation
2015-07-08 09:54:17 +00:00
gjb
82385ff484 Revert r285249, pending further investigation on how the build
broke.

Approved by:	re (implicit)
Pointyhat:	gjb (self)
Sponsored by:	The FreeBSD Foundation
2015-07-07 20:36:48 +00:00
gjb
4b4ce39bb7 MFC r273489 (cperciva):
Populate the GELI passphrase cache with the kern.geom.eli.passphrase
 variable (if any) provided in the boot environment.  Unset it from
 the kernel environment after doing this, so that the passphrase is
 no longer present in kernel memory once we enter userland.

 This will make it possible to provide a GELI passphrase via the boot
 loader.

PR:		200448
Approved by:	re (kib)
Sponsored by:	The FreeBSD Foundation
2015-07-07 18:52:22 +00:00
ae
383d953540 MFC r284151:
Teach G_PART_GPT class handle g_resize_provider event.
2015-06-18 17:42:24 +00:00
ae
f780971d93 MFC r283104:
Read GEOM_UNCOMPRESS metadata using several requests that fit into
  MAXPHYS. For large compressed images the metadata size can be bigger
  than MAXPHYS and this triggers KASSERT in g_read_data().
  Also use g_free() to free memory allocated by g_read_data().

  PR:		199476
2015-06-02 02:05:32 +00:00
trasz
7fcf215ed5 MFC r277170:
Add devd(8) notifications for creation and destruction of GEOM devices.

Sponsored by:	The FreeBSD Foundation
2015-05-15 10:42:48 +00:00
ae
8e1b135fb3 MFC r282465:
Add apple-boot, apple-hfs and apple-ufs aliases to MBR scheme.
  Sort DOSPTYP_* entries in diskmbr.h by value.
  Document these scheme-specific types in gpart(8).
2015-05-13 14:05:53 +00:00
pfg
386430302e MFC r281769:
g_uncompress_taste: prevent a double free.

Found by:	Clang Static Analyzer
2015-04-27 14:59:31 +00:00
mav
036979b3f8 MFC r280757: Remove request sorting from GEOM_MIRROR and GEOM_RAID.
When CPU is not busy, those queues are typically empty.  When CPU is busy,
then one more extra sorting is the last thing it needs.  If specific device
(HDD) really needs sorting, then it will be done later by CAM.

This supposed to fix livelock reported for mirror of two SSDs, when UFS
fires zillion of BIO_DELETE requests, that totally blocks I/O subsystem by
pointless sorting of requests and responses under single mutex lock.
2015-04-10 00:43:24 +00:00
mav
5f22f76484 MFC r280687: Make GEOM_PART work in presence of previous withered self. 2015-04-09 10:10:05 +00:00
mav
2b74acfbcc MFC r280686: Report withered providers as such alike to GEOMs. 2015-04-09 10:08:11 +00:00
mav
baa4297d14 MFC r280685: When searching for provider by name, prefer non-withered one. 2015-04-09 10:05:58 +00:00
mav
0e89c56fb7 MFC r280756, r280758: Fix bug on memory allocation error in split method.
While there, use bioq_takefirst() in place where it is convenient.
2015-04-03 06:16:20 +00:00
mav
40ede50928 MFC r279913: Fix couple BIO_DELETE bugs in geom_mirror.
Do not report GEOM::candelete if none of providers support BIO_DELETE.
If consumer still requests BIO_DELETE, report error instead of hanging.
2015-03-26 08:36:08 +00:00
ae
c07681e98f MFC r269854:
Remove duplicate entry.

MFC r279935:
  Add GUID and alias for Apple Core Storage partition.

  PR:		196241
2015-03-19 14:09:27 +00:00
mav
fa6dbb5ad5 MFC r279278: Replace constant with proper sizeof().
Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
2015-03-11 09:50:31 +00:00
mav
eac5956a91 MFC r275503:
Avoid unneeded malloc/memcpy/free if there is no metadata on disk.

Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
2014-12-19 01:13:41 +00:00
mav
bed1ef29db MFC r275475:
Decode some binary fields of Intel metadata.

Submitted by:	Dmitry Luhtionov <dmitryluhtionov@gmail.com>
2014-12-18 07:37:21 +00:00
mav
6414b04c27 MFC r274154, r274163:
Add to CTL support for logical block provisioning threshold notifications.

For ZVOL-backed LUNs this allows to inform initiators if storage's used or
available spaces get above/below the configured thresholds.

Sponsored by:	iXsystems, Inc.
2014-11-20 01:55:12 +00:00
ae
456c95b69d MFC r272746:
Add an ability to set dumpdev via loader(8) tunable.

MFC r272747:
  Revert r156046. We support setting dumpdev via loader tunable again.
  Also change default disk name to ada.
2014-10-29 11:07:40 +00:00
mav
928386888b MFC r273638:
Revert somewhat hackish geom_disk optimization, committed as part of r256880,
and the following r273143 commit, supposed to workaround introduced issue by
quite innocent-looking change.

While there is no clear understanding why, but r273143 is accused in data
corruption in some environments with high I/O load.  I personally don't see
any problem in that commit, and possibly it is just a trigger to some other
bug somewhere, but better safe then sorry for now.

Requested by:	scottl@
2014-10-28 08:00:28 +00:00
hselasky
1f41d295fb MFC r263710, r273377, r273378, r273423 and r273455:
- De-vnet hash sizes and hash masks.
- Fix multiple issues related to arguments passed to SYSCTL macros.

Sponsored by:	Mellanox Technologies
2014-10-27 14:38:00 +00:00
cperciva
925d357775 MFC r271664:
Cache GELI passphrases entered at the console during the boot process,
  in order to improve user-friendliness when a system has multiple disks
  encrypted using the same passphrase.

Relnotes:	yes
Approved by:	re (gjb)
2014-09-23 00:43:18 +00:00
emaste
37dd226a2e MFC EFI support for the installer
r264978 (nwhitehorn):

    Add EFI support to the installer. This requires that the kernel
    provide a sysctl to determine what firmware is in use. This sysctl
    does not exist yet, so the following blocks are in front of the
    wheels:
    - I've provisionally called this "hw.platform" after the equivalent
      thing on PPC
    - The logic to check the sysctl is short-circuited to always choose
      BIOS.  There's a comment in the top of the file about how to turn
      this off.

    If IA64 acquired a boot1.efifat-like thing (probably with very few
    modifications), the same code could be adapted there.

r265016 (nwhitehorn):

    Finish connecting up installer UEFI support. If the kernel was
    booted using EFI, set up the disks for an EFI system. If booted from
    BIOS/CSM, set up for BIOS.

r268256 (nwhitehorn):

    After EFI support was added to the installer, it needed to allow
    boot partitions of types other than "freebsd-boot" (in particular,
    "efi").  This allows the removal of some nasty hacks for supporting
    PowerPC systems, in particular aliasing freebsd-boot to apple-boot
    on APM and an IBM-specific code on MBR.

    This changes the installer to use the correct names, which also
    breaks a degeneracy in the meaning of "freebsd-boot" that allows the
    addition of support for some newer IBM systems that can boot from
    GPT in addition to MBR. Since I have no idea how to detect which
    those systems are, leave the default on IBM PPC systems as MBR for
    now.

Approved by:	re
PR:		193658
Relnotes:	Yes
2014-09-15 17:49:46 +00:00
smh
a7cb473513 MFC r256956:
Improve ZFS N-way mirror read performance by using load and locality
information.

MFC r260713:
Fix ZFS mirror code for handling multiple DVA's

Also make the addition of the d_rotation_rate binary compatible. This allows
storage drivers compiled for 10.0 to work by preserving the ABI for disks.

Approved by:	re (gjb)
Sponsored by:	Multiplay
2014-09-07 21:30:47 +00:00