<feed xmlns='http://www.w3.org/2005/Atom'>
<title>src/include/sys, branch zfs-0.7.0-rc2</title>
<subtitle>FreeBSD source tree</subtitle>
<id>https://cgit-dev.freebsd.org/src/atom?h=zfs-0.7.0-rc2</id>
<link rel='self' href='https://cgit-dev.freebsd.org/src/atom?h=zfs-0.7.0-rc2'/>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/'/>
<updated>2016-10-25T20:21:05Z</updated>
<entry>
<title>Do not upgrade userobj accounting for snapshot dataset</title>
<updated>2016-10-25T20:21:05Z</updated>
<author>
<name>jxiong</name>
<email>jinshan.xiong@gmail.com</email>
</author>
<published>2016-10-25T20:21:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=16fa68f07d268192552693f83a747c9141ea726b'/>
<id>urn:sha1:16fa68f07d268192552693f83a747c9141ea726b</id>
<content type='text'>
'zfs recv' could disown a living objset without calling
dmu_objset_disown(). This will cause the problem that the objset
would be released while the upgrading thread is still running.

This patch avoids the problem by checking if a dataset is a snapshot
before calling dmu_objset_userobjspace_upgrade().  Snapshots
are immutable and therefore it doesn't make sense to update them.

Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
Signed-off-by: Jinshan Xiong &lt;jinshan.xiong@intel.com&gt;
Closes #5295 
Closes #5328 </content>
</entry>
<entry>
<title>Turn on/off enclosure slot fault LED even when disk isn't present</title>
<updated>2016-10-24T17:45:59Z</updated>
<author>
<name>Tony Hutter</name>
<email>hutter2@llnl.gov</email>
</author>
<published>2016-10-24T17:45:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1bbd8770490f0e5b8c575865ab70f6853bca2a2a'/>
<id>urn:sha1:1bbd8770490f0e5b8c575865ab70f6853bca2a2a</id>
<content type='text'>
Previously when a drive faulted, the statechange-led.sh script would lookup
the drive's LED sysfs entry in /sys/block/sd*/device/enclosure_device, and
turn it on.  During testing we noticed that if you pulled out a drive, or if
the drive was so badly broken that it no longer appeared to Linux, that the
/sys/block/sd* path would be removed, and the script could not lookup the
LED entry.

To fix this, this patch looks up the disks's more persistent
"/sys/class/enclosure/X:X:X:X/Slot N" LED sysfs path at pool import.  It then
passes that path to the statechange-led script to use, rather than having the
script look it up on the fly.  This allows the script to turn on/off the slot
LEDs even when the drive is missing.

Closes #5309 
Closes #2375 </content>
</entry>
<entry>
<title>Fix coverity defects: CID 147472</title>
<updated>2016-10-20T18:24:01Z</updated>
<author>
<name>cao</name>
<email>cao.xuewen@zte.com.cn</email>
</author>
<published>2016-10-20T18:24:01Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=5a6765cf8cad21d22dc172b4089b655c9270d16a'/>
<id>urn:sha1:5a6765cf8cad21d22dc172b4089b655c9270d16a</id>
<content type='text'>
CID 147472: Type: 'Constant' variable guards dead code

Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
Signed-off-by: cao.xuewen &lt;cao.xuewen@zte.com.cn&gt;
Closes #5288 </content>
</entry>
<entry>
<title>Multipath autoreplace, control enclosure LEDs, event rate limiting</title>
<updated>2016-10-19T19:55:59Z</updated>
<author>
<name>Tony Hutter</name>
<email>hutter2@llnl.gov</email>
</author>
<published>2016-10-19T19:55:59Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=6078881aa18a45ea065a887e2a8606279cdc0329'/>
<id>urn:sha1:6078881aa18a45ea065a887e2a8606279cdc0329</id>
<content type='text'>
1. Enable multipath autoreplace support for FMA.

This extends FMA autoreplace to work with multipath disks.  This
requires libdevmapper to be installed at build time.

2. Turn on/off fault LEDs when VDEVs become degraded/faulted/online

Set ZED_USE_ENCLOSURE_LEDS=1 in zed.rc to have ZED turn on/off the enclosure
LED for a drive when a drive becomes FAULTED/DEGRADED.  Your enclosure must
be supported by the Linux SES driver for this to work.  The enclosure LED
scripts work for multipath devices as well.  The scripts will clear the LED
when the fault is cleared.

3. Rate limit ZIO delay and checksum events so as not to flood ZED

ZIO delay and checksum events are rate limited to 5/sec in the zfs module.

Reviewed-by: Richard Laager &lt;rlaager@wiktel.com&gt;
Reviewed by: Don Brady &lt;don.brady@intel.com&gt;
Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
Signed-off-by: Tony Hutter &lt;hutter2@llnl.gov&gt;
Closes #2449 
Closes #3017 
Closes #5159 </content>
</entry>
<entry>
<title>OpenZFS 7090 - zfs should throttle allocations</title>
<updated>2016-10-14T00:59:18Z</updated>
<author>
<name>Don Brady</name>
<email>don.brady@intel.com</email>
</author>
<published>2016-10-14T00:59:18Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3dfb57a35e8cbaa7c424611235d669f3c575ada1'/>
<id>urn:sha1:3dfb57a35e8cbaa7c424611235d669f3c575ada1</id>
<content type='text'>
OpenZFS 7090 - zfs should throttle allocations

Authored by: George Wilson &lt;george.wilson@delphix.com&gt;
Reviewed by: Alex Reece &lt;alex@delphix.com&gt;
Reviewed by: Christopher Siden &lt;christopher.siden@delphix.com&gt;
Reviewed by: Dan Kimmel &lt;dan.kimmel@delphix.com&gt;
Reviewed by: Matthew Ahrens &lt;mahrens@delphix.com&gt;
Reviewed by: Paul Dagnelie &lt;paul.dagnelie@delphix.com&gt;
Reviewed by: Prakash Surya &lt;prakash.surya@delphix.com&gt;
Reviewed by: Sebastien Roy &lt;sebastien.roy@delphix.com&gt;
Approved by: Matthew Ahrens &lt;mahrens@delphix.com&gt;
Ported-by: Don Brady &lt;don.brady@intel.com&gt;
Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;

When write I/Os are issued, they are issued in block order but the ZIO
pipeline will drive them asynchronously through the allocation stage
which can result in blocks being allocated out-of-order. It would be
nice to preserve as much of the logical order as possible.

In addition, the allocations are equally scattered across all top-level
VDEVs but not all top-level VDEVs are created equally. The pipeline
should be able to detect devices that are more capable of handling
allocations and should allocate more blocks to those devices. This
allows for dynamic allocation distribution when devices are imbalanced
as fuller devices will tend to be slower than empty devices.

The change includes a new pool-wide allocation queue which would
throttle and order allocations in the ZIO pipeline. The queue would be
ordered by issued time and offset and would provide an initial amount of
allocation of work to each top-level vdev. The allocation logic utilizes
a reservation system to reserve allocations that will be performed by
the allocator. Once an allocation is successfully completed it's
scheduled on a given top-level vdev. Each top-level vdev maintains a
maximum number of allocations that it can handle (mg_alloc_queue_depth).
The pool-wide reserved allocations (top-levels * mg_alloc_queue_depth)
are distributed across the top-level vdevs metaslab groups and round
robin across all eligible metaslab groups to distribute the work. As
top-levels complete their work, they receive additional work from the
pool-wide allocation queue until the allocation queue is emptied.

OpenZFS-issue: https://www.illumos.org/issues/7090
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/4756c3d7
Closes #5258 

Porting Notes:
- Maintained minimal stack in zio_done
- Preserve linux-specific io sizes in zio_write_compress
- Added module params and documentation
- Updated to use optimize AVL cmp macros</content>
</entry>
<entry>
<title>Add support for user/group dnode accounting &amp; quota</title>
<updated>2016-10-07T16:45:13Z</updated>
<author>
<name>Jinshan Xiong</name>
<email>jinshan.xiong@intel.com</email>
</author>
<published>2016-10-04T18:46:10Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=1de321e6260f5b83eb943b6ce2166a3879f42df4'/>
<id>urn:sha1:1de321e6260f5b83eb943b6ce2166a3879f42df4</id>
<content type='text'>
This patch tracks dnode usage for each user/group in the
DMU_USER/GROUPUSED_OBJECT ZAPs. ZAP entries dedicated to dnode
accounting have the key prefixed with "obj-" followed by the UID/GID
in string format (as done for the block accounting).
A new SPA feature has been added for dnode accounting as well as
a new ZPL version. The SPA feature must be enabled in the pool
before upgrading the zfs filesystem. During the zfs version upgrade,
a "quotacheck" will be executed by marking all dnode as dirty.

ZoL-bug-id: https://github.com/zfsonlinux/zfs/issues/3500

Signed-off-by: Jinshan Xiong &lt;jinshan.xiong@intel.com&gt;
Signed-off-by: Johann Lombardi &lt;johann.lombardi@intel.com&gt;
</content>
</entry>
<entry>
<title>OpenZFS 4185 - add new cryptographic checksums to ZFS: SHA-512, Skein, Edon-R</title>
<updated>2016-10-03T21:51:15Z</updated>
<author>
<name>Tony Hutter</name>
<email>hutter2@llnl.gov</email>
</author>
<published>2016-06-15T22:47:05Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=3c67d83a8afb391f20bc53d36a0cebea6897b3e2'/>
<id>urn:sha1:3c67d83a8afb391f20bc53d36a0cebea6897b3e2</id>
<content type='text'>
Reviewed by: George Wilson &lt;george.wilson@delphix.com&gt;
Reviewed by: Prakash Surya &lt;prakash.surya@delphix.com&gt;
Reviewed by: Saso Kiselkov &lt;saso.kiselkov@nexenta.com&gt;
Reviewed by: Richard Lowe &lt;richlowe@richlowe.net&gt;
Approved by: Garrett D'Amore &lt;garrett@damore.org&gt;
Ported by: Tony Hutter &lt;hutter2@llnl.gov&gt;

OpenZFS-issue: https://www.illumos.org/issues/4185
OpenZFS-commit: https://github.com/openzfs/openzfs/commit/45818ee

Porting Notes:
This code is ported on top of the Illumos Crypto Framework code:

    https://github.com/zfsonlinux/zfs/pull/4329/commits/b5e030c8dbb9cd393d313571dee4756fbba8c22d

The list of porting changes includes:

- Copied module/icp/include/sha2/sha2.h directly from illumos

- Removed from module/icp/algs/sha2/sha2.c:
	#pragma inline(SHA256Init, SHA384Init, SHA512Init)

- Added 'ctx' to lib/libzfs/libzfs_sendrecv.c:zio_checksum_SHA256() since
  it now takes in an extra parameter.

- Added CTASSERT() to assert.h from for module/zfs/edonr_zfs.c

- Added skein &amp; edonr to libicp/Makefile.am

- Added sha512.S.  It was generated from sha512-x86_64.pl in Illumos.

- Updated ztest.c with new fletcher_4_*() args; used NULL for new CTX argument.

- In icp/algs/edonr/edonr_byteorder.h, Removed the #if defined(__linux) section
  to not #include the non-existant endian.h.

- In skein_test.c, renane NULL to 0 in "no test vector" array entries to get
  around a compiler warning.

- Fixup test files:
	- Rename &lt;sys/varargs.h&gt; -&gt; &lt;varargs.h&gt;, &lt;strings.h&gt; -&gt; &lt;string.h&gt;,
	- Remove &lt;note.h&gt; and define NOTE() as NOP.
	- Define u_longlong_t
	- Rename "#!/usr/bin/ksh" -&gt; "#!/bin/ksh -p"
	- Rename NULL to 0 in "no test vector" array entries to get around a
	  compiler warning.
	- Remove "for isa in $($ISAINFO); do" stuff
	- Add/update Makefiles
	- Add some userspace headers like stdio.h/stdlib.h in places of
	  sys/types.h.

- EXPORT_SYMBOL *_Init/*_Update/*_Final... routines in ICP modules.

- Update scripts/zfs2zol-patch.sed

- include &lt;sys/sha2.h&gt; in sha2_impl.h

- Add sha2.h to include/sys/Makefile.am

- Add skein and edonr dirs to icp Makefile

- Add new checksums to zpool_get.cfg

- Move checksum switch block from zfs_secpolicy_setprop() to
  zfs_check_settable()

- Fix -Wuninitialized error in edonr_byteorder.h on PPC

- Fix stack frame size errors on ARM32
  	- Don't unroll loops in Skein on 32-bit to save stack space
  	- Add memory barriers in sha2.c on 32-bit to save stack space

- Add filetest_001_pos.ksh checksum sanity test

- Add option to write psudorandom data in file_write utility
</content>
</entry>
<entry>
<title>Add parity generation/rebuild using 128-bits NEON for Aarch64</title>
<updated>2016-10-03T16:44:00Z</updated>
<author>
<name>Romain Dolbeau</name>
<email>romain.github@dolbeau.name</email>
</author>
<published>2016-10-03T16:44:00Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=62a65a654e15a1388bfb571727e69b46e7cc07ab'/>
<id>urn:sha1:62a65a654e15a1388bfb571727e69b46e7cc07ab</id>
<content type='text'>
This re-use the framework established for SSE2, SSSE3 and
AVX2. However, GCC is using FP registers on Aarch64, so
unlike SSE/AVX2 we can't rely on the registers being left alone
between ASM statements. So instead, the NEON code uses
C variables and GCC extended ASM syntax. Note that since
the kernel explicitly disable vector registers, they
have to be locally re-enabled explicitly.

As we use the variable's number to define the symbolic
name, and GCC won't allow duplicate symbolic names,
numbers have to be unique. Even when the code is not
going to be used (e.g. the case for 4 registers when
using the macro with only 2). Only the actually used
variables should be declared, otherwise the build
will fails in debug mode.

This requires the replacement of the XOR(X,X) syntax
by a new ZERO(X) macro, which does the same thing but
without repeating the argument. And perhaps someday
there will be a machine where there is a more efficient
way to zero a register than XOR with itself. This affects
scalar, SSE2, SSSE3 and AVX2 as they need the new macro.

It's possible to write faster implementations (different
scheduling, different unrolling, interleaving NEON and
scalar, ...) for various cores, but this one has the
advantage of fitting in the current state of the code,
and thus is likely easier to review/check/merge.

The only difference between aarch64-neon and aarch64-neonx2
is that aarch64-neonx2 unroll some functions some more.

Reviewed-by: Gvozden Neskovic &lt;neskovic@gmail.com&gt;
Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
Signed-off-by: Romain Dolbeau &lt;romain.dolbeau@atos.net&gt;
Closes #4801 </content>
</entry>
<entry>
<title>fix: Shift exponent too large</title>
<updated>2016-09-29T22:55:41Z</updated>
<author>
<name>Gvozden Neskovic</name>
<email>neskovic@gmail.com</email>
</author>
<published>2016-08-31T08:12:08Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=031d7c2fe6afaa78943bd0a563b91fc84ace42d7'/>
<id>urn:sha1:031d7c2fe6afaa78943bd0a563b91fc84ace42d7</id>
<content type='text'>
Undefined operation is reported by running ztest (or zloop) compiled with GCC
UndefinedBehaviorSanitizer. Error only happens on top level of dnode indirection
with large enough offset values. Logically, left shift operation would work,
but bit shift semantics in C, and limitation of uint64_t, do not produce desired
result.

Issue #5059, #4883

Signed-off-by: Gvozden Neskovic &lt;neskovic@gmail.com&gt;
</content>
</entry>
<entry>
<title>OpenZFS 7230 - add assertions to dmu_send_impl() to verify that stream includes BEGIN and END records</title>
<updated>2016-09-22T23:01:19Z</updated>
<author>
<name>kernelOfTruth aka. kOT, Gentoo user</name>
<email>kerneloftruth@gmail.com</email>
</author>
<published>2016-09-22T23:01:19Z</published>
<link rel='alternate' type='text/html' href='https://cgit-dev.freebsd.org/src/commit/?id=51907a31bc20a6697ec9a92a58c163a0c0df5de7'/>
<id>urn:sha1:51907a31bc20a6697ec9a92a58c163a0c0df5de7</id>
<content type='text'>
Authored by: Matt Krantz &lt;matt.krantz@delphix.com&gt;
Reviewed by: Matthew Ahrens &lt;mahrens@delphix.com&gt;
Reviewed by: Paul Dagnelie &lt;pcd@delphix.com&gt;
Reviewed by: Igor Kozhukhov &lt;ikozhukhov@gmail.com&gt;
Reviewed-by: Brian Behlendorf &lt;behlendorf1@llnl.gov&gt;
Approved by: Robert Mustacchi &lt;rm@joyent.com&gt;
Ported-by: kernelOfTruth &lt;kerneloftruth@gmail.com&gt;

OpenZFS-issue: https://www.illumos.org/issues/7230
OpenZFS-commit: https://github.com/illumos/illumos-gate/commit/12b90ee2
Closes #5112 </content>
</entry>
</feed>
