Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Raidz #2

Closed
wants to merge 705 commits into from
Closed

Raidz #2

wants to merge 705 commits into from
This pull request is big! We’re only showing the most recent 250 commits.

Commits on Dec 16, 2019

  1. Fix zfs_xattr_owner_unlinked on FreeBSD and comment

    Explain FreeBSD VFS' unfortunate idiosyncratic locking requirements.
    There is no functional change for other platforms.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9720
    mattmacy authored and behlendorf committed Dec 16, 2019
    Configuration menu
    Copy the full SHA
    ba434b1 View commit details
    Browse the repository at this point in the history

Commits on Dec 17, 2019

  1. initramfs: setup keymapping and video for prompts

    From Steve Langasek <steve.langasek@canonical.com>:
    > The poorly-named 'FRAMEBUFFER' option in initramfs-tools controls
    > whether the console_setup and plymouth scripts are included and used
    > in the initramfs. These are required for any initramfs which will be
    > prompting for user input: console_setup because without it the user's
    > configured keymap will not be set up, and plymouth because you are
    > not guaranteed to have working video output in the initramfs without
    > it (e.g. some nvidia+UEFI configurations with the default GRUB
    > behavior).
    
    > The zfs initramfs script may need to prompt the user for passphrases
    > for encrypted zfs datasets, and we don't know definitively whether
    > this is the case or not at the time the initramfs is constructed (and
    > it's difficult to dynamically populate initramfs config variables
    > anyway), therefore the zfs-initramfs package should just set
    > FRAMEBUFFER=yes in a conf snippet the same way that the
    > cryptsetup-initramfs package does
    > (/usr/share/initramfs-tools/conf-hooks.d/cryptsetup).
    
    https://bugs.launchpad.net/ubuntu/+source/zfs-linux/+bug/1856408
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Steve Langasek <steve.langasek@canonical.com>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    Closes openzfs#9723
    rlaager authored and behlendorf committed Dec 17, 2019
    Configuration menu
    Copy the full SHA
    ad97643 View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2019

  1. Force systems with kernel option "quiet" to display prompt for password

    On systems that utilize TTY for password entry, if the kernel 
    option "quiet" is set, the system would appear to freeze on a 
    blank screen, when in fact it is waiting for password entry 
    from the user.
    
    Since TTY is the fallback method, this has no effect on systemd 
    or plymouth password prompting.
    
    By temporarily setting "printk" to "7", running the command, 
    then resuming with the original "printk" state, the user can 
    see the password prompt.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Garrett Fields <ghfields@gmail.com>
    Closes openzfs#9731
    ghfields authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    e8b199f View commit details
    Browse the repository at this point in the history
  2. Moves Codecov Ignore to LCOV

    Rely on ax_code_coverage to exclude test directories.
    
    - Removes broken codecov ignore
    - Places ignore section in ax_code_coverage
    - Forwards users from codecov to LCOV for ignores
    
    Reviewed-by: Prakash Surya <prakash.surya@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
    Closes openzfs#9726
    Kjeld Schouten-Lebbing authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    3035f14 View commit details
    Browse the repository at this point in the history
  3. Create symbolic links in /dev/disk/by-vdev for nvme disk devices

    The existing rules miss nvme disk devices because of the trailing
    digits in the KERNEL device name, e.g. nvme0n1. Partitions of nvme
    disk devices are already properly handled by the existing rule for
    ENV{DEVTYPE}=="partition".
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Thomas Geppert <geppi@digitx.de>
    Closes openzfs#9730
    geppi authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    fe56484 View commit details
    Browse the repository at this point in the history
  4. Minor performance fix for NEON RAID-Z

    The NEON code replicates too closely the SSE code, including
    a masked 16-bits shift. But NEON, like AltiVec (openzfs#9539), has
    unsigned 8-bits shift, so use that instead and drop the masking.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Romain Dolbeau <romain.dolbeau@european-processor-initiative.eu>
    Closes openzfs#9725
    rdolbeau authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    118fc3e View commit details
    Browse the repository at this point in the history
  5. Update ZTS to work on FreeBSD

    Update the common ZTS scripts and individual test cases as needed 
    in order to allow them to be run on FreeBSD.  The high level goal
    is to provide compatibility wrappers whenever possible to minimize
    changes to individual test cases.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9692
    mattmacy authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    7839c4b View commit details
    Browse the repository at this point in the history
  6. Exchanged two "${ZFS} get -H -o value" commands

    Initramfs uses "get_fs_value()" elsewhere.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
    Signed-off-by: Garrett Fields <ghfields@gmail.com>
    Closes openzfs#9736
    ghfields authored and behlendorf committed Dec 18, 2019
    Configuration menu
    Copy the full SHA
    b8a899e View commit details
    Browse the repository at this point in the history

Commits on Dec 19, 2019

  1. cppcheck: (error) Uninitialized variable

    Resolve the following uninitialized variable warnings.  In practice
    these were unreachable due to the goto.  Replacing the goto with a
    return resolves the warning and yields more readable code.
    
    [module/icp/algs/modes/ccm.c:892]: (error) Uninitialized variable: ccm_param
    [module/icp/algs/modes/ccm.c:893]: (error) Uninitialized variable: ccm_param
    [module/icp/algs/modes/gcm.c:564]: (error) Uninitialized variable: gcm_param
    [module/icp/algs/modes/gcm.c:565]: (error) Uninitialized variable: gcm_param
    [module/icp/algs/modes/gcm.c:599]: (error) Uninitialized variable: gmac_param
    [module/icp/algs/modes/gcm.c:600]: (error) Uninitialized variable: gmac_param
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    Ubuntu authored and behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    5215fdd View commit details
    Browse the repository at this point in the history
  2. cppcheck: (error) Uninitialized variable

    As of cppcheck 1.82 warnings are issued when using the list_for_each_*
    functions with an uninitialized variable.  Functionally, this is fine
    but to resolve the warning initialize these variables.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    Ubuntu authored and behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    7cf1fe6 View commit details
    Browse the repository at this point in the history
  3. cppcheck: (error) Shifting signed 64-bit value by 63 bits

    As of cppcheck 1.82 surpress the warning regarding shifting too many
    bits for __divdi3() implemention.  The algorithm used here is correct.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    Ubuntu authored and behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    abfdb83 View commit details
    Browse the repository at this point in the history
  4. cppcheck: (error) Memory leak: vtoc

    Resolve the reported memory leak by using a dedicated local vptr
    variable to store the pointer reported by calloc().  Only assign the
    passed **vtoc function argument on success, in all other cases vptr
    is freed.
    
    [lib/libefi/rdwr_efi.c:403]: (error) Memory leak: vtoc
    [lib/libefi/rdwr_efi.c:422]: (error) Memory leak: vtoc
    [lib/libefi/rdwr_efi.c:440]: (error) Memory leak: vtoc
    [lib/libefi/rdwr_efi.c:454]: (error) Memory leak: vtoc
    [lib/libefi/rdwr_efi.c:470]: (error) Memory leak: vtoc
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    fe20400 View commit details
    Browse the repository at this point in the history
  5. cppcheck: (warning) Possible null pointer dereference: dnp

    The dnp argument can only be set to NULL when the DNODE_DRY_RUN flag
    is set.  In which case, an early return path will be executed and a
    NULL pointer dereference at the given location is impossible.  Add
    an additional ASSERT to silence the cppcheck warning and document
    that dbp must never be NULL at the point in the function.
    
    [module/zfs/dnode.c:1566]: (warning) Possible null pointer deref: dnp
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    070402f View commit details
    Browse the repository at this point in the history
  6. cppcheck: (error) Null pointer dereference: who_perm

    As indicated by the VERIFY the local who_perm variable can never
    be NULL in parse_fs_perm().  Due to the existence of the is_set
    conditional, which is always true, cppcheck 1.88 was reporting
    a possible NULL reference.  Resolve the issue by removing the
    extraneous is_set variable.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    1e49b28 View commit details
    Browse the repository at this point in the history
  7. cppcheck: (error) Address of local auto-variable assigned

    Suppress autoVariables warnings in the lua interpreter.  The usage
    here while unconventional in intentional and the same as upstream.
    
    [module/lua/ldebug.c:327]: (error) Address of local auto-variable
        assigned to a function parameter.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    487bdda View commit details
    Browse the repository at this point in the history
  8. cppcheck: (warning) Possible null pointer dereference: nvh

    Move the 'nvh = (void *)buf' assignment after the 'buf == NULL'
    check to resolve the warning.  Interestingly, cppcheck 1.88
    correctly determines that the existing code is safe, while
    cppcheck 1.86 reports the warning.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9732
    behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    d16a207 View commit details
    Browse the repository at this point in the history
  9. Update zfs.sh work on FreeBSD

    Extend the zfs.sh script to load and unload zfs kmods on FreeBSD.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9746
    Ryan Moeller authored and behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    a364048 View commit details
    Browse the repository at this point in the history
  10. Tests for btree implementation used by range trees

    Additional test cases for the btree implementation, see openzfs#9181.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: John Kennedy <john.kennedy@delphix.com>
    Closes openzfs#9717
    jwk404 authored and behlendorf committed Dec 19, 2019
    Configuration menu
    Copy the full SHA
    523fc80 View commit details
    Browse the repository at this point in the history
  11. ZTS: Various test case fixes

    * devices_001_pos and devices_002_neg - Failing after FreeBSD ZTS
      merged due to missing 'function' keyword for create_dev_file_linux.
    
    * pool_state - Occasionally fails due to an insufficient delay
      before checking 'zpool status'.  Increasing the delay from 1 to 3
      seconds resolved the issue in local testing.
    
    * procfs_list_basic - Fails when run in-tree because the logged
      command is actually 'lt-zfs'.  Updated the regex accordingly.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9748
    behlendorf authored Dec 19, 2019
    Configuration menu
    Copy the full SHA
    5e8ac05 View commit details
    Browse the repository at this point in the history

Commits on Dec 20, 2019

  1. Colorize zpool status output

    If the ZFS_COLOR env variable is set, then use ANSI color
    output in zpool status:
    
    - Column headers are bold
    - Degraded or offline pools/vdevs are yellow
    - Non-zero error counters and faulted vdevs/pools are red
    - The 'status:' and 'action:' sections are yellow if they're
      displaying a warning.
    
    This also includes a new 'faketty' function in libtest.shlib that is
    compatible with FreeBSD (code provided by @freqlabs).
    
    Reviewed-by: Jorgen Lundman <lundman@lundman.net>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Tony Hutter <hutter2@llnl.gov>
    Closes openzfs#9340
    tonyhutter authored and behlendorf committed Dec 20, 2019
    Configuration menu
    Copy the full SHA
    9fb2771 View commit details
    Browse the repository at this point in the history
  2. Fix test pattern in zts-report.py

    The pattern was not updated to match when the test output changed to
    include a platform identifier for platform specific tests.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9750
    Ryan Moeller authored and behlendorf committed Dec 20, 2019
    Configuration menu
    Copy the full SHA
    54aefa6 View commit details
    Browse the repository at this point in the history

Commits on Dec 23, 2019

  1. Update maximum kernel version to 5.4

    Increase the maximum supported kernel version to 5.4.  This was
    verified using the Fedora 5.4.2-300.fc31.x86_64 kernel.
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9754
    Closes openzfs#9759
    behlendorf authored Dec 23, 2019
    Configuration menu
    Copy the full SHA
    c587b2c View commit details
    Browse the repository at this point in the history

Commits on Dec 26, 2019

  1. ZTS: Test case failures

    * large_dnode_008_pos - Force a pool sync before invoking zdb to
      ensure the updated dnode blocks have been persisted to disk.
    
    * refreserv_raidz - Wait for the /dev/zvol links to be both created
      and removed, this is important because the same device volume
      names are being used repeatedly.
    
    * btree_test - Add missing .gitignore file for btree_test binary.
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9769
    behlendorf authored Dec 26, 2019
    Configuration menu
    Copy the full SHA
    80bde2c View commit details
    Browse the repository at this point in the history
  2. Cancel initialize and TRIM before vdev_metaslab_fini()

    Any running 'zpool initialize' or TRIM must be cancelled prior
    to the vdev_metaslab_fini() call in spa_vdev_remove_log() which
    will unload the metaslabs and set ms->ms_group == NULL.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#8602
    Closes openzfs#9751
    behlendorf authored Dec 26, 2019
    Configuration menu
    Copy the full SHA
    635a01a View commit details
    Browse the repository at this point in the history
  3. libspl: declare aok extern in header

    Rather than defining a new instance of 'aok' in every compilation
    unit which includes this header, there is a single instance
    defined in zone.c, and the header now only declares an extern.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Nick Black <dankamongmen@gmail.com>
    Closes openzfs#9752
    dankamongmen authored and behlendorf committed Dec 26, 2019
    Configuration menu
    Copy the full SHA
    8cda5c5 View commit details
    Browse the repository at this point in the history
  4. In initramfs, do not prompt if keylocation is "file://"

    If the encryption key is stored in a file, the initramfs should not
    prompt for the password. For example, this could be the case if the boot
    partition is stored on removable media that is only present at boot time
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Garrett Fields <ghfields@gmail.com>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Sam Lunt <samuel.j.lunt@gmail.com>
    Closes openzfs#9764
    sam-lunt authored and behlendorf committed Dec 26, 2019
    Configuration menu
    Copy the full SHA
    ad353e2 View commit details
    Browse the repository at this point in the history
  5. Avoid some crashes when importing a pool with corrupt metadata

    - Skip invalid DVAs when importing pools in readonly mode
      (in addition to when the config is untrusted).
    
    - Upon encountering a DVA with a null VDEV, fail gracefully
      instead of panicking with a NULL pointer dereference.
    
    Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Steve Mokris <smokris@softpixel.com>
    Closes openzfs#9022
    smokris authored and behlendorf committed Dec 26, 2019
    Configuration menu
    Copy the full SHA
    d5c97f3 View commit details
    Browse the repository at this point in the history

Commits on Dec 27, 2019

  1. ZTS: devices_001_pos and devices_002_neg

    Update the devices_001_pos and devices_002_neg test cases such that the
    special block device file created is backed by a ZFS volume.  Specifying
    a specific device allows the major and minor numbers to be easily
    determined.  Furthermore, this avoids the potentially dangerous behavior
    of opening the first block device we happen to find under /dev/.
    
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9773
    behlendorf authored Dec 27, 2019
    Configuration menu
    Copy the full SHA
    590ff61 View commit details
    Browse the repository at this point in the history
  2. ZTS: zfs_program_json

    As of Python 3.5 the default behavior of json.tool was changed to
    preserve the input order rather than lexical order.  The test case
    expects the output to be sorted so apply the --sort-keys option
    to the json.tool command when using Python 3.5 and the option is
    supported.
    
        https://docs.python.org/3/library/json.html#module-json.tool
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9774
    behlendorf authored Dec 27, 2019
    Configuration menu
    Copy the full SHA
    a6f6ef8 View commit details
    Browse the repository at this point in the history

Commits on Dec 28, 2019

  1. ZTS: Replace /var/tmp with $TEST_BASE_DIR

    Remove a few hardcoded instances of /var/tmp.  This should use
    the $TEST_BASE_DIR in order to allow the ZTS to be optionally
    run in an alternate directory using `zfs-tests.sh -d <path>`.
    
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9775
    behlendorf authored Dec 28, 2019
    Configuration menu
    Copy the full SHA
    edb24be View commit details
    Browse the repository at this point in the history
  2. ZTS: Fix pool_state cleanup

    The externally faulted vdev should be brought back online and have
    its errors cleared before the pool is destroyed.  Failure to do so
    will leave a vdev with a valid active label.  This vdev may then
    not be used to create a new pool without the -f flag potentially
    leading to subsequent test failures.
    
    Additionally remove an unreachable log_pass from setup.ksh.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9777
    behlendorf authored Dec 28, 2019
    Configuration menu
    Copy the full SHA
    2c47bd5 View commit details
    Browse the repository at this point in the history

Commits on Dec 29, 2019

  1. zfs-load-key.sh: ${ZFS} is not the zfs binary

    A change[1] was merged yesterday that should refer
    to the zfs binary in the initramfs, but is actually
    an unset shell variable.
    
    This commit changes this line to call `zfs` directly
    like the surrounding code.
    
    [1]: cb5b875
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Garrett Fields <ghfields@gmail.com>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Ben Cordero <bencord0@condi.me>
    Closes openzfs#9780
    bencord0 authored and behlendorf committed Dec 29, 2019
    Configuration menu
    Copy the full SHA
    153db76 View commit details
    Browse the repository at this point in the history

Commits on Dec 30, 2019

  1. zdb: print block checksums with 6 d's of verbosity

    Include checksums in the output of 'zdb -dddddd' along
    with other indirect block information already displayed.
    
    Example output follows (with long lines trimmed):
    
    $ zdb -dddddd tank/fish 128
    Dataset tank/fish [ZPL], ID 259, cr_txg 10, 16.2M, 93 objects, rootbp DV
    
        Object  lvl   iblk   dblk  dsize  dnsize  lsize   %full  type
           128    2   128K   128K   634K     512     1M  100.00  ZFS plain f
                                                   168   bonus  System attri
        dnode flags: USED_BYTES USERUSED_ACCOUNTED USEROBJUSED_ACCOUNTED
        dnode maxblkid: 7
        path    /c
        uid     0
        gid     0
        atime    Sat Dec 21 10:49:26 2019
        mtime    Sat Dec 21 10:49:26 2019
        ctime    Sat Dec 21 10:49:26 2019
        crtime    Sat Dec 21 10:49:26 2019
        gen    41
        mode    100755
        size    964592
        parent    34
        links    1
        pflags    40800000104
    Indirect blocks:
                   0 L1  0:2c0000:400 0:c021e00:400 20000L/400P F=8 B=41/41
                   0  L0 0:227800:13800 20000L/13800P F=1 B=41/41 cksum=167a
               20000  L0 0:25ec00:17c00 20000L/17c00P F=1 B=41/41 cksum=2312
               40000  L0 0:276800:18400 20000L/18400P F=1 B=41/41 cksum=24e0
               60000  L0 0:2a7800:18800 20000L/18800P F=1 B=41/41 cksum=25be
               80000  L0 0:28ec00:18c00 20000L/18c00P F=1 B=41/41 cksum=2579
               a0000  L0 0:24d000:11c00 20000L/11c00P F=1 B=41/41 cksum=140a
               c0000  L0 0:23b000:12000 20000L/12000P F=1 B=41/41 cksum=164e
               e0000  L0 0:221e00:5a00 20000L/5a00P F=1 B=41/41 cksum=9de790
    
            segment [0000000000000000, 0000000000100000) size    1M
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ned Bass <bass6@llnl.gov>
    Closes openzfs#9765
    nedbass authored and behlendorf committed Dec 30, 2019
    Configuration menu
    Copy the full SHA
    8b3438e View commit details
    Browse the repository at this point in the history
  2. Improve Pull Request guidelines

    - Splits PR advice into two sections.
    - Add "co-authored-by" instructions.
    - Add description of draft PR and when using it is appropriate.
    - Reword ZFS Test Suite checklist question.
    - Link to zfs-tests.sh and zloop.sh.
    
    Reviewed-By: Marcel Schilling <marcel.schilling@mdc-berlin.de>
    Reviewed-By: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-By: Richard Laager <rlaager@wiktel.com>
    Co-Authored-By: Marcel Schilling <marcel.schilling@mdc-berlin.de>
    Co-Authored-By: Brian Behlendorf <behlendorf1@llnl.gov>
    Co-Authored-By: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
    Closes openzfs#9753
    Kjeld Schouten-Lebbing authored and behlendorf committed Dec 30, 2019
    Configuration menu
    Copy the full SHA
    82e996c View commit details
    Browse the repository at this point in the history

Commits on Jan 2, 2020

  1. Add FreeBSD core handling in zloop.sh

    And use the correct path to libtool and ztest.
    
    Reviewed-By: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9790
    Ryan Moeller authored and behlendorf committed Jan 2, 2020
    Configuration menu
    Copy the full SHA
    54007c7 View commit details
    Browse the repository at this point in the history

Commits on Jan 3, 2020

  1. Static symbols exported by ICP

    The crypto_cipher_init_prov and crypto_cipher_init are declared static
    and should not be exported by the ICP.  This resolves the following
    warnings observed when building with the 5.4 kernel.
    
    WARNING: "crypto_cipher_init" [.../icp] is a static EXPORT_SYMBOL
    WARNING: "crypto_cipher_init_prov" [.../icp] is a static EXPORT_SYMBOL
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9791
    behlendorf authored Jan 3, 2020
    Configuration menu
    Copy the full SHA
    cc618d1 View commit details
    Browse the repository at this point in the history
  2. ZTS: Move dumpdev tests to sunos.run

    Neither FreeBSD nor Linux support dumping to zvols.
    
    DilOS still uses these tests, so the files are kept and the tests have
    been relocated to sunos.run.
    
    An `is_illumos` function was added to libtest.shlib to eliminate some
    awkward platform checks.
    
    A few functions that are not expected to be used outside of illumos
    have been sanitized of extraneous FreeBSD adaptations.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9794
    Ryan Moeller authored and behlendorf committed Jan 3, 2020
    Configuration menu
    Copy the full SHA
    d7164b2 View commit details
    Browse the repository at this point in the history
  3. ZTS: Add helper for disk device check

    Replace `test -b` and equivalents with `is_disk_device`, so that `-c`
    is used instead on FreeBSD which has no block cache layer for devices.
    
    Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9795
    Ryan Moeller authored and behlendorf committed Jan 3, 2020
    Configuration menu
    Copy the full SHA
    665684d View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2020

  1. Fix ZPOOL_VDEV_NAME_PATH option description

    The corresponding zpool status option is -P and not -p.  Update
    this description to reference the correct option.
    
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9803
    behlendorf authored Jan 6, 2020
    Configuration menu
    Copy the full SHA
    33dc49e View commit details
    Browse the repository at this point in the history
  2. ZTS: Cleanup partition tables

    The cleanup_devices function should remove any partitions created
    on the device and force the partition table to be reread.  This
    is needed to ensure that blkid has an up to date version of what
    devices and partitions are used by zfs.
    
    The cleanup_devices call was removed from inuse_008_pos.ksh since
    it operated on partitions instead of devices and was not needed.
    
    Lastly ddidecode may be called by parted and was therefore added
    to the constrained path.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9806
    behlendorf authored Jan 6, 2020
    Configuration menu
    Copy the full SHA
    581ca28 View commit details
    Browse the repository at this point in the history
  3. Fix QAT allocation failure return value

    When qat_compress() fails to allocate the required contiguous memory
    it mistakenly returns success.  This prevents the fallback software
    compression from taking over and (un)compressing the block.
    
    Resolve the issue by correctly setting the local 'status' variable
    on all exit paths.  Furthermore, initialize it to CPA_STATUS_FAIL
    to ensure qat_compress() always fails safe to guard against any
    similar bugs in the future.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9784
    Closes openzfs#9788
    behlendorf authored Jan 6, 2020
    Configuration menu
    Copy the full SHA
    bc9cef1 View commit details
    Browse the repository at this point in the history
  4. Fix "zpool add -n" for dedup, special and log devices

    For dedup, special and log devices "zpool add -n" does not print
    correctly their vdev type:
    
    ~# zpool add -n pool dedup /tmp/dedup special /tmp/special log /tmp/log
    would update 'pool' to the following configuration:
    	pool
    	  /tmp/normal
    	  /tmp/dedup
    	  /tmp/special
    	  /tmp/log
    
    This could lead storage administrators to modify their ZFS pools to
    unexpected and unintended vdev configurations.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes openzfs#9783 
    Closes openzfs#9390
    loli10K authored and behlendorf committed Jan 6, 2020
    Configuration menu
    Copy the full SHA
    c24fa4b View commit details
    Browse the repository at this point in the history

Commits on Jan 7, 2020

  1. ZTS: Add sunos.run to dist data

    This was missed when the file was introduced.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9815
    Ryan Moeller authored and behlendorf committed Jan 7, 2020
    Configuration menu
    Copy the full SHA
    798b2b8 View commit details
    Browse the repository at this point in the history
  2. zfs-module-parameters(5): add all missing items

    I ran a report against the output of `modinfo zfs.ko`. This commit adds
    everything missing and corrects a few renamed module parameters.
    Specifically:
    
    * zfs_checksums_per second renamed in ad796b8
    * vdev_ms_count_limit renamed in c853f38
    
    Also fixes some variable type inconsistencies (unsigned int => uint)
    
    Reviewed-by: George Amanakis <gamanakis@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: DHE <git@dehacked.net>
    Closes openzfs#9809
    DeHackEd authored and behlendorf committed Jan 7, 2020
    Configuration menu
    Copy the full SHA
    6770951 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2020

  1. Avoid here-documents in systemd mount generator

    On some systems - openSUSE, for example - there is not yet a writeable
    temporary file system available, so bash bails out with an error,
    
      'cannot create temp file for here-document: Read-only file system',
    
    on the here documents in zfs-mount-generator. The simple fix is to
    change these into a multi-line echo statement.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-By: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Lorenz Hüdepohl <dev@stellardeath.org>
    Closes openzfs#9802
    lhuedepohl authored and behlendorf committed Jan 8, 2020
    Configuration menu
    Copy the full SHA
    028e3b3 View commit details
    Browse the repository at this point in the history
  2. ZTS: Eliminate functions named 'random'

    The name overlaps with a command needed by FreeBSD.
    There is also no sense having two 'random' functions that do nearly
    the same thing, so consolidate to just the more general one and name
    it 'random_int_between'.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9820
    Ryan Moeller authored and behlendorf committed Jan 8, 2020
    Configuration menu
    Copy the full SHA
    f8d55b9 View commit details
    Browse the repository at this point in the history

Commits on Jan 9, 2020

  1. Remove parameter names from libzfs.h signatures

    Most of libzfs.h doesn't provide names for the parameters
    in its signatures. These few functions included them. That
    wouldn't be a problem, per se, but the 'lines' parameter
    conflicts with the 'lines' #define from terminfo's term.h,
    present for at least a decade. This makes it difficult to
    compile code making use of both ZFS and terminfo.
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Nick Black <dankamongmen@gmail.com>
    Closes openzfs#9821
    dankamongmen authored and behlendorf committed Jan 9, 2020
    Configuration menu
    Copy the full SHA
    4abd7d8 View commit details
    Browse the repository at this point in the history
  2. ZTS: Provide an alternative to shuf for FreeBSD

    There was a shuf package but the upstream for the port has recently
    disappeared, so it is no longer available.
    
    Create a function to hide the usage of shuf. Implement using seq|random
    on FreeBSD.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9824
    Ryan Moeller authored and behlendorf committed Jan 9, 2020
    Configuration menu
    Copy the full SHA
    90ae487 View commit details
    Browse the repository at this point in the history
  3. Performance tests, fio enhancements

    - Set fixed chunk pattern, for sane compression
    - Adjust buffer to blocksize, for cross blocksize repeatability
    - Use fixed seed, for improved repeatability
    - Move comp-percent and comp-chunk to variables
    - set variables (mostly) to old defaults
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Kjeld Schouten-Lebbing <kjeld@schouten-lebbing.nl>
    Closes openzfs#9793
    Kjeld Schouten-Lebbing authored and behlendorf committed Jan 9, 2020
    Configuration menu
    Copy the full SHA
    36e5b4a View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2020

  1. ZTS: Improve zts-auto_offline_001_pos

    The zts-auto_offline_001_pos test could exceed the 10 minute test
    limit and be KILLED by the test infrastructure.  To prevent this
    speed up the test case by:
    
    * Removing redundant pool configurations.  Each of the following
      vdev types is tested once: mirror, raidz, cache, and special.
    
    * The block_device_wait function need only wait on the block
      device which has been removed as part of the test.
    
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9827
    behlendorf authored Jan 10, 2020
    Configuration menu
    Copy the full SHA
    9ab6109 View commit details
    Browse the repository at this point in the history
  2. Add 'zfs send --saved' flag

    This commit adds the --saved (-S) to the 'zfs send' command.
    This flag allows a user to send a partially received dataset,
    which can be useful when migrating a backup server to new
    hardware. This flag is compatible with resumable receives, so
    even if the saved send is interrupted, it can be resumed.
    The flag does not require any user / kernel ABI changes or any
    new feature flags in the send stream format.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Alek Pinchuk <apinchuk@datto.com>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Reviewed-by: Christian Schwarz <me@cschwarz.com>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes openzfs#9007
    Tom Caputi authored and behlendorf committed Jan 10, 2020
    Configuration menu
    Copy the full SHA
    ba0ba69 View commit details
    Browse the repository at this point in the history
  3. ZTS: Create xattr helpers to hide platform

    Create xattr helpers to hide platform and update usage in tests.
    
    This does not generally aim to enable all xattr tests yet, but it is a
    necessary step in that direction.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9826
    Ryan Moeller authored and behlendorf committed Jan 10, 2020
    Configuration menu
    Copy the full SHA
    6e1c594 View commit details
    Browse the repository at this point in the history

Commits on Jan 13, 2020

  1. ZTS: Clean up properties.shlib a bit

    Fixes the last property having an empty value on FreeBSD and makes the
    code a bit more readable.
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9834
    Ryan Moeller authored and behlendorf committed Jan 13, 2020
    Configuration menu
    Copy the full SHA
    602f667 View commit details
    Browse the repository at this point in the history

Commits on Jan 14, 2020

  1. ZTS: Remove obsolete zts-report.py exceptions

    The disk_reason and udev_reason exceptions can be removed since
    they apply to now unsupported kernel versions (<v3.10).
    
    The checks in the test cases were kept for the purposes of
    documentation and as useful sanity checks for the test environment.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9828
    behlendorf authored Jan 14, 2020
    Configuration menu
    Copy the full SHA
    a4c3e3c View commit details
    Browse the repository at this point in the history
  2. Change http://zfsonlinux.org links to https://zfsonlinux.org

    Update the project website links contained in to repository to
    reference the secure https://zfsonlinux.org address.
    
    Reviewed-By: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Garrett Fields <ghfields@gmail.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9837
    behlendorf authored Jan 14, 2020
    Configuration menu
    Copy the full SHA
    e458fcc View commit details
    Browse the repository at this point in the history
  3. libzfs: add zfs_mount_at() function

    zfs_mount_at() mounts a dataset at an arbitrary mountpoint rather than
    at the configured mountpoint. This may be used by consumers that wish to
    temporarily expose a dataset at another mountpoint without altering
    dataset/pool properties.
    
    This will be used by FreeBSD's libbe be_mount(), which mounts a boot
    environment at an arbitrary mountpoint.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Kyle Evans <kevans@FreeBSD.org>
    Closes openzfs#9833
    kevans91 authored and behlendorf committed Jan 14, 2020
    Configuration menu
    Copy the full SHA
    68a192e View commit details
    Browse the repository at this point in the history
  4. KMC_KVMEM disrupts kv_alloc() memory alignment expectations

    On kernels with KASAN enabled the following failure can be observed as
    soon as the zfs module is loaded:
    
      VERIFY(IS_P2ALIGNED(ptr, PAGE_SIZE)) failed
      PANIC at spl-kmem-cache.c:228:kv_alloc()
    
    The problem is kmalloc() has never guaranteed aligned allocations; this
    requirement resulted in openzfs/spl@8b45dda which removed all
    kmalloc() usage in kv_alloc().
    
    Until a GFP_ALIGNED flag (or equivalent functionality) is provided by
    the kernel this commit partially reverts 6695588 and 6d948c3 to
    prevent k(v)malloc() allocations in kv_alloc().
    
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Michael Niewöhner <foss@mniewoehner.de>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes openzfs#9813
    loli10K authored and behlendorf committed Jan 14, 2020
    Configuration menu
    Copy the full SHA
    7e2da77 View commit details
    Browse the repository at this point in the history
  5. Document zfs change-key caveats

    As discussed on the 2019-01-07 OpenZFS Leadership Meeting, we need to be
    clear about the limitations of `zfs change-key`.  Changing the user key
    does not change the master key, nor does it currently overwrite the old
    wrapped master key on disk.
    
    Reviewed-by: Tom Caputi <tcaputi@datto.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Garrett Fields <ghfields@gmail.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    Closes openzfs#9819
    rlaager authored and behlendorf committed Jan 14, 2020
    Configuration menu
    Copy the full SHA
    f744f36 View commit details
    Browse the repository at this point in the history
  6. Fix errata #4 handling for resuming streams

    Currently, the handling for errata #4 has two issues which allow
    the checks for this issue to be bypassed using resumable sends.
    The first issue is that drc->drc_fromsnapobj is not set in the
    resuming code as it is in the non-resuming code. This causes
    dsl_crypto_recv_key_check() to skip its checks for the
    from_ivset_guid. The second issue is that resumable sends do not
    clean up their on-disk state if they fail the checks in
    dmu_recv_stream() that happen before any data is received.
    
    As a result of these two bugs, a user can attempt a resumable send
    of a dataset without a from_ivset_guid. This will fail the initial
    dmu_recv_stream() checks, leaving a valid resume state. The send
    can then be resumed, which skips those checks, allowing the receive
    to be completed.
    
    This commit fixes these issues by setting drc->drc_fromsnapobj in
    the resuming receive path and by ensuring that resumablereceives
    are properly cleaned up if they fail the initial dmu_recv_stream()
    checks.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes openzfs#9818 
    Closes openzfs#9829
    Tom Caputi authored and behlendorf committed Jan 14, 2020
    Configuration menu
    Copy the full SHA
    61152d1 View commit details
    Browse the repository at this point in the history
  7. ZTS: Catalog tunable names for tests in tunables.cfg

    Update tests to use the variables for tunable names.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9831
    Ryan Moeller authored and behlendorf committed Jan 14, 2020
    Configuration menu
    Copy the full SHA
    2476f10 View commit details
    Browse the repository at this point in the history

Commits on Jan 15, 2020

  1. ZTS: Remove some path workarounds for FreeBSD

    These are no longer needed after fixing device name matching for whole
    disks in libzutil on FreeBSD.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9839
    Ryan Moeller authored and behlendorf committed Jan 15, 2020
    Configuration menu
    Copy the full SHA
    900010d View commit details
    Browse the repository at this point in the history
  2. ZTS: Fix is_physical_device on FreeBSD

    This should have been using egrep.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9840
    Ryan Moeller authored and behlendorf committed Jan 15, 2020
    Configuration menu
    Copy the full SHA
    83c3024 View commit details
    Browse the repository at this point in the history
  3. ZTS: Avoid using PCRE with grep in zdb tests

    On FreeBSD grep does not support Perl extensions
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9841
    Ryan Moeller authored and behlendorf committed Jan 15, 2020
    Configuration menu
    Copy the full SHA
    6f48161 View commit details
    Browse the repository at this point in the history

Commits on Jan 16, 2020

  1. ZTS: Fix ksh path in btree tests

    Every other ksh script has /bin/ksh in the shebang.
    If we're going to assume a path, we can at least be consistent.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9845
    Ryan Moeller authored and behlendorf committed Jan 16, 2020
    Configuration menu
    Copy the full SHA
    1bb5f5e View commit details
    Browse the repository at this point in the history
  2. ZFS performance suite should use JSON fio output

    Making the default FIO output format be JSON thus easier to post process
    performance results. To get previous 'normal' output format,
    PERF_FIO_FORMAT can be set prior to invoking zfs-tests.sh. For example:
    
    'PERF_FIO_FORMAT=normal ./zfs-tests.sh -T perf -r ./runfiles/perf.run'
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tony Nguyen <tony.nguyen@delphix.com>
    Closes openzfs#9847
    tonynguien authored and behlendorf committed Jan 16, 2020
    Configuration menu
    Copy the full SHA
    1b64627 View commit details
    Browse the repository at this point in the history
  3. zdb -d should accept the numeric objset id

    As an alternative to the dataset name, zdb now allows the decimal 
    or hexadecimal objset ID to be specified.  When permanent errors
    are reported as 2 hexadecimal numbers (objset ID : object ID) in 
    zpool status; you can now use 'zdb <pool>[/objset ID] object' to
    determine the names of the objset and object which have the error.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Paul Zuchowski <pzuchowski@datto.com>
    Closes openzfs#9733
    PaulZ-98 authored and behlendorf committed Jan 16, 2020
    Configuration menu
    Copy the full SHA
    f12e42c View commit details
    Browse the repository at this point in the history
  4. ZTS: Fix incorrect is_physical_device usage

    This check isn't meant to be used for command substitution.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9844
    Ryan Moeller authored and behlendorf committed Jan 16, 2020
    Configuration menu
    Copy the full SHA
    31712a7 View commit details
    Browse the repository at this point in the history

Commits on Jan 17, 2020

  1. ZTS: Enable zpool_create_008_pos.ksh

    Remove the blkid version check from zpool_create_008_pos.ksh
    so the test case will not be skipped.
    
    All versions of blkid tested by the CI are either new enough
    to not suffer from this issue, or have been patched as is
    the case with CentOS 7 (libblkid-2.23.2-61).
    
    Additionally, add a block_device_wait after device partitioning
    to ensure the expected partitions will exist.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9853
    behlendorf authored Jan 17, 2020
    Configuration menu
    Copy the full SHA
    e5030fb View commit details
    Browse the repository at this point in the history
  2. Unify target_cpu handling

    Over the years several slightly different approaches were used
    in the Makefiles to determine the target architecture.  This
    change updates both the build system and Makefile to handle
    this in a consistent fashion.
    
    TARGET_CPU is set to i386, x86_64, powerpc, aarch6 or sparc64
    and made available in the Makefiles to be used as appropriate.
    
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9848
    behlendorf authored Jan 17, 2020
    Configuration menu
    Copy the full SHA
    70835c5 View commit details
    Browse the repository at this point in the history
  3. ZTS: Make DVA pattern in zdb tests more robust

    Ensure the capture ends at the first DVA in case there are multiple
    DVAs on the same line by only capturing up to the first '>' character.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9851
    Ryan Moeller authored and behlendorf committed Jan 17, 2020
    Configuration menu
    Copy the full SHA
    914bd02 View commit details
    Browse the repository at this point in the history
  4. ZTS: Eliminate partitioning in zpool_import setup

    There doesn't seem to be a need for this complexity.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9854
    Ryan Moeller authored and behlendorf committed Jan 17, 2020
    Configuration menu
    Copy the full SHA
    09436c5 View commit details
    Browse the repository at this point in the history

Commits on Jan 21, 2020

  1. Re-consolidate zio_delay_interrupt

    With recent SPL changes there is no longer any need for a per
    platform version.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9860
    mattmacy authored and behlendorf committed Jan 21, 2020
    Configuration menu
    Copy the full SHA
    d3c1e45 View commit details
    Browse the repository at this point in the history
  2. Update tunable macro usage for disable_ivset_guid_check

    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9861
    mattmacy authored and behlendorf committed Jan 21, 2020
    Configuration menu
    Copy the full SHA
    af26a86 View commit details
    Browse the repository at this point in the history
  3. Disable get_numeric_property for xattr on FreeBSD

    FreeBSD doesn't have a mount flag for determining the
    disposition of xattr. Disable so that it is fetched
    by the default route so that 'zfs get xattr' returns
    the correct value.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9862
    mattmacy authored and behlendorf committed Jan 21, 2020
    Configuration menu
    Copy the full SHA
    5206b82 View commit details
    Browse the repository at this point in the history

Commits on Jan 22, 2020

  1. Order zfs-import-*.service after multipathd

    If someone is using both multipathd and ZFS, they are probably using
    them together.  Ordering the zpool imports after multipathd is ready
    fixes import issues for multipath configurations.
    
    Tested-by: Mike Pastore <mike@oobak.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    Closes openzfs#9863
    rlaager authored and behlendorf committed Jan 22, 2020
    Configuration menu
    Copy the full SHA
    79add96 View commit details
    Browse the repository at this point in the history

Commits on Jan 23, 2020

  1. Support inheriting properties in channel programs

    This adds support in channel programs to inherit properties analogous
    to `zfs inherit` by adding `zfs.sync.inherit` and `zfs.check.inherit`
    functions to the ZFS LUA API.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Jason King <jason.king@joyent.com>
    Closes openzfs#9738
    jasonbking authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    e2ef1cb View commit details
    Browse the repository at this point in the history
  2. Simplify FreeBSD's locking requirements in zfs_replay.c

    Now that the FreeBSD zfs_vnops code avoids asserting that
    a vnode lock is held when z_replay is true we can limit
    the FreeBSD specific changes to the couple of changes
    where it is necessary to drop the vnode locks because
    a function returns with it held.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9865
    mattmacy authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    3d91490 View commit details
    Browse the repository at this point in the history
  3. cmd/zfs: send: meaningful error message for incorrect redaction bookmark

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9867
    problame authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    7b53e2e View commit details
    Browse the repository at this point in the history
  4. cmd/zfs: redact: better error message for common usage errors

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9867
    problame authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    f658f61 View commit details
    Browse the repository at this point in the history
  5. dmu_send: redacted: fix memory leak on invalid redaction/from bookmark

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9867
    problame authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    0ea03c7 View commit details
    Browse the repository at this point in the history
  6. ZTS: Add missing export for DEV_DSKDIR default

    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9873
    Ryan Moeller authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    1a69856 View commit details
    Browse the repository at this point in the history
  7. Add AltiVec RAID-Z

    Implements the RAID-Z function using AltiVec SIMD.
    This is basically the NEON code translated to AltiVec.
    
    Note that the 'fletcher' algorithm requires 64-bits
    operations, and the initial implementations of AltiVec
    (PPC74xx a.k.a. G4, PPC970 a.k.a. G5) only has up to
    32-bits operations, so no 'fletcher'.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Romain Dolbeau <romain.dolbeau@european-processor-initiative.eu>
    Closes openzfs#9539
    rdolbeau authored and behlendorf committed Jan 23, 2020
    Configuration menu
    Copy the full SHA
    35b0749 View commit details
    Browse the repository at this point in the history

Commits on Jan 24, 2020

  1. ZTS: Get xattr tests running on FreeBSD

    This mostly involves reworking platform checks to make illumos the
    exception (thanks to their unusual way of exposing xattrs). Other
    platforms are able to take advantage of the recently added xattr
    wrappers in libtest.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9872
    Ryan Moeller authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    dbfec5c View commit details
    Browse the repository at this point in the history
  2. scripts/zfs-test.sh: example for -t

    Add an example for running a single test case.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9878
    problame authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    603059e View commit details
    Browse the repository at this point in the history
  3. entity_namecheck: doc comment: include space as allowed character

    The helper function valid_char already allows it but
    the doc comment was out of date.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9879
    problame authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    3aea3c9 View commit details
    Browse the repository at this point in the history
  4. dsl_bookmark_create_check: fix NULL pointer deref if dbca_errors == NULL

    Discovered in preparation of zcp support for creating bookmarks.
    Handle the case where dbca_errors is NULL.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9880
    problame authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    20ea854 View commit details
    Browse the repository at this point in the history
  5. ZTS: zpool offline requires whole disk name

    When used with non-loop devices, zdb_004_pos fails because the disk
    argument provided is the partition rather than the expected whole disk
    name.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Signed-off-by: John Kennedy <john.kennedy@delphix.com>
    Closes openzfs#9876
    jwk404 authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    0d37c2b View commit details
    Browse the repository at this point in the history
  6. Performance tests, some variables missing PERF_ prefix

    Adding the expected PERF_ prefix to RANDSEED, COMPPERCENT,
    and COMPCHUNK.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tony Nguyen <tony.nguyen@delphix.com>
    Closes openzfs#9877
    tonynguien authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    8e9e90b View commit details
    Browse the repository at this point in the history
  7. zdb: add support for object ranges for zdb -d

    Allow a range of object identifiers to dump with -d. This may
    be useful when dumping a large dataset and you want to break
    it up into multiple phases, or to resume where a previous scan
    left off. Object type selection flags are supported to reduce
    the performance overhead of verbosely dumping unwanted objects,
    and to reduce the amount of post-processing work needed to
    filter out unwanted objects from zdb output.
    
    This change extends existing syntax in a backward-compatible
    way. That is, the base case of a range is to specify a single
    object identifier to dump. Ranges and object identifiers can
    be intermixed as command line parameters.
    
    Usage synopsis:
    
        Object ranges take the form <start>:<end>[:<flags>]
            start    Starting object number
            end      Ending object number, or -1 for no upper bound
            flags    Optional flags to select object types:
             A    All objects (this is the default)
             d    ZFS directories
             f    ZFS files
             m    SPA space maps
             z    ZAPs
             -    Negate effect of next flag
    
    Examples:
    
     # Dump all file objects
     zdb -dd tank/fish 0:-1:f
    
     # Dump all file and directory objects
     zdb -dd tank/fish 0:-1:fd
    
     # Dump all types except file and directory objects
     zdb -dd tank/fish 0:-1:A-f-d
    
     # Dump object IDs in a specific range
     zdb -dd tank/fish 1000:2000
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@ixsystems.com>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Ned Bass <bass6@llnl.gov>
    Closes openzfs#9832
    nedbass authored and behlendorf committed Jan 24, 2020
    Configuration menu
    Copy the full SHA
    a340316 View commit details
    Browse the repository at this point in the history

Commits on Jan 27, 2020

  1. ZTS: Move more tests out of common.run

    These tests won't run on all platforms as currently implemented:
     * add_nested_replacing_spare (needs zed)
     * fault (needs zed)
     * mmp (needs multihost_history)
     * umount_unlink_drained (needs procfs)
     * zpool_expand (needs udev events and zed)
     * zpool_reopen (needs scsi_debug)
     * zvol_swap_003_pos (needs to modify vfstab)
     * zvol_swap_00[56]_pos (needs swaphigh/swaplen)
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@ixsystems.com>
    Closes openzfs#9871
    Ryan Moeller authored and behlendorf committed Jan 27, 2020
    Configuration menu
    Copy the full SHA
    e4c4390 View commit details
    Browse the repository at this point in the history
  2. Add an .editorconfig; document git whitespace settings

    Most of the projects I work on don't use tabs, and while authoring my
    first patch I had to wrestle with my editor to not introduce
    whitespace editors.
    
    The `.editorconfig` file is supported by a large number of editors
    out of the box, and many more with plugins.
    
    As a first-time contributor, I can't say for certain these settings
    are totally correct, but thus far git and my editor are satisfied
    enough.
    
    I considered adding `git config --local format.signOff true` but
    wanted to respect the warning:
    
        format.signOff
            A boolean value which lets you enable the -s/--signoff
            option of format-patch by default.  Note: Adding the
            Signed-off-by: line to a patch should be a conscious act and
            means that you certify you have the rights to submit this
            work under the same open source license. Please see the
            SubmittingPatches document for further discussion.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Graham Christensen <graham@grahamc.com>
    Closes openzfs#9892
    grahamc authored and behlendorf committed Jan 27, 2020
    Configuration menu
    Copy the full SHA
    25df8fb View commit details
    Browse the repository at this point in the history

Commits on Jan 28, 2020

  1. ZTS: Eliminate random and shuf, consolidate code

    Both GNU and FreeBSD sort have -R to randomize input.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9900
    Ryan Moeller authored and behlendorf committed Jan 28, 2020
    Configuration menu
    Copy the full SHA
    7a298ae View commit details
    Browse the repository at this point in the history
  2. ZTS: Don't use edonr on FreeBSD

    FreeBSD doesn't support feature@edonr.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9901
    Ryan Moeller authored and behlendorf committed Jan 28, 2020
    Configuration menu
    Copy the full SHA
    0ecd910 View commit details
    Browse the repository at this point in the history

Commits on Jan 29, 2020

  1. ZTS: Reverse constrained path lookup order

    FreeBSD base system zfs utils are in /sbin. ZoF utils install to
    /usr/local/sbin.
    
    Ensure we link to the ZoF utils not the base utils when searching for
    utils to constrain paths to for the tests.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9906
    Ryan Moeller authored Jan 29, 2020
    Configuration menu
    Copy the full SHA
    74b4d34 View commit details
    Browse the repository at this point in the history
  2. ZTS: Simplify zero_partitions on FreeBSD

    We can avoid a great deal of `sleep 3` by simply destroying the whole
    partition table in one shot with gpart.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9908
    Ryan Moeller authored Jan 29, 2020
    Configuration menu
    Copy the full SHA
    395a6b1 View commit details
    Browse the repository at this point in the history
  3. ZTS: FreeBSD tunable for DISABLE_IVSET_GUID_CHECK

    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9907
    Ryan Moeller authored Jan 29, 2020
    Configuration menu
    Copy the full SHA
    9d8ce24 View commit details
    Browse the repository at this point in the history

Commits on Jan 31, 2020

  1. ZTS: Fix a few defaults

    Linux was missing a default value for DEV_DSKDIR. Set it to /dev.
    Fix resulting fallout.
    
    SLICE_PREFIX seems like a good candidate for including in the defaults.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9898
    Ryan Moeller authored Jan 31, 2020
    Configuration menu
    Copy the full SHA
    a3bddd4 View commit details
    Browse the repository at this point in the history
  2. Use the correct spelling of 'jailed' in tests

    FreeBSD has jails, not zones.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9899
    Ryan Moeller authored Jan 31, 2020
    Configuration menu
    Copy the full SHA
    1243079 View commit details
    Browse the repository at this point in the history
  3. Left-align index props

    Index type props display as strings, which should be aligned to the
    left not to the right.
    
    Before:
    ```
    FreeBSD-13_0-CURRENT-r356528 ➜  ~ zfs list -ro name,aclmode,mountpoint
    NAME        ACLMODE  MOUNTPOINT
    p0      passthrough  /p0
    p0/foo      discard  /p0/foo
    ```
    
    After:
    ```
    FreeBSD-13_0-CURRENT-r356528 ➜  ~ zfs list -ro name,aclmode,mountpoint
    NAME    ACLMODE      MOUNTPOINT
    p0      passthrough  /p0
    p0/foo  discard      /p0/foo
    ```
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Alexander Motin <mav@FreeBSD.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9912
    Ryan Moeller authored Jan 31, 2020
    Configuration menu
    Copy the full SHA
    fe7c159 View commit details
    Browse the repository at this point in the history
  4. ZTS: Only use ext4 on Linux

    And while here, add a workaround for FreeBSD to ensure dirty data is
    synced before taking a snapshot, by remounting read-only, then remount
    again read-write after the snapshot.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9914
    Ryan Moeller authored Jan 31, 2020
    Configuration menu
    Copy the full SHA
    591505d View commit details
    Browse the repository at this point in the history

Commits on Feb 3, 2020

  1. Disable "-fipa-sra" when using "--enable-debuginfo"

    To better enable dynamic tracing tools (e.g. "bpftrace") this change
    disables the "-fipa-sra" compilation optimization. This way, function
    signatures are not changed by the compiler, which allows us to better
    attach to kprobes and kretprobes with dynamic tracing tools. Otherwise,
    the compiler may append ".isra" to the function name, and possibly
    change the function arguments as well.
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Prakash Surya <prakash.surya@delphix.com>
    Closes openzfs#9921
    Prakash Surya authored Feb 3, 2020
    Configuration menu
    Copy the full SHA
    147622b View commit details
    Browse the repository at this point in the history
  2. async zvol minor node creation interferes with receive

    When we finish a zfs receive, dmu_recv_end_sync() calls
    zvol_create_minors(async=TRUE).  This kicks off some other threads that
    create the minor device nodes (in /dev/zvol/poolname/...).  These async
    threads call zvol_prefetch_minors_impl() and zvol_create_minor(), which
    both call dmu_objset_own(), which puts a "long hold" on the dataset.
    Since the zvol minor node creation is asynchronous, this can happen
    after the `ZFS_IOC_RECV[_NEW]` ioctl and `zfs receive` process have
    completed.
    
    After the first receive ioctl has completed, userland may attempt to do
    another receive into the same dataset (e.g. the next incremental
    stream).  This second receive and the asynchronous minor node creation
    can interfere with one another in several different ways, because they
    both require exclusive access to the dataset:
    
    1. When the second receive is finishing up, dmu_recv_end_check() does
    dsl_dataset_handoff_check(), which can fail with EBUSY if the async
    minor node creation already has a "long hold" on this dataset.  This
    causes the 2nd receive to fail.
    
    2. The async udev rule can fail if zvol_id and/or systemd-udevd try to
    open the device while the the second receive's async attempt at minor
    node creation owns the dataset (via zvol_prefetch_minors_impl).  This
    causes the minor node (/dev/zd*) to exist, but the udev-generated
    /dev/zvol/... to not exist.
    
    3. The async minor node creation can silently fail with EBUSY if the
    first receive's zvol_create_minor() trys to own the dataset while the
    second receive's zvol_prefetch_minors_impl already owns the dataset.
    
    To address these problems, this change synchronously creates the minor
    node.  To avoid the lock ordering problems that the asynchrony was
    introduced to fix (see openzfs#3681), we create the minor nodes from open
    context, with no locks held, rather than from syncing contex as was
    originally done.
    
    Implementation notes:
    
    We generally do not need to traverse children or prefetch anything (e.g.
    when running the recv, snapshot, create, or clone subcommands of zfs).
    We only need recursion when importing/opening a pool and when loading
    encryption keys.  The existing recursive, asynchronous, prefetching code
    is preserved for use in these cases.
    
    Channel programs may need to create zvol minor nodes, when creating a
    snapshot of a zvol with the snapdev property set.  We figure out what
    snapshots are created when running the LUA program in syncing context.
    In this case we need to remember what snapshots were created, and then
    try to create their minor nodes from open context, after the LUA code
    has completed.
    
    There are additional zvol use cases that asynchronously own the dataset,
    which can cause similar problems.  E.g. changing the volmode or snapdev
    properties.  These are less problematic because they are not recursive
    and don't touch datasets that are not involved in the operation, there
    is still potential for interference with subsequent operations.  In the
    future, these cases should be similarly converted to create the zvol
    minor node synchronously from open context.
    
    The async tasks of removing and renaming minors do not own the objset,
    so they do not have this problem.  However, it may make sense to also
    convert these operations to happen synchronously from open context, in
    the future.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Prakash Surya <prakash.surya@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    External-issue: DLPX-65948
    Closes openzfs#7863
    Closes openzfs#9885
    ahrens authored Feb 3, 2020
    Configuration menu
    Copy the full SHA
    ec21397 View commit details
    Browse the repository at this point in the history
  3. Fix const-correctness in raidz math

    Clang warns (errors) that "cast from 'const void *' to 'struct v *'
    drops const qualifier."
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9917
    Ryan Moeller authored Feb 3, 2020
    Configuration menu
    Copy the full SHA
    07bc2bc View commit details
    Browse the repository at this point in the history

Commits on Feb 4, 2020

  1. Restore aclmode and remove acltype on FreeBSD

    This replaces the placeholder ZFS_PROP_PRIVATE with ZFS_PROP_ACLMODE,
    matching what is done in the NFSv4 ACLs PR (openzfs#9709).
    
    On FreeBSD we hide ZFS_PROP_ACLTYPE, while on Linux we hide
    ZFS_PROP_ACLMODE.
    
    The tests already assume this arrangement.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Alexander Motin <mav@FreeBSD.org>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9913
    Ryan Moeller authored Feb 4, 2020
    Configuration menu
    Copy the full SHA
    8c4987c View commit details
    Browse the repository at this point in the history
  2. Use -Werror to check if the compiler supports specific options

    Be default, clang treats unknown warning option as warning.
    We need to use -Werror to make it an error.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: 12101111 <w12101111@gmail.com>
    Closes openzfs#9927
    12101111 authored Feb 4, 2020
    Configuration menu
    Copy the full SHA
    52c487a View commit details
    Browse the repository at this point in the history
  3. Prepare ks_data before calling kstat_install()

    It violated sequence described in kstat.h, and at least on FreeBSD
    kstat_install() uses provided names to create the sysctls.  If the
    names are not available at the time, it ends up bad.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Alexander Motin <mav@FreeBSD.org>
    Sponsored-By: iXsystems, Inc.
    Closes openzfs#9933
    amotin authored Feb 4, 2020
    Configuration menu
    Copy the full SHA
    741db5a View commit details
    Browse the repository at this point in the history

Commits on Feb 5, 2020

  1. Convert dbuf dirty record record list to a list_t

    Additionally pull in state machine comments about
    upcoming async cow work.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9902
    mattmacy authored Feb 5, 2020
    Configuration menu
    Copy the full SHA
    cccbed9 View commit details
    Browse the repository at this point in the history
  2. Few microoptimizations to dbuf layer

    Move db_link into the same cache line as db_blkid and db_level.
    It allows significantly reduce avl_add() time in dbuf_create() on
    systems with large RAM and huge number of dbufs per dnode.
    
    Avoid few accesses to dbuf_caches[].size, which is highly congested
    under high IOPS and never stays in cache for a long time.  Use local
    value we are receiving from zfs_refcount_add_many() any way.
    
    Remove cache_size_bytes_max bump from dbuf_evict_one().  I don't see
    a point to do it on dbuf eviction after we done it on insertion in
    dbuf_rele_and_unlock().
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Alexander Motin <mav@FreeBSD.org>
    Sponsored-By: iXsystems, Inc.
    Closes openzfs#9931
    amotin authored Feb 5, 2020
    Configuration menu
    Copy the full SHA
    cbd8f5b View commit details
    Browse the repository at this point in the history
  3. Suggest using visudo to edit

    Suggest visudo which allows editing the sudoers file in a safe fashion.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Gerardwx <gerardw@alum.mit.edu>
    Closes openzfs#9918
    Gerardwx authored Feb 5, 2020
    Configuration menu
    Copy the full SHA
    81acb1e View commit details
    Browse the repository at this point in the history

Commits on Feb 6, 2020

  1. Fix unknown cc flag -fno-ipa-sra

    Clang does not recognize -fno-ipa-sra, so add a check for it.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Prakash Surya <prakash.surya@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9946
    Ryan Moeller authored Feb 6, 2020
    Configuration menu
    Copy the full SHA
    5b7e6a3 View commit details
    Browse the repository at this point in the history
  2. Fix static data to link with -fno-common

    -fno-common is the new default in GCC 10, replacing -fcommon in
    GCC <= 9, so static data must only be allocated once.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Romain Dolbeau <romain.dolbeau@european-processor-initiative.eu>
    Closes openzfs#9943
    rdolbeau authored Feb 6, 2020
    Configuration menu
    Copy the full SHA
    af09c05 View commit details
    Browse the repository at this point in the history
  3. Replace static per-cpu with dynamic per-cpu data

    This solves the issue of loading the spl module on RISC-V.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Romain Dolbeau <romain.dolbeau@european-processor-initiative.eu>
    Closes openzfs#9942
    rdolbeau authored Feb 6, 2020
    Configuration menu
    Copy the full SHA
    77122f9 View commit details
    Browse the repository at this point in the history
  4. Reduce number of atomic_add() calls in aggsum

    Previous code used 4 atomics to do aggsum_flush_bucket() and 2 more to
    re-borrow after the flush.  But since asc_borrowed and asc_delta are
    accessed only while holding asc_lock, it makes no any sense to modify
    as_lower_bound and as_upper_bound in multiple steps.  Instead of that
    the new code uses only 2 atomics in all the cases, one per as_*_bound
    variable.  I think even that is overkill, simple atomic store and
    load could be used here, since all modifications are done under the
    as_lock, but there are no such primitives in ZFS code now.
    
    While there, make borrow code consider previous borrow value, so that
    on mixed request patterns reduce chance of needing to borrow again if
    much larger request follows tiny one that needed borrow.
    
    Also reduce as_numbuckets from uint64_t to u_int.  It makes no sense
    to use so large division operation on every aggsum_add().
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Signed-off-by: Alexander Motin <mav@FreeBSD.org>
    Sponsored-By: iXsystems, Inc.
    Closes openzfs#9930
    amotin authored Feb 6, 2020
    Configuration menu
    Copy the full SHA
    e0ce98d View commit details
    Browse the repository at this point in the history

Commits on Feb 7, 2020

  1. Linux 5.6 compat: struct proc_ops

    The proc_ops structure was introduced to replace the use of of the
    file_operations structure when registering proc handlers.  This
    change creates a new kstat_proc_op_t typedef for compatibility
    which can be used to pass around the correct structure.
    
    This change additionally adds the 'const' keyword to all of the
    existing proc operations structures.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9961
    behlendorf committed Feb 7, 2020
    Configuration menu
    Copy the full SHA
    0dd7364 View commit details
    Browse the repository at this point in the history
  2. Linux 5.6 compat: timestamp_truncate()

    The timestamp_truncate() function was added, it replaces the existing
    timespec64_trunc() function.  This change renames our wrapper function
    to be consistent with the upstream name and updates the compatibility
    code for older kernels accordingly.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9956
    Closes openzfs#9961
    behlendorf committed Feb 7, 2020
    Configuration menu
    Copy the full SHA
    795699a View commit details
    Browse the repository at this point in the history
  3. ZTS: Use wc -c instead of --bytes for portability

    FreeBSD does not have the long opts for wc.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9963
    Ryan Moeller authored Feb 7, 2020
    Configuration menu
    Copy the full SHA
    9825e7a View commit details
    Browse the repository at this point in the history
  4. ZTS: Add an is_dilos function for future ZTS updates

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Igor Kozhukhov <igor@dilos.org>
    Closes openzfs#9960
    ikozhukhov authored Feb 7, 2020
    Configuration menu
    Copy the full SHA
    818d4a8 View commit details
    Browse the repository at this point in the history
  5. Factor out dbuf_sync_bonus

    Factor the portion of dbuf_sync_leaf() responsible for handling bonus
    buffers out in to its own dbuf_sync_bonus() helper function.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9909
    mattmacy authored Feb 7, 2020
    Configuration menu
    Copy the full SHA
    fa3922d View commit details
    Browse the repository at this point in the history

Commits on Feb 10, 2020

  1. ICP: Improve AES-GCM performance

    Currently SIMD accelerated AES-GCM performance is limited by two
    factors:
    
    a. The need to disable preemption and interrupts and save the FPU
    state before using it and to do the reverse when done. Due to the
    way the code is organized (see (b) below) we have to pay this price
    twice for each 16 byte GCM block processed.
    
    b. Most processing is done in C, operating on single GCM blocks.
    The use of SIMD instructions is limited to the AES encryption of the
    counter block (AES-NI) and the Galois multiplication (PCLMULQDQ).
    This leads to the FPU not being fully utilized for crypto
    operations.
    
    To solve (a) we do crypto processing in larger chunks while owning
    the FPU. An `icp_gcm_avx_chunk_size` module parameter was introduced
    to make this chunk size tweakable. It defaults to 32 KiB. This step
    alone roughly doubles performance. (b) is tackled by porting and
    using the highly optimized openssl AES-GCM assembler routines, which
    do all the processing (CTR, AES, GMULT) in a single routine. Both
    steps together result in up to 32x reduction of the time spend in
    the en/decryption routines, leading up to approximately 12x
    throughput increase for large (128 KiB) blocks.
    
    Lastly, this commit changes the default encryption algorithm from
    AES-CCM to AES-GCM when setting the `encryption=on` property.
    
    Reviewed-By: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-By: Jason King <jason.king@joyent.com>
    Reviewed-By: Tom Caputi <tcaputi@datto.com>
    Reviewed-By: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Attila Fülöp <attila@fueloep.org>
    Closes openzfs#9749
    AttilaFueloep authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    31b160f View commit details
    Browse the repository at this point in the history
  2. ZTS: Test zvol I/O in different volmodes

    We found that our zvol code had some issues with volmode=dev that were
    not revealed by ZTS.
    
    Add some basic I/O operations to exercise more code paths in the
    volmode test.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9953
    Ryan Moeller authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    572b5b3 View commit details
    Browse the repository at this point in the history
  3. Share some code for spa deadman tunables

    We need to do the same thing to update all spas on any OS for these
    tunables, so let's share the code.
    
    While here let's match the types of the literals initializing the
    variables with the type of the variable.
    
    Reviewed-by: Allan Jude <allanjude@freebsd.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Olaf Faaland <faaland1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9964
    Ryan Moeller authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    57940b4 View commit details
    Browse the repository at this point in the history
  4. bash scripts: use /usr/bin/env for bash shebangs

    Not all systems / distros have a `/bin/bash`, and these scripts are
    more difficult to run at development time.
    
    For example, my system is NixOS which doesn't have a /bin/bash. This
    is not a problem for NixOS building ZFS as a package: the build
    environment automatically replaces these shebangs with corrected
    paths.
    
    The problem is much more annoying at development time: either the
    scripts don't run, or I correct them for my local machine and deal with
    a perpetually dirty work tree.
    
    Before committing this patch I confirmed there are existing scripts
    which use `/usr/bin/env` to locate bash, so I am thinking this is a
    safe transformation.
    
    There are a handful of other shebangs in this repository which don't
    work on my system. This patch is useful on its own specifically for
    `commitcheck.sh`, otherwise I can't validate my commits before
    submission.
    
    Here are the remaining shebangs which NixOS systems won't have:
    
           1274 #!/bin/ksh -p
             91 #!/bin/ksh
             89 #! /bin/ksh -p
              2 #!/bin/sed -f
              1 #!/usr/bin/perl -w
              1 #!/usr/bin/ksh
              1 #!/bin/nawk -f
    
    plus this which will create an invalid shebang in
    `tests/zfs-tests/tests/functional/mv_files/mv_files_common.kshlib`:
    
            echo "#!/bin/ksh" > $TEST_BASE_DIR/exitsZero.ksh
    
    I chose to leave those alone for now, and gauge the interest in this
    much smaller patch first.
    
    The fixes for these are easy enough by simply using `/usr/bin/env ksh`:
    
             91 #!/bin/ksh
              1 #!/usr/bin/ksh
    
    The fix for the other set is much trickier. Quoting the GNU coreutils
    manual:
    
        Most operating systems (e.g. GNU/Linux, BSDs) treat all text after
        the first space as a single argument. When using env in a script it
        is thus not possible to specify multiple arguments.
    
    and not all `env`'s support arguments.
    
    Mine (GNU Coreutils 8.31) does, though this feature is new since
    April 2018, GNU Coreutils 8.30:
    https://git.savannah.gnu.org/cgit/coreutils.git/commit/?id=668306ed86c8c79b0af0db8b9c882654ebb66db2
    
    and worse, requires the -S argument:
    
        -S, --split-string=S  process and split S into separate arguments;
                              used to pass multiple arguments on shebang
                              lines
    
    Example:
    
        $ seq 1 2 | $(nix-build '<nixpkgs>' -A coreutils)/bin/env "sort -nr"
        /nix/[...]-coreutils-8.31/bin/env: ‘sort -nr’: No such file or directory
        /nix/[...]-coreutils-8.31/bin/env: use -[v]S to pass options in shebang lines
    
        $ seq 1 2 | $(nix-build '<nixpkgs>' -A coreutils)/bin/env "-S sort -nr"
        2
        1
    
    GNU Coreutils says FreeBSD's `env` does, though I wonder if FreeBSD's
    would be unhappy with the `-S`:
    https://www.gnu.org/software/coreutils/manual/html_node/env-invocation.html#env-invocation
    
    BusyBox v1.30.1 does not, and does not have a `-S`-like option:
    
        $ seq 1 2 | $(nix-build '<nixpkgs>' -A busybox)/bin/env "sort -nr"
        env: can't execute 'sort -nr': No such file or directory
    
    Toybox 0.8.1 also does not, and also does not have a `-S` option:
    
        $ seq 1 2 | $(nix-build '<nixpkgs>' -A toybox)/bin/env "sort -nr"
        env: exec sort -nr: No such file or directory
    
    ---
    
    At any rate, if this patch merges and the remaining ~1,500 are updated,
    the much larger patch should probably include a checkstyle-like test
    asserting all new shebangs use `/usr/bin/env`. I also don't mind
    dealing with NixOS weirdness if the project would prefer that.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Graham Christensen <graham@grahamc.com>
    Closes openzfs#9893
    grahamc authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    dda702f View commit details
    Browse the repository at this point in the history
  5. Fix zdb -R with 'b' flag

    zdb -R :b fails due to the indirect block being compressed,
    and the 'b' and 'd' flag not working in tandem when specified.
    Fix the flag parsing code and create a zfs test for zdb -R
    block display.  Also fix the zio flags where the dotted notation
    for the vdev portion of DVA (i.e. 0.0:offset:length) fails.
    
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Paul Zuchowski <pzuchowski@datto.com>
    Closes openzfs#9640
    Closes openzfs#9729
    PaulZ-98 authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    bc67cba View commit details
    Browse the repository at this point in the history
  6. Add missing dmu_buf_unlock_parent() calls to dbuf_read_impl()

    As explained by the comment in dbuf_read() and above dbuf_read_impl().
    Under all circumstances the parent lock specified by dblt should be
    dropped when existing dbuf_read_impl().  This was not being done for
    two exist paths.  Additionally, ensure the mutex is unlocked before
    dropping the parent lock.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9968
    behlendorf authored Feb 10, 2020
    Configuration menu
    Copy the full SHA
    dceeca5 View commit details
    Browse the repository at this point in the history

Commits on Feb 11, 2020

  1. Address Coverity warnings in openzfs#9902

    Coverity reports the variable may be NULL, but due to the
    way the dirty records are handled this cannot be the case.
    Add a comment and VERIFY to make this clear and silence
    the warning.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9962
    mattmacy authored Feb 11, 2020
    Configuration menu
    Copy the full SHA
    7b49bbc View commit details
    Browse the repository at this point in the history
  2. Implement bookmark copying

    This feature allows copying existing bookmarks using
    
        zfs bookmark fs#target fs#newbookmark
    
    There are some niche use cases for such functionality,
    e.g. when using bookmarks as markers for replication progress.
    
    Copying redaction bookmarks produces a normal bookmark that
    cannot be used for redacted send (we are not duplicating
    the redaction object).
    
    ZCP support for bookmarking (both creation and copying) will be
    implemented in a separate patch based on this work.
    
    Overview:
    
    - Terminology:
        - source = existing snapshot or bookmark
        - new/bmark = new bookmark
    - Implement bookmark copying in `dsl_bookmark.c`
      - create new bookmark node
      - copy source's `zbn_phys` to new's `zbn_phys`
      - zero-out redaction object id in copy
    - Extend existing bookmark ioctl nvlist schema to accept
      bookmarks as sources
      - => `dsl_bookmark_create_nvl_validate` is authoritative
    - use `dsl_dataset_is_before` check for both snapshot
      and bookmark sources
    - Adjust CLI
      - refactor shortname expansion logic in `zfs_do_bookmark`
    - Update man pages
      - warn about redaction bookmark handling
    - Add test cases
      - CLI
      - pyyzfs libzfs_core bindings
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9571
    problame authored and behlendorf committed Feb 11, 2020
    Configuration menu
    Copy the full SHA
    a73f361 View commit details
    Browse the repository at this point in the history
  3. zcp: add zfs.sync.bookmark

    Add support for bookmark creation and cloning.
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Christian Schwarz <me@cschwarz.com>
    Closes openzfs#9571
    problame authored and behlendorf committed Feb 11, 2020
    Configuration menu
    Copy the full SHA
    948f0c4 View commit details
    Browse the repository at this point in the history

Commits on Feb 12, 2020

  1. zdb: Always print symlink target

    When zdb is printing paths, also print the symlink target if it exists.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Justin Keogh <commits@v6y.net>
    Closes openzfs#9925
    jakeogh authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    12f7b90 View commit details
    Browse the repository at this point in the history
  2. ZTS: Move zpool_split_wholedisks to linux.run

    This test uses the scsi_debug Linux kernel module.
    
    Move the test to linux.run until we have an alternative to scsi_debug
    worked out on FreeBSD.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9984
    Ryan Moeller authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    1bbeb6d View commit details
    Browse the repository at this point in the history
  3. Move zfs_version_kernel to platform code

    Linux uses sysfs to determine the module version, FreeBSD uses a
    different method.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9978
    Ryan Moeller authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    e7be5c4 View commit details
    Browse the repository at this point in the history
  4. ZTS: Fix zdb_display_block on FreeBSD

    Missed this in the review, but wc output on FreeBSD is indented,
    so string comparisons mismatch when comparing to an unindented number.
    
    Compare counts as integers instead of strings.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9980
    Ryan Moeller authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    9c536b9 View commit details
    Browse the repository at this point in the history
  5. ZTS: Interpret env vars in faketty on FreeBSD

    This was missed in review. On FreeBSD, script does not understand
    environment variables being passed as a command.
    
    Use env to make faketty handle env vars on FreeBSD.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9981
    Ryan Moeller authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    834f274 View commit details
    Browse the repository at this point in the history
  6. ZTS: Move user_namespace test to linux.run

    Namespaces is a Linux feature not available on other platforms.
    
    Move the user_namespace test out of common.run to linux.run.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9982
    Ryan Moeller authored Feb 12, 2020
    Configuration menu
    Copy the full SHA
    610eec4 View commit details
    Browse the repository at this point in the history

Commits on Feb 13, 2020

  1. Remove duplicate dbufs accounting

    Since AVL already has embedded element counter, use dn_dbufs_count
    only for dbufs not counted there (bonus buffers) and just add them.
    This removes two atomics per dbuf life cycle.
    
    According to profiler it reduces time spent by dbuf_destroy() inside
    bottlenecked dbuf_evict_thread() from 13.36% to 9.20% of the core.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Signed-off-by: Alexander Motin <mav@FreeBSD.org>
    Sponsored-By: iXsystems, Inc.
    Closes openzfs#9949
    amotin authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    465e4e7 View commit details
    Browse the repository at this point in the history
  2. Missed wakeup when growing kmem cache

    When growing the size of a (VMEM or KVMEM) kmem cache, spl_cache_grow()
    always does taskq_dispatch(spl_cache_grow_work), and then waits for the
    KMC_BIT_GROWING to be cleared by the taskq thread.
    
    The taskq thread (spl_cache_grow_work()) does:
    1. allocate new slab and add to list
    2. wake_up_all(skc_waitq)
    3. clear_bit(KMC_BIT_GROWING)
    
    Therefore, the waiting thread can wake up before GROWING has been
    cleared.  It will see that the growing has not yet completed, and go
    back to sleep until it hits the 100ms timeout.
    
    This can have an extreme performance impact on workloads that alloc/free
    more than fits in the (statically-sized) magazines.  These workloads
    allocate and free slabs with high frequency.
    
    The problem can be observed with `funclatency spl_cache_grow`, which on
    some workloads shows that 99.5% of the time it takes <64us to allocate
    slabs, but we spend ~70% of our time in outliers, waiting for the 100ms
    timeout.
    
    The fix is to do `clear_bit(KMC_BIT_GROWING)` before
    `wake_up_all(skc_waitq)`.
    
    A future investigation should evaluate if we still actually need to
    taskq_dispatch() at all, and if so on which kernel versions.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Wilson <gwilson@delphix.com>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#9989
    ahrens authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    2adc6b3 View commit details
    Browse the repository at this point in the history
  3. fix zstreamdump -C

    zstreamdump -C always fails.  It is not calculating the checksums, but
    it's still trying to verify that the (non-calculated) checksum matches
    the one stored in the send stream.
    
    This change makes zstreamdump -C not verify checksums.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#9983
    ahrens authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    f49b7a0 View commit details
    Browse the repository at this point in the history
  4. zfs-mount-generator: Fix escaping for /

    The correct name for the mount unit for / is "-.mount", not ".mount".
    
    Reviewed-by: InsanePrawn <insane.prawny@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Co-authored-by: Antonio Russo <antonio.e.russo@gmail.com>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    Closes openzfs#9970
    rlaager authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    d1d65bb View commit details
    Browse the repository at this point in the history
  5. ZTS: Use ECKSUM instead of EBADE in libzfs test

    Linux defines ECKSUM as EBADE, FreeBSD defines it as EINTEGRITY.
    
    Test for ECKSUM instead of EBADE so we don't have to define EBADE for
    this test on FreeBSD.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9992
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    b90b01c View commit details
    Browse the repository at this point in the history
  6. Fix a typo/whitespace in tests README

    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9991
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    523bc0d View commit details
    Browse the repository at this point in the history
  7. ZTS: Cleanup some cleanup functions

    Cleanup functions should make a best effort to clean up as much as
    possible.
    
    Do a consistency pass in a bunch of tests to make the cleanup
    functions less prone to failure and fix a few typos here and there.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9993
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    5ceccda View commit details
    Browse the repository at this point in the history
  8. ZTS: Eliminate partitioning from write_dirs

    These tests do not need to use partitions.
    
    Get rid of the partitioning and just use the disks directly.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9995
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    3e725f0 View commit details
    Browse the repository at this point in the history
  9. ZTS: Eliminate partitioning from zpool_remove

    These tests do not need to use partitions.
    
    Get rid of the partitioning and just use the disks directly.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9996
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    3bdc4f6 View commit details
    Browse the repository at this point in the history
  10. ZTS: Don't include zpool_create.shlib in zpool_add

    The zpool_add tests include zpool_create.shlib for a few silly
    variables.
    
    Don't use those variables for the file names. Include zpool_add.kshlib
    for whatever variables we still need.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9997
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    7143916 View commit details
    Browse the repository at this point in the history
  11. ZTS: Misc test fixes for FreeBSD

    Add missing logic for FreeBSD to a few test scripts.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9994
    Ryan Moeller authored Feb 13, 2020
    Configuration menu
    Copy the full SHA
    4f4ddf9 View commit details
    Browse the repository at this point in the history

Commits on Feb 14, 2020

  1. Use POSIX stdout/stderr redirect in configure macro

    This PR fixes an issue wherein redirecting stdout and stderr when 
    building kernel modules in configure tests relied on a bashism that 
    does not work as expected when /bin/sh is not bash.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-By: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Andrew J. Hesford <ajh@sideband.org>
    Closes openzfs#9990 
    Closes openzfs#9998
    ahesford authored Feb 14, 2020
    Configuration menu
    Copy the full SHA
    db0ad39 View commit details
    Browse the repository at this point in the history
  2. Make zpool.d/iostat work on FreeBSD

    There are slight differences in the iostat commands between FreeBSD and
    Linux.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#9979
    Ryan Moeller authored Feb 14, 2020
    Configuration menu
    Copy the full SHA
    0f18321 View commit details
    Browse the repository at this point in the history
  3. Remove limit on number of async zio_frees of non-dedup blocks

    The module parameter zfs_async_block_max_blocks limits the number of
    blocks that can be freed by the background freeing of filesystems and
    snapshots (from "zfs destroy"), in one TXG.  This is useful when freeing
    dedup blocks, becuase each zio_free() of a dedup block can require an
    i/o to read the relevant part of the dedup table (DDT), and will also
    dirty that block.
    
    zfs_async_block_max_blocks is set to 100,000 by default.  For the more
    typical case where dedup is not used, this can have a negative
    performance impact on the rate of background freeing (from "zfs
    destroy").  For example, with recordsize=8k, and TXG's syncing once
    every 5 seconds, we can free only 160MB of data per second, which may be
    much less than the rate we can write data.
    
    This change increases zfs_async_block_max_blocks to be unlimited by
    default.  To address the dedup freeing issue, a new tunable is
    introduced, zfs_max_async_dedup_frees, which limits the number of
    zio_free()'s of dedup blocks done by background destroys, per txg.  The
    default is 100,000 free's (same as the old zfs_async_block_max_blocks
    default).
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10000
    ahrens authored Feb 14, 2020
    Configuration menu
    Copy the full SHA
    4fe3a84 View commit details
    Browse the repository at this point in the history
  4. Support setting user properties in a channel program

    This adds support for setting user properties in a
    zfs channel program by adding 'zfs.sync.set_prop'
    and 'zfs.check.set_prop' to the ZFS LUA API.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Co-authored-by: Sara Hartse <sara.hartse@delphix.com>
    Contributions-by: Jason King <jason.king@joyent.com>
    Signed-off-by: Sara Hartse <sara.hartse@delphix.com>
    Signed-off-by: Jason King <jason.king@joyent.com>
    Closes openzfs#9950
    jasonbking authored Feb 14, 2020
    Configuration menu
    Copy the full SHA
    13b5a4d View commit details
    Browse the repository at this point in the history
  5. Systemd mount generator: Silence shellcheck warnings

    Silences a warning about an intentionally unquoted variable.
    Fixes a warning caused by strings split across lines by slightly
    refactoring keyloadcmd.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Antonio Russo <antonio.e.russo@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
    Closes openzfs#9649
    InsanePrawn authored and behlendorf committed Feb 14, 2020
    Configuration menu
    Copy the full SHA
    9d2f3b7 View commit details
    Browse the repository at this point in the history
  6. Systemd mount generator: Generate noauto units; add control properties

    This commit refactors the systemd mount generators and makes the
    following major changes:
    
    - The generator now generates units for datasets marked canmount=noauto,
      too. These units are NOT WantedBy local-fs.target.
      If there are multiple noauto datasets for a path, no noauto unit will
      be created. Datasets with canmount=on are prioritized.
    
    - Introduces handling of new user properties which are now included in
      the zfs-list.cache files:
        - org.openzfs.systemd:requires:
          List of units to require for this mount unit
        - org.openzfs.systemd:requires-mounts-for:
          List of mounts to require by this mount unit
        - org.openzfs.systemd:before:
          List of units to order after this mount unit
        - org.openzfs.systemd:after:
          List of units to order before this mount unit
        - org.openzfs.systemd:wanted-by:
          List of units to add a Wants dependency on this mount unit to
        - org.openzfs.systemd:required-by:
          List of units to add a Requires dependency on this mount unit to
        - org.openzfs.systemd:nofail:
          Toggles between a wants and a requires dependency.
        - org.openzfs.systemd:ignore:
          Do not generate a mount unit for this dataset.
    
      Consult the updated man page for detailed documentation.
    
    - Restructures and extends the zfs-mount-generator(8) man page with the
      above properties, information on unit ordering and a license header.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Antonio Russo <antonio.e.russo@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
    Closes openzfs#9649
    InsanePrawn authored and behlendorf committed Feb 14, 2020
    Configuration menu
    Copy the full SHA
    ecbbdac View commit details
    Browse the repository at this point in the history

Commits on Feb 16, 2020

  1. Honour sync=disabled when relinking tpmfiles

    Unlinked files don't respect synchronous flush commands, but when they get relinked
    their state is unknown. Previously we force flushed all such files even when
    sync=disabled. Correct this case.
    
    Reviewed-by: Chunwei Chen <tuxoko@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: DHE <git@dehacked.net>
    Closes openzfs#10005
    DeHackEd authored Feb 16, 2020
    Configuration menu
    Copy the full SHA
    d09dc59 View commit details
    Browse the repository at this point in the history
  2. ZTS: Move cksum to common system commands

    The cksum command is used by delegate tests. We have it on FreeBSD,
    so it should not have been moved to the Linux commands list.
    
    Move it back to the common commands list.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10007
    Ryan Moeller authored Feb 16, 2020
    Configuration menu
    Copy the full SHA
    fb63fc0 View commit details
    Browse the repository at this point in the history

Commits on Feb 18, 2020

  1. Prefer org.openzfs for features and properties

    Moving forward, we wish to use org.openzfs (no dash) rather than
    org.open-zfs or org.zfsonlinux for feature GUIDs and property names.
    The existing feature GUIDs cannot be changed.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    Closes openzfs#10003
    rlaager authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    f244846 View commit details
    Browse the repository at this point in the history
  2. Factor out some dbuf subroutines and add state change tracing

    Create dedicated dbuf_read_hole and dbuf_read_bonus.
    Additionally, add a dtrace probe to allow state change tracing.
    
    Reviewed-by: Matt Ahrens <matt@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Will Andrews <wca@FreeBSD.org>
    Reviewed by: Brad Lewis <brad.lewis@delphix.com>
    Authored-by: Will Andrews <wca@FreeBSD.org>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9923
    mattmacy authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    8b3547a View commit details
    Browse the repository at this point in the history
  3. Enable zpool events tunables and tests on FreeBSD

    We have have made the necessary changes in our module code to expose
    zevents through both devd and the zpool events ioctl. Now the tunables
    can be exposed and zpool events tests can be enabled on both platforms.
    
    A few minor tweaks to the tests were needed to accommodate the way wc
    formats output on FreeBSD.
    
    zed remains to be ported.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10008
    Ryan Moeller authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    5f087dd View commit details
    Browse the repository at this point in the history
  4. ZTS: Move free to Linux commands list

    FreeBSD does not have the free command. This command is only used by
    Linux in a perf hostinfo function.
    
    Move free from the list of common commands to the list of Linux
    commands.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10011
    Ryan Moeller authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    43849fd View commit details
    Browse the repository at this point in the history
  5. Add notice that forcefully unmount is not supported on Linux

    The Linux VFS will never allow a filesystem which is in use to
    be unmounted.  This behavior differs from other platforms like
    FreeBSD which allow a filesystem to be force unmounted.  This 
    will result in errors being returned to applications actively
    using the filesystem.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Mariusz Zaborski <oshogbo@vexillium.org>
    Closes openzfs#10013
    oshogbo authored Feb 18, 2020
    Configuration menu
    Copy the full SHA
    89adffb View commit details
    Browse the repository at this point in the history

Commits on Feb 19, 2020

  1. ZTS: Avoid nonportable cmp flag

    FreeBSD doesn't have the -n flag for cmp.
    
    Read the area for the first four labels from the disk to a separate
    file to compare instead of using the special flag to limit the size.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10024
    Ryan Moeller authored Feb 19, 2020
    Configuration menu
    Copy the full SHA
    392556f View commit details
    Browse the repository at this point in the history
  2. ZTS: Fix zpool_create/create-o_ashift on FreeBSD

    For some unknown reason, egrep was misbehaving with this pattern on
    FreeBSD.  The command works fine run interactively from a shell, but
    in the test the output of egrep is empty.
    
    Work around the issue by using a filter in the awk script instead.
    
    While here, add a bit of diagnostic output and other simplifications
    to the awk script as well.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10023
    Ryan Moeller authored Feb 19, 2020
    Configuration menu
    Copy the full SHA
    873cd18 View commit details
    Browse the repository at this point in the history

Commits on Feb 20, 2020

  1. ZTS: Eliminate partitioning from zpool_create etc

    These tests can be made to work without a bunch of complex
    partitioning of physical disks.
    
    Use the 3 disks directly, creating a few file disks if needed for a
    compelling reason.
    
    Reduce the use of shared variables that don't have a clear utility.
    
    Catch the fallout in tests that include cfg/shlib from zpool_create.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10002
    Ryan Moeller authored Feb 20, 2020
    Configuration menu
    Copy the full SHA
    8136956 View commit details
    Browse the repository at this point in the history
  2. Fix icp include directories for in-tree build

    When zfs is built in-tree using --enable-linux-builtin, the compile
    commands are executed from the kernel build directory. If the build
    directory is different from the kernel source directory, passing
    -Ifs/zfs/icp will not find the headers as they are not present in the
    build directory.
    
    Fix this by adding @abs_top_srcdir@ to pull the headers from the zfs
    source tree instead.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Arvind Sankar <nivedita@alum.mit.edu>
    Closes openzfs#10021
    nivedita76 authored Feb 20, 2020
    Configuration menu
    Copy the full SHA
    65635c3 View commit details
    Browse the repository at this point in the history
  3. ZTS: Fix faulty slog_replay_fs_001 test

    This test is supposed to verify zil operations. For TX_WRITE, writes
    must be synchronous in order to be entered in the zil. Linux seems to
    be doing sync writes even when they are not asked for, but on FreeBSD
    the test does not do what is intended.
    
    Use dd oflag=sync for the parts of this test that are supposed to
    result in TX_WRITE zil entries.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10022
    Ryan Moeller authored Feb 20, 2020
    Configuration menu
    Copy the full SHA
    325a551 View commit details
    Browse the repository at this point in the history
  4. ZTS: Check the right mount options on FreeBSD

    FreeBSD does not support the "devices" and "nodevices" mount options.
    
    Do not check these options on FreeBSD.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10028
    Ryan Moeller authored Feb 20, 2020
    Configuration menu
    Copy the full SHA
    b11375d View commit details
    Browse the repository at this point in the history
  5. ZTS: Fix userquota_006_pos on FreeBSD

    FreeBSD uses `pw` for account management. `userquota_006_pos`
    erroneously invokes the non-existent `groupdel` command on FreeBSD.
    
    Use `pw groupdel -n` instead of `groupdel` on FreeBSD.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10032
    Ryan Moeller authored Feb 20, 2020
    Configuration menu
    Copy the full SHA
    ca7ea23 View commit details
    Browse the repository at this point in the history

Commits on Feb 21, 2020

  1. ZTS: Don't use lsblk on FreeBSD

    These tests use lsblk to find the sector size of a disk.
    FreeBSD doesn't have lsblk.
    
    Use diskinfo -v to get sector size on FreeBSD.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>\
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10033
    Ryan Moeller authored Feb 21, 2020
    Configuration menu
    Copy the full SHA
    6a60841 View commit details
    Browse the repository at this point in the history
  2. ZTS: Move privilege tests to sunos.run

    These tests are unspported on FreeBSD and Linux for lack of pfexec.
    
    Move the privilege tests to sunos.run and remove the platform checks.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10035
    Ryan Moeller authored Feb 21, 2020
    Configuration menu
    Copy the full SHA
    f5f4381 View commit details
    Browse the repository at this point in the history
  3. ZTS: Refactor is_shared, fix impl on FreeBSD

    FreeBSD doesn't have a `share` command.  It does have showmount.
    
    Split the separate platform impls out of is_shared_impl.
    Dispatch to the correct platform impl function from is_shared.
    Eliminate the use of is_shared_impl from tests.  is_shared works.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10037
    Ryan Moeller authored Feb 21, 2020
    Configuration menu
    Copy the full SHA
    b7dbbf6 View commit details
    Browse the repository at this point in the history

Commits on Feb 22, 2020

  1. ZTS: Eliminate partitioning from zpool_destroy

    The zpool destroy tests partition a single disk to create two pools.
    
    This can be done using two disks and no partitioning instead.
    And temporarily allow vol recursion for FreeBSD while in here.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10036
    Ryan Moeller authored Feb 22, 2020
    Configuration menu
    Copy the full SHA
    24fcd9f View commit details
    Browse the repository at this point in the history

Commits on Feb 24, 2020

  1. Remove unused structs and members in dmu_send.c

    There are several structs (and members of structs) related to redaction,
    which are no longer used.  This commit removes them.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10039
    ahrens authored Feb 24, 2020
    Configuration menu
    Copy the full SHA
    31a69fb View commit details
    Browse the repository at this point in the history
  2. ZTS: Misc fixes for FreeBSD

    * Force UFS sync before snap in vol rollback tests
    * rw is not a valid share option on FreeBSD, use ro instead
    * zfs_unmount_nested: mountpoint is in the pool, rmdir *before* export
    * Fix some more platform checks
    * Fix disappearing group in delegate tests
    * Don't try delegating for jailed, only root can set it
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10038
    Ryan Moeller authored Feb 24, 2020
    Configuration menu
    Copy the full SHA
    92bd4ca View commit details
    Browse the repository at this point in the history
  3. Remove zfs_getattr and convoff dead code

    The `convoff` function is called only in one code path in `zfs_space`.
    Each caller of `zfs_space` is called with a `flock64_t` that has
    `l_whence` set to `SEEK_SET`. This means that `convoff` always results
    in a no-op as the `bfp` parameter has `l_whence` set to `SEEK_SET` and
    `int whence` is `SEEK_SET` as well.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by:  Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com>
    Closes openzfs#10006
    dbussink authored Feb 24, 2020
    Configuration menu
    Copy the full SHA
    327000c View commit details
    Browse the repository at this point in the history

Commits on Feb 25, 2020

  1. Update README for OpenZFS

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10053
    ahrens authored Feb 25, 2020
    Configuration menu
    Copy the full SHA
    521abcc View commit details
    Browse the repository at this point in the history
  2. ZTS: Move atime_003 to linux.run

    This test verifies relatime behavior, which is only present on Linux.
    
    Move the test to linux.run
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10046
    Ryan Moeller authored Feb 25, 2020
    Configuration menu
    Copy the full SHA
    2757010 View commit details
    Browse the repository at this point in the history
  3. Remove dead code error handling from dsl_crypt.c

    Sleepable (KM_SLEEP) allocations cannot fail. Hence
    error handling for them is not useful.
    
    Reviewed-By: Tom Caputi <tcaputi@datto.com>
    Reviewed-By: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#10031
    mattmacy authored Feb 25, 2020
    Configuration menu
    Copy the full SHA
    c6a6b4d View commit details
    Browse the repository at this point in the history

Commits on Feb 26, 2020

  1. ZTS: zed_start should not fail if zed is already running

    zed_start may be called in places where zed is not
    typically already running, but this is not a requirement
    of the tests.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
    Closes openzfs#9974
    ofaaland authored Feb 26, 2020
    Configuration menu
    Copy the full SHA
    0343139 View commit details
    Browse the repository at this point in the history
  2. Add missing newline after zfs redact help message

    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10045
    Ryan Moeller authored Feb 26, 2020
    Configuration menu
    Copy the full SHA
    a33cb7e View commit details
    Browse the repository at this point in the history
  3. ZTS: Misc fixes for FreeBSD

    * Check for mountd in is_shared to avoid timeout when not running
    * Enhance robustness of some cleanup functions
    * Simplify atime lookup
    * Skip sharenfs validation for now
    * Don't add mountpoint property to inheritance validation on FreeBSD
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10047
    Ryan Moeller authored Feb 26, 2020
    Configuration menu
    Copy the full SHA
    3a192f7 View commit details
    Browse the repository at this point in the history
  4. ZTS: Adapt casenorm tests for FreeBSD

    Several casenorm tests pass on FreeBSD but are expected to fail on
    Linux.
    
    Move the passing tests from "fail" to "maybe" so that passing on
    FreeBSD is not unexpected.
    
    Invert platform logic so FreeBSD doesn't use illumos-only zlook.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10050
    Ryan Moeller authored Feb 26, 2020
    Configuration menu
    Copy the full SHA
    abef699 View commit details
    Browse the repository at this point in the history
  5. ZTS: Fix zfs_copies_002_pos

    The function `get_used_prop` does not exist.
    
    Use `get_prop used` instead.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10059
    Ryan Moeller authored Feb 26, 2020
    Configuration menu
    Copy the full SHA
    647ff8e View commit details
    Browse the repository at this point in the history

Commits on Feb 27, 2020

  1. Refactor dnode dirty context from dbuf_dirty

    * Add dedicated donde_set_dirtyctx routine.
    * Add empty dirty record on destroy assertion.
    * Make much more extensive use of the SET_ERROR macro.
    
    Reviewed-by: Will Andrews <wca@FreeBSD.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#9924
    mattmacy authored Feb 27, 2020
    Configuration menu
    Copy the full SHA
    28caa74 View commit details
    Browse the repository at this point in the history
  2. Linux 5.6 compat: ktime_get_raw_ts64()

    The getrawmonotonic() and getrawmonotonic64() interfaces have been
    fully retired.  Update gethrtime() to use the replacement interface
    ktime_get_raw_ts64() which was introduced in the 4.18 kernel.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#10052
    Closes openzfs#10064
    behlendorf committed Feb 27, 2020
    Configuration menu
    Copy the full SHA
    ff5587d View commit details
    Browse the repository at this point in the history
  3. Linux 5.6 compat: time_t

    As part of the Linux kernel's y2038 changes the time_t type has been
    fully retired.  Callers are now required to use the time64_t type.
    
    Rather than move to the new type, I've removed the few remaining
    places where a time_t is used in the kernel code.  They've been
    replaced with a uint64_t which is already how ZFS internally
    handled these values.
    
    Going forward we should work towards updating the remaining user
    space time_t consumers to the 64-bit interfaces.
    
    Reviewed-by: Matthew Macy <mmacy@freebsd.org>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#10052
    Closes openzfs#10064
    behlendorf committed Feb 27, 2020
    Configuration menu
    Copy the full SHA
    2c3a837 View commit details
    Browse the repository at this point in the history
  4. ZTS: Fix zfs_receive_004_neg

    `zfs recv` of an incremental stream that already exists is ignored, with
    a message like:
    
        receiving incremental stream of pool/fs@incsnap into pool/fs@incsnap
        snap testpool/testfs@incsnap already exists; ignoring
    
    And the command exits successfully (exit code 0).
    
    The zfs_receive_004_neg test is expecting that a this case will fail,
    with nonzero exit code.
    
    The fix is to remove this specific command from the test case.  This
    lets us check that the remaining commands do in fact fail.
    
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10055
    ahrens authored Feb 27, 2020
    Configuration menu
    Copy the full SHA
    ab96461 View commit details
    Browse the repository at this point in the history
  5. ZTS: Misc fixes for FreeBSD

    * Set geom debug flags in corrupt_blocks_at_level
    * Use the right time zone for history tests
    * Add missing commands.cfg entry for diskinfo
    * Rewrite get_last_txg_synced to use zdb
    * Don't check ulimits for sparse files
    * Suspend removal before removing a vdev, not after
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10054
    Ryan Moeller authored Feb 27, 2020
    Configuration menu
    Copy the full SHA
    3d5ba1c View commit details
    Browse the repository at this point in the history

Commits on Feb 28, 2020

  1. Consolidate arc_buf allocation checks

    The following check currently occurs in three separate locations
    in dbuf.c.  This change consolidates those checks in to the
    dbuf_alloc_arcbuf_from_arcbuf() function.
    
    if (arc_is_encrypted(data)) {
    ...
    } else if (compress_type != ZIO_COMPRESS_OFF) {
    ...
    } else {
    ...
    }
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#10057
    mattmacy authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    13fac09 View commit details
    Browse the repository at this point in the history
  2. pyzfs: Add constants for platform-specific errnos

    FreeBSD doesn't have EBADE, ECHRNG, or ETIME.
    
    Add constants for these and set them appropriately for the platform.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10061
    Ryan Moeller authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    2764103 View commit details
    Browse the repository at this point in the history
  3. arc_summary: Make get_descriptions per platform

    Linux uses modinfo to get tunables descriptions, FreeBSD has to use
    sysctl.
    
    Move the existing function definition so it is defined that way on
    Linux, and add a definition in terms of sysctl for FreeBSD.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10062
    Ryan Moeller authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    2ce90dc View commit details
    Browse the repository at this point in the history
  4. Linux 5.5 compat: blkg_tryget()

    Commit torvalds/linux@9e8d42a0f accidentally
    converted the static inline function blkg_tryget() to GPL-only for
    kernels built with CONFIG_PREEMPT_RCU=y and CONFIG_BLK_CGROUP=y.
    
    Resolve the build issue by providing our own equivalent functionality
    when needed which uses rcu_read_lock_sched() internally as before.
    
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9745
    Closes openzfs#10072
    behlendorf authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    bd0d24e View commit details
    Browse the repository at this point in the history
  5. Fix CONFIG_MODULES=no Linux kernel config

    When configuring as builtin (--enable-linux-builtin) for kernels
    without loadable module support (CONFIG_MODULES=n) only the object
    file is created.  Never a loadable kmod.
    
    Update ZFS_LINUX_TRY_COMPILE to handle this in a manor similar to
    the ZFS_LINUX_TEST_COMPILE_ALL macro.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#9887
    Closes openzfs#10063
    behlendorf authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    3f99a3a View commit details
    Browse the repository at this point in the history
  6. ZTS: Eliminate partitioning from zpool_add

    Use file vdevs if we are short on $DISKS.
    Also fixed vol recursion for FreeBSD in 004.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10060
    Ryan Moeller authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    f0410e9 View commit details
    Browse the repository at this point in the history
  7. ZTS: Fixup shebang in rsend_016, add to common.run

    All other ksh scripts use /bin/ksh in the shebang.
    
    Make rsend_016_neg consistent with the rest of the suite.
    
    The test also was absent from any runfiles. Add it to common.run.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10051
    Ryan Moeller authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    6c0abcf View commit details
    Browse the repository at this point in the history
  8. Improve zfs destroy performance with zio_t-free zio_free()

    When "zfs destroy" is run, it completes quickly, and in the background
    we locate the blocks to free and free them.  This background activity
    can be observed with `zpool get freeing` and `zpool wait -t free ...`.
    
    This background activity is processed by a single thread (the spa_sync
    thread) which calls zio_free() on each of the blocks to free.  With even
    modest storage performance, the CPU consumption of zio_free() can be the
    performance bottleneck.
    
    Performance of zio_free() can be improved by not actually creating a
    zio_t in the common case (non-dedup, non-gang), instead calling
    metaslab_free() directly.  This avoids the CPU cost of allocating the
    zio_t, and more importantly the cost of adding and later removing this
    zio_t from the parent zio's child list.
    
    The result is that performance of background freeing more than doubles,
    from 0.6 million blocks per second to 1.3 million blocks per second.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Wilson <gwilson@delphix.com>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10034
    ahrens authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    9cdf7b1 View commit details
    Browse the repository at this point in the history
  9. Re-share zfsdev_getminor and zfs_onexit_fd_hold

    By adding a zfs_file_private accessor to the common
    interfaces and some extensions to FreeBSD platform
    code it is now possible to share the implementations
    for the aforementioned functions.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#10073
    mattmacy authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    ae9f92f View commit details
    Browse the repository at this point in the history
  10. Don't call zrele on passed zp in zfs_xattr_owner_unlinked on FreeBSD

    FreeBSD has a somewhat more cumbersome locking and refcounting
    protocol for the platform counterpart to znode. We need to not call
    zrele on the passed zp, but do need to do so on any intermediate zp.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#10075
    mattmacy authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    cf118ae View commit details
    Browse the repository at this point in the history
  11. Don't open zfs control device exclusively

    With the FreeBSD platform changes that were made for openzfs#10073
    it is no longer necessary on FreeBSD to open the control device
    exclusively to get onexit callbacks invoked.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matt Macy <mmacy@FreeBSD.org>
    Closes openzfs#10076
    mattmacy authored Feb 28, 2020
    Configuration menu
    Copy the full SHA
    d32eff3 View commit details
    Browse the repository at this point in the history

Commits on Mar 2, 2020

  1. ZTS: Change issue URL template to OpenZFS org

    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10081
    Ryan Moeller authored Mar 2, 2020
    Configuration menu
    Copy the full SHA
    1289fbb View commit details
    Browse the repository at this point in the history
  2. Make spa_history_zone platform-dependent in kernel

    This function should only return "linux" on Linux.
    
    Move the kernel part of the function out of common code.
    Fix the tests for FreeBSD.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10079
    Ryan Moeller authored Mar 2, 2020
    Configuration menu
    Copy the full SHA
    9bb907b View commit details
    Browse the repository at this point in the history

Commits on Mar 3, 2020

  1. ZTS: Provide for nested cleanup routines

    Shared test library functions lack a simple way to ensure proper
    cleanup in the event of a failure.  The `log_onexit` cleanup pattern
    cannot be used in library functions because it uses one global
    variable to store the cleanup command.
    
    An example of where this is a serious issue is when a tunable that
    artifically stalls kernel progress gets activated and then some check
    fails.  Unless the caller knows about the tunable and sets it back,
    the system will be left in a bad state.
    
    To solve this problem, turn the global cleanup variable into a stack.
    Provide push and pop functions to add additional cleanup steps and
    remove them after it is safe again.
    
    The first use of this new functionality is in attempt_during_removal,
    which sets REMOVAL_SUSPEND_PROGRESS.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10080
    Ryan Moeller authored Mar 3, 2020
    Configuration menu
    Copy the full SHA
    0a0f9a7 View commit details
    Browse the repository at this point in the history
  2. Improve performance of zio_taskq_member

    __zio_execute() calls zio_taskq_member() to determine if we are running
    in a zio interrupt taskq, in which case we may need to switch to
    processing this zio in a zio issue taskq.  The call to
    zio_taskq_member() can become a performance bottleneck when we are
    processing a high rate of zio's.
    
    zio_taskq_member() calls taskq_member() on each of the zio interrupt
    taskqs, of which there are 21.  This is slow because each call to
    taskq_member() does tsd_get(taskq_tsd), which on Linux is relatively
    slow.
    
    This commit improves the performance of zio_taskq_member() by having it
    cache the value of tsd_get(taskq_tsd), reducing the number of those
    calls to 1/21th of the current behavior.
    
    In a test case running `zfs send -c >/dev/null` of a filesystem with
    small blocks (average 2.5KB/block), zio_taskq_member() was using 6.7% of
    one CPU, and with this change it is reduced to 1.3%.  Overall time to
    perform the `zfs send` reduced by 10% (~150,000 block/sec to ~165,000
    blocks/sec).
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10070
    ahrens authored Mar 3, 2020
    Configuration menu
    Copy the full SHA
    b3212d2 View commit details
    Browse the repository at this point in the history

Commits on Mar 4, 2020

  1. Add trim support to zpool wait

    Manual trims fall into the category of long-running pool activities
    which people might want to wait synchronously for. This change adds
    support to 'zpool wait' for waiting for manual trim operations to
    complete. It also adds a '-w' flag to 'zpool trim' which can be used to
    turn 'zpool trim' into a synchronous operation.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
    Signed-off-by: John Gallagher <john.gallagher@delphix.com>
    Closes openzfs#10071
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    2288d41 View commit details
    Browse the repository at this point in the history
  2. ZTS: Test the correct filesystem_limits behavior

    See issue openzfs#8226: Property filesystem_limit does not work as documented
    
    There have been previous attempts to fix the behavior on Linux, but so
    far the issue is still open.  See PRs openzfs#8228, openzfs#8280.
    
    The existing tests pass for the incorrect behavior.  This is a problem
    on FreeBSD; we are failing the tests because we implement the feature
    correctly.
    
    I have adapted the tests based on the work by @loli10K in openzfs#8280 and
    extended the changes to fix the snapshot_limit test as well.
    
    Linux now fails these tests, so entries linking to the issue have been
    added to the "maybe" group in zts-report.py.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10082
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    d16c029 View commit details
    Browse the repository at this point in the history
  3. zio: dprintf_bp() if errors > 0 in zfs_blkptr_verify()

    Also dprintf_bp() in case BLK_VERIFY_HALT of zfs_blkptr_verify_log()
    since dprintf_bp() in zfs_blkptr_verify() will never be executed.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Justin Keogh <commits@v6y.net>
    Closes openzfs#10086
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    f49db9b View commit details
    Browse the repository at this point in the history
  4. ZTS: Add zts-report exceptions for FreeBSD

    There are three tests we expect to fail only on FreeBSD.
    * link_count never exits and eventually times out:
     - @amotin tells me this test is probably not applicable to us
     - Skip on FreeBSD
    * userobj feature does not activate immediately after pool upgrade
     - low impact; we are aware of this issue
    * removal does not appear to condense on export
     - low impact; we are aware of this issue
    
    Additionally removal_with_zdb passes on FreeBSD, so it is moved to
    "maybe".
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10093
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    4b06d05 View commit details
    Browse the repository at this point in the history
  5. ZTS: Add missing quotes

    `default_setup` takes a disk list as the first argument and has
    optional additional arguments that control secondary functionality.
    A couple of test setups mistakenly call `default_setup $DISKS`.
    
    Add quotes so the second and subsequent disks are correctly included
    in the pool as vdevs rather than triggering unwanted behavior from
    `default_setup`.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10097
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    fa23c5b View commit details
    Browse the repository at this point in the history
  6. ZTS: Speed up write_dirs cleanup

    The write_dirs tests fill a filesystem with a bunch of files until it
    is full.  In cleanup the files are truncated and removed individually.
    These tests already take a while to run.
    
    It is quicker and easier to destroy the whole dataset and create a new
    one to replace it in the cleanup functions.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10098
    behlendorf authored Mar 4, 2020
    Configuration menu
    Copy the full SHA
    5a1abc4 View commit details
    Browse the repository at this point in the history

Commits on Mar 6, 2020

  1. ZTS: Update zts-report exceptions for FreeBSD

    The new zfs_sync_trim_* tests are skipped on FreeBSD.
    Both of the previously failing tests are now passing.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10105
    Ryan Moeller authored Mar 6, 2020
    Configuration menu
    Copy the full SHA
    788398c View commit details
    Browse the repository at this point in the history
  2. Change default to overlay=on

    Filesystems allow overlay mounts by default on FreeBSD and Linux.
    
    Respect the native convention by switching the default to overlay=on,
    while retaining the option to turn the property off for compatibility
    with other operating systems' conventions.
    
    Update documentation and tests accordingly.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10030
    Ryan Moeller authored Mar 6, 2020
    Configuration menu
    Copy the full SHA
    f5f6fb0 View commit details
    Browse the repository at this point in the history
  3. ZTS: Another round of changes for FreeBSD

    Highlights:
    * is_linux -> is_illumos swaps
    * make block_device_wait more clever when paths are given
    * slightly optimize default_cleanup_noexit
    * remove platform differences in user_run
    * temporarily expect non-libfetch behavior for keylocation=/foo/bar
    * fix sharenfs exceptions
    * don't test multihost property
    * fix misc broken platform checks
    * clear zinjected faults in removal_resume_export callback
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10092
    Ryan Moeller authored Mar 6, 2020
    Configuration menu
    Copy the full SHA
    2b95e91 View commit details
    Browse the repository at this point in the history

Commits on Mar 9, 2020

  1. Systemd mount generator: don't fail keyload from file if already loaded

    Previously the generated keyload units for encryption roots with
    keylocation=file://* didn't contain the code to detect if the key
    was already loaded and would be marked failed in such situations.
    
    Move the code to check whether the key is already loaded
    from keylocation=prompt handling to general key loading code.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: InsanePrawn <insane.prawny@gmail.com>
    Closes openzfs#10103
    InsanePrawn authored Mar 9, 2020
    Configuration menu
    Copy the full SHA
    ff2f960 View commit details
    Browse the repository at this point in the history

Commits on Mar 10, 2020

  1. Make init scripts depend on Makefile

    This brings it in line with the example:
    https://www.gnu.org/software/automake/manual/html_node/Scripts.html
    
    This way, if the substitution code is changed, they should update.
    
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    rlaager authored and behlendorf committed Mar 10, 2020
    Configuration menu
    Copy the full SHA
    dc4dd46 View commit details
    Browse the repository at this point in the history
  2. Delete built init scripts in make clean

    Previously, they were being deleted in make distclean.  This brings it
    in line with the example:
    https://www.gnu.org/software/automake/manual/html_node/Scripts.html
    
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    rlaager authored and behlendorf committed Mar 10, 2020
    Configuration menu
    Copy the full SHA
    49afc91 View commit details
    Browse the repository at this point in the history
  3. initramfs: Eliminate substitutions

    These are now handled in zfs-functions, so this is all duplicative and
    unnecessary.
    
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    rlaager authored and behlendorf committed Mar 10, 2020
    Configuration menu
    Copy the full SHA
    01243e7 View commit details
    Browse the repository at this point in the history
  4. Fix zfs-functions packaging bug

    This fixes a bug where the generated zfs-functions was being included
    along with original zfs-functions.in in the make dist tarball.  This
    caused an unfortunate series of events during build/packaging that
    resulted in the RPM-installed /etc/zfs/zfs-functions listing the
    paths as:
    
    ZFS="/usr/local/sbin/zfs"
    ZED="/usr/local/sbin/zed"
    ZPOOL="/usr/local/sbin/zpool"
    
    When they should have been:
    
    ZFS="/sbin/zfs"
    ZED="/sbin/zed"
    ZPOOL="/sbin/zpool"
    
    This affects init.d (non-systemd) distros like CentOS 6.
    
    /etc/default/zfs and /etc/zfs/zfs-functions are also used by the
    initramfs, so they need to be built even when init.d support is not.
    They have been moved to the (new) etc/default and (existing) etc/zfs
    source directories, respectively.
    
    Fixes: openzfs#9443
    
    Co-authored-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Richard Laager <rlaager@wiktel.com>
    2 people authored and behlendorf committed Mar 10, 2020
    Configuration menu
    Copy the full SHA
    5ecbb29 View commit details
    Browse the repository at this point in the history
  5. ZTS: Simplify some libtest functions

    Don't echo the results of arithmetic expressions, it's not necessary.
    
    Use hw.clockrate sysctl to get CPU freq instead of parsing dmesg.boot
    for a line that might not even be there anymore.
    
    Reduce bookkeeping in fill_fs, making it easier to follow.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10113
    Ryan Moeller authored Mar 10, 2020
    Configuration menu
    Copy the full SHA
    9be70c3 View commit details
    Browse the repository at this point in the history
  6. Improve zfs send performance by bypassing the ARC

    When doing a zfs send on a dataset with small recordsize (e.g. 8K),
    performance is dominated by the per-block overheads.  This is especially
    true with `zfs send --compressed`, which further reduces the amount of
    data sent, for the same number of blocks.  Several threads are involved,
    but the limiting factor is the `send_prefetch` thread, which is 100% on
    CPU.
    
    The main job of the `send_prefetch` thread is to issue zio's for the
    data that will be needed by the main thread.  It does this by calling
    `arc_read(ARC_FLAG_PREFETCH)`.  This has an immediate cost of creating
    an arc_hdr, which takes around 14% of one CPU.  It also induces later
    costs by other threads:
    
     * Since the data was only prefetched, dmu_send()->dmu_dump_write() will
       need to call arc_read() again to get the data.  This will have to
       look up the arc_hdr in the hash table and copy the data from the
       scatter ABD in the arc_hdr to a linear ABD in arc_buf.  This takes
       27% of one CPU.
    
     * dmu_dump_write() needs to arc_buf_destroy()  This takes 11% of one
       CPU.
    
     * arc_adjust() will need to evict this arc_hdr, taking about 50% of one
       CPU.
    
    All of these costs can be avoided by bypassing the ARC if the data is
    not already cached.  This commit changes `zfs send` to check for the
    data in the ARC, and if it is not found then we directly call
    `zio_read()`, reading the data into a linear ABD which is used by
    dmu_dump_write() directly.
    
    The performance improvement is best expressed in terms of how many
    blocks can be processed by `zfs send` in one second.  This change
    increases the metric by 50%, from ~100,000 to ~150,000.  When the amount
    of data per block is small (e.g. 2KB), there is a corresponding
    reduction in the elapsed time of `zfs send >/dev/null` (from 86 minutes
    to 58 minutes in this test case).
    
    In addition to improving the performance of `zfs send`, this change
    makes `zfs send` not pollute the ARC cache.  In most cases the data will
    not be reused, so this allows us to keep caching useful data in the MRU
    (hit-once) part of the ARC.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Serapheim Dimitropoulos <serapheim@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10067
    ahrens authored Mar 10, 2020
    Configuration menu
    Copy the full SHA
    1dc32a6 View commit details
    Browse the repository at this point in the history
  7. ZTS: Add a failsafe callback to run after each test

    Tests that get killed do not have an opportunity to clean up.
    
    There are many bad states this can leave the system in, but of
    particular gravity is when zinject has been used to induce bad
    behavior for one or more of the test disks.
    
    Create a failsafe mechanism in test-runner.py that runs a callback
    script after every test. The script is common to all tests so all
    tests benefit from the protection.
    
    Add an obligatory `zinject -c all` to clear all zinject state after
    every test case is run.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10096
    Ryan Moeller authored Mar 10, 2020
    Configuration menu
    Copy the full SHA
    ddd9ef3 View commit details
    Browse the repository at this point in the history

Commits on Mar 11, 2020

  1. zloop.sh should call ZDB with pool name

    Commit 54007c7 introduced an error, changing the final
    argument to $ZDB from ztest to $ZTEST.  This argument
    indicates the pool name, not the script, and so should
    not have been changed.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Olaf Faaland <faaland1@llnl.gov>
    Closes openzfs#10118
    ofaaland authored Mar 11, 2020
    Configuration menu
    Copy the full SHA
    6187151 View commit details
    Browse the repository at this point in the history

Commits on Mar 12, 2020

  1. Prevent deadlock in arc_read in Linux memory reclaim callback

    Using zfs with Lustre, an arc_read can trigger kernel memory allocation
    that in turn leads to a memory reclaim callback and a deadlock within a
    single zfs process. This change uses spl_fstrans_mark and
    spl_trans_unmark to prevent the reclaim attempt and the deadlock
    (https://zfsonlinux.topicbox.com/groups/zfs-devel/T4db2c705ec1804ba).
    The stack trace observed is:
    
        __schedule at ffffffff81610f2e
        schedule at ffffffff81611558
        schedule_preempt_disabled at ffffffff8161184a
        __mutex_lock at ffffffff816131e8
        arc_buf_destroy at ffffffffa0bf37d7 [zfs]
        dbuf_destroy at ffffffffa0bfa6fe [zfs]
        dbuf_evict_one at ffffffffa0bfaa96 [zfs]
        dbuf_rele_and_unlock at ffffffffa0bfa561 [zfs]
        dbuf_rele_and_unlock at ffffffffa0bfa32b [zfs]
        osd_object_delete at ffffffffa0b64ecc [osd_zfs]
        lu_object_free at ffffffffa06d6a74 [obdclass]
        lu_site_purge_objects at ffffffffa06d7fc1 [obdclass]
        lu_cache_shrink_scan at ffffffffa06d81b8 [obdclass]
        shrink_slab at ffffffff811ca9d8
        shrink_node at ffffffff811cfd94
        do_try_to_free_pages at ffffffff811cfe63
        try_to_free_pages at ffffffff811d01c4
        __alloc_pages_slowpath at ffffffff811be7f2
        __alloc_pages_nodemask at ffffffff811bf3ed
        new_slab at ffffffff81226304
        ___slab_alloc at ffffffff812272ab
        __slab_alloc at ffffffff8122740c
        kmem_cache_alloc at ffffffff81227578
        spl_kmem_cache_alloc at ffffffffa048a1fd [spl]
        arc_buf_alloc_impl at ffffffffa0befba2 [zfs]
        arc_read at ffffffffa0bf0924 [zfs]
        dbuf_read at ffffffffa0bf9083 [zfs]
        dmu_buf_hold_by_dnode at ffffffffa0c04869 [zfs]
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Mark Roper <markroper@gmail.com>
    Closes openzfs#9987
    markroper authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    1e9231a View commit details
    Browse the repository at this point in the history
  2. Prevent race condition in dnode_dest (openzfs#10101)

    dnode_special_close() waits for the refcount of dn_holds to go to zero
    without holding the dn_mtx. dnode_rele_and_unlock() does the final
    remove to dn_holds with dn_mtx being held:
    
    	refs = zfs_refcount_remove(&dn->dn_holds, tag);
    	mutex_exit(&dn->dn_mtx);
    
    So, there is a race condition after the remove until dn_mtx is
    dropped. During that time, dnode_destroy() can get called, which ends
    up in dnode_dest() calling mutex_destroy() and a panic since the lock
    is still held.
    
    This change adds a condvar to wait for the final dnode_rele_and_unlock()
    to release the dn_mtx before calling dnode_destroy().
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
    Signed-off-by: John Poduska <jpoduska@datto.com>
    Closes openzfs#7814
    Closes openzfs#10101
    jwpoduska authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    e6b28ef View commit details
    Browse the repository at this point in the history
  3. ZTS: Wait for free space between write_dirs tests

    Cleanup for write_dirs involves destroying a dataset filling a pool
    and then recreating the dataset for the next test.  Due to the
    asynchronous nature of free space accounting, recreating the dataset
    can fail for lack of space, causing problems for the next test.
    
    Add wait_freeing $TESTPOOL to wait for the space to be freed and then
    sync_pool $TESTPOOL to update the space accounting before attempting
    to recreate the test filesystem.
    
    Only use a single disk to create the pool.  Make it a small file so it
    does not take too long to fill.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10112
    Ryan Moeller authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    e70b127 View commit details
    Browse the repository at this point in the history
  4. ZTS: Test boundary conditions in alloc_class_012

    Issue openzfs#9142 describes an error in the checks for device removal that
    can prevent removal of special allocation class vdevs in some
    situations.
    
    Enhance alloc_class/alloc_class_012_pos to check situations where this
    bug occurs.
    
    Update zts-report with knowledge of issue openzfs#9142.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10116 
    Issue openzfs#9142
    Ryan Moeller authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    cdbc34f View commit details
    Browse the repository at this point in the history
  5. ZTS: Use correct signal numbers for status checks

    Different operating systems encode exit status in different ways.
    The logapi shell library assumes the Solaris meaning of exit codes,
    which is not correct on other platforms.
    
    Define the needed constants according to the platform we are running
    on and use those to decode process exit status.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10121
    Ryan Moeller authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    94eb65b View commit details
    Browse the repository at this point in the history
  6. Fix infinite scan on a pool with only special allocations

    Attempt to run scrub or resilver on a new pool containing only special
    allocations (special vdev added on creation) caused infinite loop
    because of dsl_scan_should_clear() limiting memory usage to 5% of pool
    size, which it calculated accounting only normal allocation class.
    
    Addition of special and just in case dedup classes fixes the issue.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Alexander Motin <mav@FreeBSD.org>
    Sponsored-By: iXsystems, Inc.
    Closes openzfs#10106 
    Closes openzfs#8694
    amotin authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    fa130e0 View commit details
    Browse the repository at this point in the history
  7. dmu_objset_from_ds must be called with dp_config_rwlock held

    The normal lock order is that the dp_config_rwlock must be held before
    the ds_opening_lock.  For example, dmu_objset_hold() does this.
    However, dmu_objset_open_impl() is called with the ds_opening_lock held,
    and if the dp_config_rwlock is not already held, it will attempt to
    acquire it.  This may lead to deadlock, since the lock order is
    reversed.
    
    Looking at all the callers of dmu_objset_open_impl() (which is
    principally the callers of dmu_objset_from_ds()), almost all callers
    already have the dp_config_rwlock.  However, there are a few places in
    the send and receive code paths that do not.  For example:
    dsl_crypto_populate_key_nvlist, send_cb, dmu_recv_stream,
    receive_write_byref, redact_traverse_thread.
    
    This commit resolves the problem by requiring all callers ot
    dmu_objset_from_ds() to hold the dp_config_rwlock.  In most cases, the
    code has been restructured such that we call dmu_objset_from_ds()
    earlier on in the send and receive processes, when we already have the
    dp_config_rwlock, and save the objset_t until we need it in the middle
    of the send or receive (similar to what we already do with the
    dsl_dataset_t).  Thus we do not need to acquire the dp_config_rwlock in
    many new places.
    
    I also cleaned up code in dmu_redact_snap() and send_traverse_thread().
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Paul Zuchowski <pzuchowski@datto.com>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#9662
    Closes openzfs#10115
    ahrens authored Mar 12, 2020
    Configuration menu
    Copy the full SHA
    0fdd610 View commit details
    Browse the repository at this point in the history

Commits on Mar 13, 2020

  1. ZTS: Update flaky tests in zts-report

    Some tests which pass on FreeBSD but fail on Linux had been put in the
    "maybe" set.  Move these back to "known" under an "if Linux" check so
    the expected outcome is clear.
    
    Add some tests that have been found to be flaky on FreeBSD stable/12
    to the "maybe" set.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10120
    Ryan Moeller authored Mar 13, 2020
    Configuration menu
    Copy the full SHA
    d3fe62c View commit details
    Browse the repository at this point in the history

Commits on Mar 16, 2020

  1. Remove CI builder customization from TEST

    The default options are reasonable for all of the CI builders.
    
    * TEST_XFSTESTS_SKIP=yes  - This is already the default.
    * TEST_ZTEST_TIMEOUT=3600 - Increased ztest run time only increases
      code coverage by a small degree.  Default 900s runs are sufficient.
    * Disabling certain tests on 32-bit builders is no longer needed.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Reviewed-by: Kjeld Schouten <kjeld@schouten-lebbing.nl>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#10129
    behlendorf authored Mar 16, 2020
    Configuration menu
    Copy the full SHA
    c94fb10 View commit details
    Browse the repository at this point in the history
  2. Improve zfs receive performance by batching writes

    For each WRITE record in the stream, `zfs receive` creates a DMU
    transaction (`dmu_tx_create()`) and writes this block's data into the
    object.  If per-block overheads (as opposed to per-byte overheads)
    dominate performance (as is often the case with small recordsize), the
    per-dmu-transaction overheads can be significant.  For example, in some
    workloads the `receieve_writer` thread is 100% on CPU, and more than
    half of its CPU time is in these per-tx routines (e.g.
    dmu_tx_hold_write, dmu_tx_assign, dmu_tx_commit).
    
    To improve performance of `zfs receive`, this commit batches WRITE
    records which are to nearby offsets of the same object, and uses one DMU
    transaction to write them all.  By default the batch size is 1MB, which
    for recordsize=8K reduces the number of DMU transactions by 128x for
    full send streams (incrementals will depend on how "clumpy" the changed
    blocks are).
    
    This commit improves the performance of `dd if=stream | zfs recv`
    from 78,800 blocks/sec to 98,100 blocks/sec (25% improvement).
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10099
    ahrens authored Mar 16, 2020
    Configuration menu
    Copy the full SHA
    7261fc2 View commit details
    Browse the repository at this point in the history
  3. libzfs: Fix bounds checks for float parsing

    UINT64_MAX is not exactly representable as a double.
    
    The closest representation is UINT64_MAX + 1, so we can use a >=
    comparison instead of > for the bounds check.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10127
    Ryan Moeller authored Mar 16, 2020
    Configuration menu
    Copy the full SHA
    4d32aba View commit details
    Browse the repository at this point in the history

Commits on Mar 17, 2020

  1. Exit status 256+signum is actually baked in to ksh

    While openzfs#10121 did fix the signal numbers for FreeBSD/Darwin, it
    incorrectly changed the expected encoding of exit status for commands
    that exited on a signal.  The encoding 256+signum is a feature of the
    shell.  Only the signal numbers themselves are platform-dependent.
    
    Always use the encoding 256+signum when checking exit status for
    signal exits.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10137
    Ryan Moeller authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    e0d3284 View commit details
    Browse the repository at this point in the history
  2. ZTS: Use default_cleanup_noexit where needed

    And add log_pass appropriately.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10136
    Ryan Moeller authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    80d98a8 View commit details
    Browse the repository at this point in the history
  3. Add option for forcible unmounting dataset while receiving snapshot.

    Currently when the dataset is in use we can't receive snapshots.
    
        zfs send test/1@asd | zfs recv -FM test/2
        cannot unmount '/test/2': Device busy
    
    This commits add option 'M' which attempts to forcibly unmount the
    dataset.  Thanks to this we can enforce receiving snapshots in a
    single step.
    
    Note that this functionality is not supported on Linux because the
    VFS will prevent active mounted filesystems from being unmounted,
    even with the force option.  This is the intended VFS behavior.
    
    Test cases were added to verify the expected behavior based on
    the platform.
    
    Discussed-with: Pawel Jakub Dawidek <pjd@FreeBSD.org>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Allan Jude <allanjude@freebsd.org>
    External-issue: https://reviews.freebsd.org/D22306
    Closes openzfs#9904
    oshogbo authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    a57d3d4 View commit details
    Browse the repository at this point in the history
  4. ICP: gcm-avx: Support architectures lacking the MOVBE instruction

    There are a couple of x86_64 architectures which support all needed
    features to make the accelerated GCM implementation work but the
    MOVBE instruction. Those are mainly Intel Sandy- and Ivy-Bridge
    and AMD Bulldozer, Piledriver, and Steamroller.
    
    By using MOVBE only if available and replacing it with a MOV
    followed by a BSWAP if not, those architectures now benefit from
    the new GCM routines and performance is considerably better
    compared to the original implementation.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Adam D. Moss <c@yotes.com>
    Signed-off-by: Attila Fülöp <attila@fueloep.org>
    Followup openzfs#9749 
    Closes openzfs#10029
    AttilaFueloep authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    5b3b795 View commit details
    Browse the repository at this point in the history
  5. Separate warning for incomplete and corrupt streams

    This change adds a separate return code to zfs_ioc_recv that is used 
    for incomplete streams, in addition to the existing return code for 
    streams that contain corruption.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
    Signed-off-by: Paul Dagnelie <pcd@delphix.com>
    Closes openzfs#10122
    pcd1193182 authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    7145123 View commit details
    Browse the repository at this point in the history
  6. Fix cstyle warnings

    Fix minor cstyle warnings accidentally introduced by 7145123.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#10143
    behlendorf authored Mar 17, 2020
    Configuration menu
    Copy the full SHA
    6b7028e View commit details
    Browse the repository at this point in the history

Commits on Mar 18, 2020

  1. Fix zfs_rmnode() unlink / rollback issue

    If a has rollback has occurred while a file is open and unlinked.
    Then when the file is closed post rollback it will not exist in the
    rolled back version of the unlinked object.  Therefore, the call to
    zap_remove_int() may correctly return ENOENT and should be allowed.
    
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes openzfs#6812 
    Closes openzfs#9739
    behlendorf authored Mar 18, 2020
    Configuration menu
    Copy the full SHA
    5351951 View commit details
    Browse the repository at this point in the history
  2. Changed decimals to integers in the arcstat script

    Changed interval value type from decimal to integer,
    because of deprecation warning in Python 3.8 and above.
    Also changed kstat values type from decimal to integer,
    because all the values are integers.
    
    Fixed behavior of arcstat when run without args.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: Bartosz Zieba <bartosz@zieba.pro>
    Closes openzfs#10132 
    Closes openzfs#10142
    Avatat authored Mar 18, 2020
    Configuration menu
    Copy the full SHA
    4df8b2c View commit details
    Browse the repository at this point in the history
  3. Avoid core dump on invalid redaction bookmark

    libzfs aborts and dumps core on EINVAL from the kernel when trying to
    do a redacted send with a bookmark that is not a redaction bookmark.
    
    Move redacted bookmark validation into libzfs.
    
    Check if the bookmark given for redactions is actually a redaction
    bookmark.  Print an error message and exit gracefully if it is not.
    
    Don't abort on EINVAL in zfs_send_one.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10138
    Ryan Moeller authored Mar 18, 2020
    Configuration menu
    Copy the full SHA
    22df245 View commit details
    Browse the repository at this point in the history
  4. Deprecate deduplicated send streams

    Dedup send can only deduplicate over the set of blocks in the send
    command being invoked, and it does not take advantage of the dedup table
    to do so. This is a very common misconception among not only users, but
    developers, and makes the feature seem more useful than it is. As a
    result, many users are using the feature but not getting any benefit
    from it.
    
    Dedup send requires a nontrivial expenditure of memory and CPU to
    operate, especially if the dataset(s) being sent is (are) not already
    using a dedup-strength checksum.
    
    Dedup send adds developer burden. It expands the test matrix when
    developing new features, causing bugs in released code, and delaying
    development efforts by forcing more testing to be done.
    
    As a result, we are deprecating the use of `zfs send -D` and receiving
    of such streams.  This change adds a warning to the man page, and also
    prints the warning whenever dedup send or receive are used.
    
    In a future release, we plan to:
    1. remove the kernel code for generating deduplicated streams
    2. make `zfs send -D` generate regular, non-deduplicated streams
    3. remove the kernel code for receiving deduplicated streams
    4. make `zfs receive` of deduplicated streams process them in userland
       to "re-duplicate" them, so that they can still be received.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#7887 
    Closes openzfs#10117
    ahrens authored Mar 18, 2020
    Configuration menu
    Copy the full SHA
    652bdc9 View commit details
    Browse the repository at this point in the history

Commits on Mar 26, 2020

  1. zfs_get: change time format string from %k to %H

    Issue openzfs#10090 reported that snapshots created between midnight and 1 AM
    are missing a padded zero in the creation property
    
    This change fixes the bug reported in issue openzfs#10090 where snapshots
    created between midnight and 1 AM were missing a padded zero in the
    creation timestamp output.
    
    The leading zero was missing because the time format string used `%k`
    which formats the hour as a decimal number from 0 to 23 where single
    digits are preceded by blanks[0] and is fixed by changing it to `%H`
    which formats the hour as 00-23.
    
    The difference in output is as below
    
    ```
    -Thu Mar 26  0:39 2020
    +Thu Mar 26 00:39 2020
    ```
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Alex John <alex@stty.io>
    Closes openzfs#10090 
    Closes openzfs#10153
    spaghetti- authored Mar 26, 2020
    Configuration menu
    Copy the full SHA
    1d2ddb9 View commit details
    Browse the repository at this point in the history
  2. Remove checks for null out value in encryption paths

    These paths are never exercised, as the parameters given are always
    different cipher and plaintext `crypto_data_t` pointers.
    
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Attila Fueloep <attila@fueloep.org>
    Signed-off-by: Dirkjan Bussink <d.bussink@gmail.com>
    Closes openzfs#9661 
    Closes openzfs#10015
    dbussink authored Mar 26, 2020
    Configuration menu
    Copy the full SHA
    112c1bf View commit details
    Browse the repository at this point in the history
  3. ZTS: Wait for free space between quota tests

    And in removal tests, sync the specific pool we are waiting on.
    
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10146
    Ryan Moeller authored Mar 26, 2020
    Configuration menu
    Copy the full SHA
    ef3331e View commit details
    Browse the repository at this point in the history

Commits on Mar 27, 2020

  1. Compile cityhash code into libzfs

    Make the cityhash code compile into libzfs, in preparation for the new
    "zstream" command.
    
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10152
    ahrens authored Mar 27, 2020
    Configuration menu
    Copy the full SHA
    3f38797 View commit details
    Browse the repository at this point in the history
  2. Let default arc_c_max be platform dependent

    Linux changed the default max ARC size to 1/2 of physical memory to
    deal with shortcomings of the Linux SLUB allocator.  Other platforms
    do not require the same logic.
    
    Implement an arc_default_max() function to determine a default max ARC
    size in platform code.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10155
    Ryan Moeller authored Mar 27, 2020
    Configuration menu
    Copy the full SHA
    9a51738 View commit details
    Browse the repository at this point in the history

Commits on Mar 31, 2020

  1. ZTS: Skip udev actions in zvol_misc when not Linux

    udev is only used on Linux.
    
    Skip udev_wait and udev_cleanup when not on Linux.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
    Closes openzfs#10165
    Ryan Moeller authored Mar 31, 2020
    Configuration menu
    Copy the full SHA
    c96a32e View commit details
    Browse the repository at this point in the history
  2. Reset l2ad_hand and l2ad_first in l2arc_evict

    Increasing l2arc_write_size or l2arc_write_boost can result in
    l2arc_write_buffers() not having enough space to perform its writes and
    panic zio_write_phys().
    
    Instead of resetting l2ad_hand to l2ad_start at the end of
    l2arc_write_buffers() and not taking into account a possible
    user-mediated increase of l2arc_write_max, we do this in l2arc_evict(),
    right after l2arc_write_size() has run. If there is not enough space to
    evict (ie we will exceed l2ad_end) we evict to the end of the device,
    reset l2ad_hand to l2ad_start, set l2ad_first to 0 and iterate
    l2arc_evict(). We avoid infinite iteration of l2arc_evict() by making
    sure in l2arc_write_size() that l2ad_start + size does not exceed
    l2ad_end.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@iXsystems.com>
    Signed-off-by: George Amanakis <gamanakis@gmail.com>
    Closes openzfs#10154
    gamanakis authored Mar 31, 2020
    Configuration menu
    Copy the full SHA
    37c2294 View commit details
    Browse the repository at this point in the history
  3. Improve ZVOL sync write performance by using a taskq

    == Summary ==
    
    Prior to this change, sync writes to a zvol are processed serially.
    This commit makes zvols process concurrently outstanding sync writes in
    parallel, similar to how reads and async writes are already handled.
    The result is that the throughput of sync writes is tripled.
    
    == Background ==
    
    When a write comes in for a zvol (e.g. over iscsi), it is processed by
    calling `zvol_request()` to initiate the operation.  ZFS is expected to
    later call `BIO_END_IO()` when the operation completes (possibly from a
    different thread).  There are a limited number of threads that are
    available to call `zvol_request()` - one one per iscsi client (unless
    using MC/S).  Therefore, to ensure good performance, the latency of
    `zvol_request()` is important, so that many i/o operations to the zvol
    can be processed concurrently.  In other words, if the client has
    multiple outstanding requests to the zvol, the zvol should have multiple
    outstanding requests to the storage hardware (i.e. issue multiple
    concurrent `zio_t`'s).
    
    For reads, and async writes (i.e. writes which can be acknowledged
    before the data reaches stable storage), `zvol_request()` achieves low
    latency by dispatching the bulk of the work (including waiting for i/o
    to disk) to a taskq.  The taskq callback (`zvol_read()` or
    `zvol_write()`) blocks while waiting for the i/o to disk to complete.
    The `zvol_taskq` has 32 threads (by default), so we can have up to 32
    concurrent i/os to disk in service of requests to zvols.
    
    However, for sync writes (i.e. writes which must be persisted to stable
    storage before they can be acknowledged, by calling `zil_commit()`),
    `zvol_request()` does not use `zvol_taskq`.  Instead it blocks while
    waiting for the ZIL write to disk to complete.  This has the effect of
    serializing sync writes to each zvol.  In other words, each zvol will
    only process one sync write at a time, waiting for it to be written to
    the ZIL before accepting the next request.
    
    The same issue applies to FLUSH operations, for which `zvol_request()`
    calls `zil_commit()` directly.
    
    == Description of change ==
    
    This commit changes `zvol_request()` to use
    `taskq_dispatch_ent(zvol_taskq)` for sync writes, and FLUSh operations.
    Therefore we can have up to 32 threads (the taskq threads)
    simultaneously calling `zil_commit()`, for a theoretical performance
    improvement of up to 32x.
    
    To avoid the locking issue described in the comment (which this commit
    removes), we acquire the rangelock from the taskq callback (e.g.
    `zvol_write()`) rather than from `zvol_request()`.  This applies to all
    writes (sync and async), reads, and discard operations.  This means that
    multiple simultaneously-outstanding i/o's which access the same block
    can complete in any order.  This was previously thought to be incorrect,
    but a review of the block device interface requirements revealed that
    this is fine - the order is inherently not defined.  The shorter hold
    time of the rangelock should also have a slight performance improvement.
    
    For an additional slight performance improvement, we use
    `taskq_dispatch_ent()` instead of `taskq_dispatch()`, which avoids a
    `kmem_alloc()` and eliminates a failure mode.  This applies to all
    writes (sync and async), reads, and discard operations.
    
    == Performance results ==
    
    We used a zvol as an iscsi target (server) for a Windows initiator
    (client), with a single connection (the default - i.e. not MC/S).
    
    We used `diskspd` to generate a workload with 4 threads, doing 1MB
    writes to random offsets in the zvol.  Without this change we get
    231MB/s, and with the change we get 728MB/s, which is 3.15x the original
    performance.
    
    We ran a real-world workload, restoring a MSSQL database, and saw
    throughput 2.5x the original.
    
    We saw more modest performance wins (typically 1.5x-2x) when using MC/S
    with 4 connections, and with different number of client threads (1, 8,
    32).
    
    Reviewed-by: Tony Nguyen <tony.nguyen@delphix.com>
    Reviewed-by: Pavel Zakharov <pavel.zakharov@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Matthew Ahrens <mahrens@delphix.com>
    Closes openzfs#10163
    ahrens authored Mar 31, 2020
    Configuration menu
    Copy the full SHA
    0929c4d View commit details
    Browse the repository at this point in the history

Commits on Apr 1, 2020

  1. Bugfix/fix uio partial copies

    In zfs_write(), the loop continues to the next iteration without
    accounting for partial copies occurring in uiomove_iov when 
    copy_from_user/__copy_from_user_inatomic return a non-zero status.
    This results in "zfs: accessing past end of object..." in the 
    kernel log, and the write failing.
    
    Account for partial copies and update uio struct before returning
    EFAULT, leave a comment explaining the reason why this is done.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: ilbsmart <wgqimut@gmail.com>
    Signed-off-by: Fabio Scaccabarozzi <fsvm88@gmail.com>
    Closes openzfs#8673 
    Closes openzfs#10148
    fsvm88 authored Apr 1, 2020
    Configuration menu
    Copy the full SHA
    c9e3efd View commit details
    Browse the repository at this point in the history
  2. Add 'zfs wait' command

    Add a mechanism to wait for delete queue to drain.
    
    When doing redacted send/recv, many workflows involve deleting files 
    that contain sensitive data. Because of the way zfs handles file 
    deletions, snapshots taken quickly after a rm operation can sometimes 
    still contain the file in question, especially if the file is very 
    large. This can result in issues for redacted send/recv users who 
    expect the deleted files to be redacted in the send streams, and not 
    appear in their clones.
    
    This change duplicates much of the zpool wait related logic into a 
    zfs wait command, which can be used to wait until the internal
    deleteq has been drained.  Additional wait activities may be added 
    in the future. 
    
    Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: John Gallagher <john.gallagher@delphix.com>
    Signed-off-by: Paul Dagnelie <pcd@delphix.com>
    Closes openzfs#9707
    pcd1193182 authored Apr 1, 2020
    Configuration menu
    Copy the full SHA
    5a42ef0 View commit details
    Browse the repository at this point in the history

Commits on Apr 3, 2020

  1. Configuration menu
    Copy the full SHA
    b338c49 View commit details
    Browse the repository at this point in the history

Commits on Apr 4, 2020

  1. Configuration menu
    Copy the full SHA
    9019106 View commit details
    Browse the repository at this point in the history