Commits on May 23, 2019

  1. kernel timer API rework

    In `config/kernel-timer.m4` refactor slightly to check more generally
    for the new `timer_setup()` APIs, but also check the callback signature
    because some kernels (notably 4.14) have the new `timer_setup()` API but
    use the old callback signature. Also add a check for a `flags` member in
    `struct timer_list`, which was added in 4.1-rc8.
    
    Add compatibility shims to `include/spl/sys/timer.h` to allow using the
    new timer APIs with the only two caveats being that the callback
    argument type must be declared as `spl_timer_list_t` and an explicit
    assignment is required to get the timer variable for the `timer_of()`
    macro. So the callback would look like this:
    
    ```c
    __cv_wakeup(spl_timer_list_t t)
    {
            struct timer_list *tmr = (struct timer_list *)t;
    	struct thing *parent = from_timer(parent, tmr,
    		parent_timer_field);
    	... /* do stuff with parent */
    ```
    
    Make some minor changes to `spl-condvar.c` and `spl-taskq.c` to use the
    new timer APIs instead of conditional code.
    
    Reviewed-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Rafael Kitover <rkitover@gmail.com>
    Closes #8647
    rkitover authored and behlendorf committed May 23, 2019
    Configuration menu
    Copy the full SHA
    8b8b44d View commit details
    Browse the repository at this point in the history
  2. Rename reservation tests from *.sh to *.ksh

    Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Igor Kozhukhov <igor@dilos.org>
    Closes #8729
    ikozhukhov authored and behlendorf committed May 23, 2019
    Configuration menu
    Copy the full SHA
    2d0077d View commit details
    Browse the repository at this point in the history

Commits on May 24, 2019

  1. Fix coverity defects: CID 186143

    CID 186143: Memory - illegal accesses (USE_AFTER_FREE)
    
    This patch fixes an use-after-free in spa_import_progress_destroy()
    moving the kmem_free() call at the end of the function.
    
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8788
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    75c09c5 View commit details
    Browse the repository at this point in the history
  2. zpool: trim -p is not a valid option

    This commit removes the documented but not handled "-p" option from
    zpool(8) help message.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8781
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    e55db32 View commit details
    Browse the repository at this point in the history
  3. Device removal panics on 32-bit systems

    The issue is caused by an incorrect usage of the sizeof() operator
    in vdev_obsolete_sm_object(): on 64-bit systems this is not an issue
    since both "uint64_t" and "uint64_t*" are 8 bytes in size. However on
    32-bit systems pointers are 4 bytes long which is not supported by
    zap_lookup_impl(). Trying to remove a top-level vdev on a 32-bit system
    will cause the following failure:
    
    VERIFY3(0 == vdev_obsolete_sm_object(vd, &obsolete_sm_object)) failed (0 == 22)
    PANIC at vdev_indirect.c:833:vdev_indirect_sync_obsolete()
    Showing stack for process 1315
    CPU: 6 PID: 1315 Comm: txg_sync Tainted: P           OE   4.4.69+ #2
    Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-2.fc27 04/01/2014
     c1abc6e7 0ae10898 00000286 d4ac3bc0 c14397bc da4cd7d8 d4ac3bf0 d4ac3bd0
     d790e7ce d7911cc1 00000523 d4ac3d00 d790e7d7 d7911ce4 da4cd7d8 00000341
     da4ce664 da4cd8c0 da33fa6e 49524556 28335946 3d3d2030 65647620 626f5f76
    Call Trace:
     [<>] dump_stack+0x58/0x7c
     [<>] spl_dumpstack+0x23/0x27 [spl]
     [<>] spl_panic.cold.0+0x5/0x41 [spl]
     [<>] ? dbuf_rele+0x3e/0x90 [zfs]
     [<>] ? zap_lookup_norm+0xbe/0xe0 [zfs]
     [<>] ? zap_lookup+0x57/0x70 [zfs]
     [<>] ? vdev_obsolete_sm_object+0x102/0x12b [zfs]
     [<>] vdev_indirect_sync_obsolete+0x3e1/0x64d [zfs]
     [<>] ? txg_verify+0x1d/0x160 [zfs]
     [<>] ? dmu_tx_create_dd+0x80/0xc0 [zfs]
     [<>] vdev_sync+0xbf/0x550 [zfs]
     [<>] ? mutex_lock+0x10/0x30
     [<>] ? txg_list_remove+0x9f/0x1a0 [zfs]
     [<>] ? zap_contains+0x4d/0x70 [zfs]
     [<>] spa_sync+0x9f1/0x1b10 [zfs]
     ...
     [<>] ? kthread_stop+0x110/0x110
    
    This commit simply corrects the "integer_size" parameter used to lookup
    the vdev's ZAP object.
    
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8790
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    2e8c315 View commit details
    Browse the repository at this point in the history
  4. Linux 2.6.39 compat: Test if kstrtoul() exists

    kstrtoul() exists only after torvalds/linux@33ee3b2e2eb9 in 2.6.39.
    Use strict_strtoul() if kstrtoul() doesn't exist.
    Note that strict_strtoul() has existed as an alias for kstrtoul()
    for a while, but removed in torvalds/linux@3db2e9cdc085.
    
    It looks like RHEL6 (2.6.32 based) has backported kstrtoul(),
    and this caused build CI to pass compilation test.
    It should fail on vanilla < 2.6.39 kernels or distro kernels without
    backport as reported in #8760.
    
    --
     # grep "kstrtoul(" /lib/modules/2.6.32-754.12.1.el6.x86_64/build/ \
     include/linux/kernel.h >/dev/null
     # echo $?
     0
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
    Closes #8760 
    Closes #8761
    kusumi authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    8708fd8 View commit details
    Browse the repository at this point in the history
  5. Fix ksh-path for random_readwrite_fixed.ksh

    The test in zfs-tests/tests/perf/regression/random_readwrite_fixed.ksh
    is the only file to use /usr/bin/ksh in the shebang.
    Change it to /bin/ksh for consistency.
    
    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
    Closes #8779
    siv0 authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    0ff5cd0 View commit details
    Browse the repository at this point in the history
  6. zfs: missing newline character in zfs_do_channel_program() error message

    This commit simply adds a missing newline ("\n") character to the error
    message printed by the zfs command when the provided pool parameter
    can't be found.
    
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8783
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    62b2152 View commit details
    Browse the repository at this point in the history
  7. zfs: don't pretty-print objsetid property

    The objsetid property, while being stored as a number, is a dataset
    identifier and should not be pretty-printed.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8784
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    b868525 View commit details
    Browse the repository at this point in the history
  8. zfs-tests: verify zfs(8) and zpool(8) help message is under 80 columns

    This commit updates the ZFS Test Suite to detect incorrect wrapping of
    both zfs(8) and zpool(8) help message
    
    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: loli10K <ezomori.nozomu@gmail.com>
    Closes #8785
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    2696e86 View commit details
    Browse the repository at this point in the history
  9. VERIFY3P() message is missing a space character

    This commit just reintroduces a [space] character inadvertently removed
    in a887d65.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8786
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    d28b492 View commit details
    Browse the repository at this point in the history
  10. zfs-tests: fix warnings when packaging some .shlib files

    This change prevents the following warning when packaging some zfs-tests
    files:
    
       *** WARNING: ./usr/src/zfs-0.8.0/tests/zfs-tests/include/zpool_script.shlib
       is executable but has empty or no shebang, removing executable bit
    
    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8787
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    fe60953 View commit details
    Browse the repository at this point in the history
  11. zpool: status -t is not documented in help message

    This commit adds the undocumented "-t" option to zpool(8) help message.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8782
    loli10K authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    4397794 View commit details
    Browse the repository at this point in the history
  12. Drop local definition of MOUNT_BUSY

    It's accessible via <sys/mntent.h>.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tom Caputi <tcaputi@datto.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8765
    kusumi authored and behlendorf committed May 24, 2019
    Configuration menu
    Copy the full SHA
    c3e5907 View commit details
    Browse the repository at this point in the history

Commits on May 25, 2019

  1. Linux 5.2 compat: Remove config/kernel-set-fs-pwd.m4

    This failed on 5.2-rc1 with "error: unknown" message, for set_fs_pwd()
    not being visible in both const and non-const tests.
    
    This is caused by torvalds/linux@83da1bed86. It's configurable,
    but we would want to be able to compile with default kbuild setting.
    
    set_fs_pwd() has never been exported with exception of some distro
    kernels, and set_fs_pwd() wasn't used in ZoL to begin with. The test
    result was used for a spl function vn_set_fs_pwd().
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8777
    kusumi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    4bb17eb View commit details
    Browse the repository at this point in the history
  2. Linux 5.2 compat: Fix config/kernel-shrink.m4 test failure

    "whether ->count_objects callback exists" test failed with
    "error: error" message for using an incomplete function shrinker_cb().
    
    This is caused by torvalds/linux@83da1bed86. It's configurable,
    but we would want to be able to compile with default kbuild setting.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8776
    kusumi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    36c110f View commit details
    Browse the repository at this point in the history
  3. Linux 5.2 compat: Directly call wait_on_page_bit()

    wait_on_page_writeback() was made GPL only in torvalds/linux@19343b5bdd.
    
    Directly call wait_on_page_bit() without using wait_on_page_writeback()
    interface, given zfs_putpage() is the only caller for now.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8794
    kusumi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    bfd5a70 View commit details
    Browse the repository at this point in the history
  4. Disable parallel processing for 'zfs mount -l'

    Currently, 'zfs mount -a' will always attempt to parallelize
    work related to mounting as best it can. Unfortunately, when
    the user passes the '-l' option to load keys, this causes
    all threads to prompt the user for their keys at once,
    resulting in a confusing and racy user experience. This patch
    simply disables parallel mounting when using the '-l' flag.
    
    Reviewed by: Sebastien Roy <sebastien.roy@delphix.com>
    Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes #8762 
    Closes #8811
    Tom Caputi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    8e3c3ed View commit details
    Browse the repository at this point in the history
  5. Fix embedded bp accounting in count_block()

    Currently, count_block() does not correctly account for the
    possibility that the bp that is passed to it could be embedded.
    These blocks shouldn't be counted since the work of scanning
    these blocks in already handled when the containing block is
    scanned. This patch simply resolves this issue by returning
    early in this case.
    
    Reviewed by: Allan Jude <allanjude@freebsd.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Authored-by: Bill Sommerfeld <sommerfeld@alum.mit.edu>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes #8800 
    Closes #8766
    Tom Caputi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    3b61ca3 View commit details
    Browse the repository at this point in the history
  6. Update descriptions for vnops

    These descriptions are not uptodate with the code.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
    Closes #8767
    kusumi authored and behlendorf committed May 25, 2019
    Configuration menu
    Copy the full SHA
    841a7a9 View commit details
    Browse the repository at this point in the history

Commits on May 28, 2019

  1. Endless loop in zpool_do_remove() on platforms with unsigned char

    On systems where "char" is an unsigned type the value returned by
    getopt() will never be negative (-1), leading to an endless loop:
    this issue prevents both 'zpool remove' and 'zstreamdump' for
    working on some systems.
    
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8789
    loli10K authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    0869b74 View commit details
    Browse the repository at this point in the history
  2. test-runner.py: change shebang to python3

    In commit 6e72a5b python scripts which
    work with python2 and python3 changed the shebang from /usr/bin/python
    to /usr/bin/python3. This gets adapted by the build-system on systems
    which don't provide python3.
    This commit changes test-runner.py to also use /usr/bin/python3,
    enabling the change during buildtime and fixing a minor lintian issue
    for those Debian packages, which depend on a specific python version
    (python3/python2).
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
    Closes #8803
    Stoiko Ivanov authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    3ba8cd6 View commit details
    Browse the repository at this point in the history
  3. tests: fix cosmetic permission issues during make install

    files in dist_*_SCRIPTS get installed with 0755, those in dist_*_DATA
    with 0644. This commit moves all .kshlib, .shlib and .cfg files in the
    testsuite to dist_pkgdata_DATA, and removes the shebang from
    zpool_import.kshlib.
    
    This ensures that the files are installed with appropriate permissions
    and silences some warnings from lintian
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: loli10K <ezomori.nozomu@gmail.com>
    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
    Closes #8803
    Stoiko Ivanov authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    10e1a01 View commit details
    Browse the repository at this point in the history
  4. Update comments to match code

    s/get_vdev_spec/make_root_vdev
    
    The former doesn't exist anymore.
    
    Sponsored by: iXsystems, Inc.
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tom Caputi <tcaputi@datto.com>
    Signed-off-by: Ryan Moeller <ryan@freqlabs.com>
    Closes #8759
    Ryan Moeller authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    227d379 View commit details
    Browse the repository at this point in the history
  5. Double-free of encryption wrapping key due to invalid pool properties

    This commits fixes a double-free in zfs_ioc_pool_create() triggered by
    specifying an unsupported combination of properties when creating a pool
    with encryption enabled.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tom Caputi <tcaputi@datto.com>
    Signed-off-by: loli10K <ezomori.nozomu@gmail.com>
    Closes #8791
    loli10K authored and behlendorf committed May 28, 2019
    1 Configuration menu
    Copy the full SHA
    ab1a970 View commit details
    Browse the repository at this point in the history
  6. Refactor parent dataset handling in libzfs zfs_rename()

    For recursive renaming, simplify the code by moving `zhrp` and
    `parentname` to inner scope. `zhrp` is only used to test existence
    of a parent dataset for recursive dataset dir scan since ba6a240.
    
    Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8815
    kusumi authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    5691b86 View commit details
    Browse the repository at this point in the history
  7. grammar: it is / plural agreement

    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: Josh Soref <jsoref@users.noreply.github.com>
    Closes #8818
    jsoref authored and behlendorf committed May 28, 2019
    Configuration menu
    Copy the full SHA
    46df7e6 View commit details
    Browse the repository at this point in the history

Commits on May 29, 2019

  1. Fix integer overflow in get_next_chunk()

    dn->dn_datablksz type is uint32_t and need to be casted to uint64_t
    to avoid an overflow when the record size is greater than 4 MiB.
    
    Reviewed-by: Tom Caputi <tcaputi@datto.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Olivier Mazouffre <olivier.mazouffre@ims-bordeaux.fr>
    Closes #8778 
    Closes #8797
    mazouffre authored and behlendorf committed May 29, 2019
    Configuration menu
    Copy the full SHA
    ec4afd2 View commit details
    Browse the repository at this point in the history
  2. Exclude log device ashift from normal class

    When opening a log device during import its allocation bias will
    not yet have been set by vdev_load().  This results in the log
    device's ashift being incorrectly applied to the maximum ashift
    of the vdevs in the normal class.  Which in turn prevents the
    removal of any top-level devices due to the ashift check in the
    spa_vdev_remove_top_check() function.
    
    This issue is resolved by including vdev_islog in the check since
    it will be set correctly during vdev_open().
    
    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes #8735
    behlendorf committed May 29, 2019
    Configuration menu
    Copy the full SHA
    1e724f4 View commit details
    Browse the repository at this point in the history
  3. Remove vn_set_fs_pwd()/vn_set_pwd() (no need to be at / during insmod)

    Per suggestion from @behlendorf in #8777, remove vn_set_fs_pwd() and
    vn_set_pwd() which are only used in zfs_ioctl.c:_init() while loading
    zfs.ko.
    
    The rest of initialization functions being called here after cwd set
    to / don't depend on cwd of the process except for spa_config_load().
    spa_config_load() uses a relative path ".//etc/zfs/zpool.cache" when
    `rootdir` is non-NULL, which is "/etc/zfs/zpool.cache" given cwd is /,
    so just unconditionally use the absolute path without "./", so that
    `vn_set_pwd("/")` as well as the entire functions can be removed.
    This is also what FreeBSD does.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8826
    kusumi authored and behlendorf committed May 29, 2019
    Configuration menu
    Copy the full SHA
    fe0c9f4 View commit details
    Browse the repository at this point in the history
  4. Add link count test for root inode

    Add tests for
    97aa3ba("Fix link count of root inode when snapdir is visible")
    as suggested in #8727.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8732
    kusumi authored and behlendorf committed May 29, 2019
    Configuration menu
    Copy the full SHA
    1608985 View commit details
    Browse the repository at this point in the history

Commits on May 31, 2019

  1. Revert "Report holes when there are only metadata changes"

    This reverts commit ec4f9b8 which introduced a narrow race which
    can lead to lseek(, SEEK_DATA) incorrectly returning ENXIO.  Resolve
    the issue by revering this change to restore the previous behavior
    which depends solely on checking the dirty list.
    
    Reviewed-by: Olaf Faaland <faaland1@llnl.gov>
    Reviewed-by: Igor Kozhukhov <igor@dilos.org>
    Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Closes #8816 
    Closes #8834
    behlendorf committed May 31, 2019
    Configuration menu
    Copy the full SHA
    2531ce3 View commit details
    Browse the repository at this point in the history

Commits on Jun 3, 2019

  1. Make zfs_async_block_max_blocks handle zero correctly

    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: TulsiJain <tulsi.jain@delphix.com>
    Closes #8829
    Closes #8289
    TulsiJain authored and behlendorf committed Jun 3, 2019
    Configuration menu
    Copy the full SHA
    a3c98d5 View commit details
    Browse the repository at this point in the history

Commits on Jun 4, 2019

  1. Wait in 'S' state when send/recv pipe is blocking

    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: DHE <git@dehacked.net>
    Closes #8733 
    Closes #8752
    DeHackEd authored and behlendorf committed Jun 4, 2019
    Configuration menu
    Copy the full SHA
    df24bcf View commit details
    Browse the repository at this point in the history

Commits on Jun 5, 2019

  1. Make Python detection optional and more portable

    Previously, --without-python would cause ./configure to fail. Now it is
    able to proceed, and the Python scripts will not be built.
    
    Use portable parameter expansion matching instead of nonstandard
    substring matching to detect the Python version.  This test is
    duplicated in several places, so define a function for it.
    
    Don't assume the full path to binaries, since different platforms do
    install things in different places.  Use AC_CHECK_PROGS instead.
    
    When building without Python, also build without pyzfs.
    
    Sponsored by: iXsystems, Inc.
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Reviewed-by: Eli Schwartz <eschwartz93@gmail.com>
    Signed-off-by: Ryan Moeller <ryan@freqlabs.com>
    Closes #8809 
    Closes #8731
    Ryan Moeller authored and behlendorf committed Jun 5, 2019
    Configuration menu
    Copy the full SHA
    1a132f0 View commit details
    Browse the repository at this point in the history
  2. Allow TRIM_UNUSED_KSYM when build as a builtin-module

    If ZFS is built with enable_linux_builtin, it seems to be possible
    to compile the kernel with TRIM_UNUSED_KSYM.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Torsten Wörtwein <twoertwein@gmail.com>
    Closes #8820
    twoertwein authored and behlendorf committed Jun 5, 2019
    Configuration menu
    Copy the full SHA
    1ec7eda View commit details
    Browse the repository at this point in the history
  3. Fixed a small typo in man/man1/raidz_test.1

    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Signed-off-by: Peter Wirdemo <peter.wirdemo@gmail.com>
    Closes #8855
    pewo authored and behlendorf committed Jun 5, 2019
    Configuration menu
    Copy the full SHA
    2ecc202 View commit details
    Browse the repository at this point in the history
  4. Drop objid argument in zfs_znode_alloc() (sync with OpenZFS)

    Since zfs_znode_alloc() already takes dmu_buf_t*, taking another
    uint64_t argument for objid is redundant. inode's ->i_ino does and
    needs to match znode's ->z_id.
    
    zfs_znode_alloc() in FreeBSD and illumos doesn't have this argument
    since vnode doesn't have vnode# in VFS (hence ->z_id exists).
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Signed-off-by: Tomohiro Kusumi <kusumi.tomohiro@osnexus.com>
    Closes #8841
    kusumi authored and behlendorf committed Jun 5, 2019
    Configuration menu
    Copy the full SHA
    1a68899 View commit details
    Browse the repository at this point in the history
  5. hkdf_test binary should only have one icp instance

    The build for test binary hkdf_test was linking both against libicp 
    and libzpool. This results in two instances of libicp inside the 
    binary but the call to icp_init() only initializes one of them!
    
    Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Signed-off-by: Don Brady <don.brady@delphix.com>
    Closes #8850
    don-brady authored and behlendorf committed Jun 5, 2019
    Configuration menu
    Copy the full SHA
    8e91c5b View commit details
    Browse the repository at this point in the history

Commits on Jun 6, 2019

  1. Fix integer overflow of ZTOI(zp)->i_generation

    The ZFS on-disk format stores each inode's generation ID as a 64
    bit number on disk and in-core. However, the Linux kernel's inode
    is only a 32 bit number. In most places, the code handles this
    correctly, but the cast is missing in zfs_rezget(). For many pools,
    this isn't an issue since the generation ID is computed as the
    current txg when the inode is created and many pools don't have
    more than 2^32 txgs.
    
    For the pools that have more txgs, this issue causes any inode with
    a high enough generation number to report IO errors after a call to
    "zfs rollback" while holding the file or directory open. This patch
    simply adds the missing cast.
    
    Reviewed-by: Alek Pinchuk <apinchuk@datto.com>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes #8858
    Tom Caputi authored and behlendorf committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    3ce85b5 View commit details
    Browse the repository at this point in the history
  2. If $ZFS_BOOTFS contains guid, replace the guid portion with $pool

    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Garrett Fields <ghfields@gmail.com>
    Closes #8356
    ghfields authored and behlendorf committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    627f511 View commit details
    Browse the repository at this point in the history
  3. Reduced IOPS when all vdevs are in the zfs_mg_fragmentation_threshold

    Historically while doing performance testing we've noticed that IOPS
    can be significantly reduced when all vdevs in the pool are hitting
    the zfs_mg_fragmentation_threshold percentage. Specifically in a
    hypothetical pool with two vdevs, what can happen is the following:
    Vdev A would go above that threshold and only vdev B would be used.
    Then vdev B would pass that threshold but vdev A would go below it
    (we've been freeing from A to allocate to B). The allocations would
    go back and forth utilizing one vdev at a time with IOPS taking a hit.
    
    Empirically, we've seen that our vdev selection for allocations is
    good enough that fragmentation increases uniformly across all vdevs
    the majority of the time. Thus we set the threshold percentage high
    enough to avoid hitting the speed bump on pools that are being pushed
    to the edge. We effectively disable its effect in the majority of the
    cases but we don't remove (at least for now) just in case we hit any
    weird behavior in the future.
    
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Signed-off-by: Serapheim Dimitropoulos <serapheim@delphix.com>
    Closes #8859
    sdimitro authored and behlendorf committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    cb020f0 View commit details
    Browse the repository at this point in the history
  4. l2arc_apply_transforms: Fix typo in comment

    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: George Melikov <mail@gmelikov.ru>
    Reviewed-by: Richard Laager <rlaager@wiktel.com>
    Signed-off-by: Allan Jude <allanjude@freebsd.org>
    Closes #8822
    allanjude authored and behlendorf committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    b7109a4 View commit details
    Browse the repository at this point in the history
  5. Reinstate raw receive check when truncating

    This patch re-adds a check that was removed in 369aa50. The check
    confirms that a raw receive is not occuring before truncating an
    object's dn_maxblkid. At the time, it was believed that all cases
    that would hit this code path would be handled in other places,
    but that was not the case.
    
    Reviewed-by: Matt Ahrens <mahrens@delphix.com>
    Reviewed-by: Paul Dagnelie <pcd@delphix.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Tom Caputi <tcaputi@datto.com>
    Closes #8852 
    Closes #8857
    Tom Caputi authored and behlendorf committed Jun 6, 2019
    Configuration menu
    Copy the full SHA
    fd7a657 View commit details
    Browse the repository at this point in the history

Commits on Jun 7, 2019

  1. Avoid updating zfs_gitrev.h when rev is unchanged

    Build process would always re-compile spa_history.c due to touching
    zfs_gitrev.h - avoid if no change in gitrev.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Chris Dunlop <chris@onthe.net.au>
    Reviewed-by: Allan Jude <allanjude@freebsd.org>
    Signed-off-by: Jorgen Lundman <lundman@lundman.net>
    Closes #8860
    lundman authored and behlendorf committed Jun 7, 2019
    Configuration menu
    Copy the full SHA
    876d76b View commit details
    Browse the repository at this point in the history
  2. Allow metaslab to be unloaded even when not freed from

    On large systems, the memory used by loaded metaslabs can become
    a concern. While range trees are a fairly efficient data structure, 
    on heavily fragmented pools they can still consume a significant 
    amount of memory. This problem is amplified when we fail to unload 
    metaslabs that we aren't using. Currently, we only unload a metaslab 
    during metaslab_sync_done; in order for that function to be called 
    on a given metaslab in a given txg, we have to have dirtied that 
    metaslab in that txg. If the dirtying was the result of an allocation, 
    we wouldn't be unloading it (since it wouldn't be 8 txgs since it 
    was selected), so in effect we only unload a metaslab during txgs 
    where it's being freed from.
    
    We move the unload logic from sync_done to a new function, and 
    call that function on all metaslabs in a given vdev during 
    vdev_sync_done().
    
    Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Paul Dagnelie <pcd@delphix.com>
    Closes #8837
    pcd1193182 authored and behlendorf committed Jun 7, 2019
    Configuration menu
    Copy the full SHA
    893a6d6 View commit details
    Browse the repository at this point in the history

Commits on Jun 10, 2019

  1. Fix %post and %postun generation in kmodtool

    During zfs-kmod RPM build, $(uname -r) gets unintentionally evaluated on
    the build host, once and for all. It should be evaluated during the
    execution of the scriptlets on the installation host. Escaping the $
    character avoids evaluating it during build.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Olaf Faaland <faaland1@llnl.gov>
    Reviewed-by: Neal Gompa <ngompa@datto.com>
    Signed-off-by: Samuel Verschelde <stormi-xcp@ylix.fr>
    Closes #8866
    stormi authored and behlendorf committed Jun 10, 2019
    Configuration menu
    Copy the full SHA
    01d1e88 View commit details
    Browse the repository at this point in the history
  2. arc_summary: prefer python3 version and install when there is no python

    This matches the behavior of other python scripts, such as arcstat and
    dbufstat, which are always installed but whose install-exec-hook actions
    will simply touch up the shebang if a python interpreter was configured
    *and* that interpreter is a python2 interpreter.
    
    Fixes installation in a minimal build chroot without python available.
    
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Reviewed-by: Ryan Moeller <ryan@freqlabs.com>
    Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
    Closes #8851
    eli-schwartz authored and behlendorf committed Jun 10, 2019
    Configuration menu
    Copy the full SHA
    215e4fe View commit details
    Browse the repository at this point in the history
  3. Fix logic error in setpartition function

    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Richard Elling <Richard.Elling@RichardElling.com>
    Closes #8839
    richardelling authored and behlendorf committed Jun 10, 2019
    Configuration menu
    Copy the full SHA
    2ff615b View commit details
    Browse the repository at this point in the history
  4. Remove redundant redundant remove

    Reviewed by: John Kennedy <john.kennedy@delphix.com>
    Reviewed-by: Giuseppe Di Natale <guss80@gmail.com>
    Reviewed-by: Tony Hutter <hutter2@llnl.gov>
    Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
    Signed-off-by: Richard Elling <Richard.Elling@RichardElling.com>
    Closes #8839
    richardelling authored and behlendorf committed Jun 10, 2019
    Configuration menu
    Copy the full SHA
    bef70af View commit details
    Browse the repository at this point in the history