- 09 May, 2019 2 commits
-
-
Brian Behlendorf authored
Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov>
-
Olaf Faaland authored
When an import requires a long MMP activity check, or when the user requests pool recovery, the import make take a long time. The user may not know why, or be able to tell whether the import is progressing or is hung. Add a kstat which lists all imports currently being processed by the kernel (currently only one at a time is possible, but the kstat allows for more than one). The kstat is /proc/spl/kstat/zfs/import_progress. The kstat contents are as follows: pool_guid load_state multihost_secs max_txg pool_name 16667015954387398 3 15 0 tank3 load_state: the value of spa_load_state multihost_secs: seconds until the end of the multihost activity check; if over, or none required, this is 0 max_txg: current spa_load_max_txg, if rewind is occurring This could be used by outside tools, such as a pacemaker resource agent, to report import progress, or as a part of manual troubleshooting. The zpool import subcommand could also be modified to report this information. Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Olaf Faaland <faaland1@llnl.gov> Closes #8696
-
- 08 May, 2019 8 commits
-
-
Tomohiro Kusumi authored
These messages will want '\n' like any other regular printk() messages. Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
George Melikov <mail@gmelikov.ru> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@osnexus.com> Closes #8726
-
Alexander Motin authored
The code never returned match comparing two datasets (not snapshots). As result, uu_avl_find(), called from zfs_callback(), never succeeded, allowing to add same dataset into the list multiple times, for example: # zfs get name pers pers pers@z pers@z NAME PROPERTY VALUE SOURCE pers name pers - pers name pers - pers@z name pers@z - With the patch: # zfs get name pers pers pers@z pers@z NAME PROPERTY VALUE SOURCE pers name pers - pers@z name pers@z - Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Igor Kozhukhov <igor@dilos.org> Signed-off-by:
Alexander Motin <mav@FreeBSD.org> Closes #8723
-
Tomohiro Kusumi authored
Given how zfs_getattr() is implemented, zfs_getattr_fast() (used by ->getattr() of zpl inodes) also needs to consider an additional link count if "snapdir" property is set to "visible". Without this, # of directories in root inode of each dataset doesn't match the link count when snapdir is visible. Reviewed-by:
Richard Yao <ryao@gentoo.org> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@osnexus.com> Closes #8727
-
JMoVS authored
Reviewed-by:
Olaf Faaland <faaland1@llnl.gov> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Justin Scholz <git@justinscholz.de> Closes #8712 Closes #8721
-
Richard Laager authored
In adding man-dates.sh, I noticed that zol2zfs-patch.sed was missing, even though zfs2zol-patch.sed was present. Also, the list was not sorted, so I sorted it. Reviewed-by:
Olaf Faaland <faaland1@llnl.gov> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8710
-
Richard Laager authored
Various changes (many by me) have been made to the man pages without bumping their dates. I have now corrected them based on the last commit to each file. I also added the script I used to make these changes. Reviewed-by:
Olaf Faaland <faaland1@llnl.gov> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8710
-
Brian Behlendorf authored
The 5.0 kernel defines the macro ASM_BUG. In order to prevent a conflict and build failure rename ASM_BUG to ZFS_ASM_BUG. This is currently only an issue on aarch64 but all instances of ASM_BUG we're renamed to avoid any future conflict on x86_64. Reviewed-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Chris Dunlop <chris@onthe.net.au> Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov> Closes #8725 Issue #8545
-
Brian Behlendorf authored
Commit 98bb45e2 resolved a deadlock which could occur when handling a page fault in zfs_write(). This change added the uio_fault_disable field to the uio structure but failed to initialize it to B_FALSE. This uninitialized field would cause uiomove_iov() to call __copy_from_user_inatomic() instead of copy_from_user() resulting in unexpected EFAULTs. Resolve the issue by fully initializing the uio, and clearing the uio_fault_disable flags after it's used in zfs_write(). Additionally, reorder the uio_t field assignments to match the order the fields are declared in the structure. Reviewed-by:
Chunwei Chen <tuxoko@gmail.com> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Tim Chase <tim@chase2k.com> Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov> Closes #8640 Closes #8719
-
- 07 May, 2019 6 commits
-
-
DeHackEd authored
Exported and documented a new module parameter. Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
DHE <git@dehacked.net> Closes #8706
-
Brian Behlendorf authored
When receiving a DRR_OBJECT record the receive_object() function needs to determine how to handle a spill block associated with the object. It may need to be removed or kept depending on how the object was modified at the source. This determination is currently accomplished using a heuristic which takes in to account the DRR_OBJECT record and the existing object properties. This is a problem because there isn't quite enough information available to do the right thing under all circumstances. For example, when only the block size changes the spill block is removed when it should be kept. What's needed to resolve this is an additional flag in the DRR_OBJECT which indicates if the object being received references a spill block. The DRR_OBJECT_SPILL flag was added for this purpose. When set then the object references a spill block and it must be kept. Either it is update to date, or it will be replaced by a subsequent DRR_SPILL record. Conversely, if the object being received doesn't reference a spill block then any existing spill block should always be removed. Since previous versions of ZFS do not understand this new flag additional DRR_SPILL records will be inserted in to the stream. This has the advantage of being fully backward compatible. Existing ZFS systems receiving this stream will recreate the spill block if it was incorrectly removed. Updated ZFS versions will correctly ignore the additional spill blocks which can be identified by checking for the DRR_SPILL_UNMODIFIED flag. The small downside to this approach is that is may increase the size of the stream and of the received snapshot on previous versions of ZFS. Additionally, when receiving streams generated by previous unpatched versions of ZFS spill blocks may still be lost. OpenZFS-issue: https://www.illumos.org/issues/9952 FreeBSD-issue: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=233277 Reviewed-by:
Paul Dagnelie <pcd@delphix.com> Reviewed-by:
Matt Ahrens <mahrens@delphix.com> Reviewed-by:
Tom Caputi <tcaputi@datto.com> Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov> Closes #8668
-
Tomohiro Kusumi authored
`zfs set atime|relatime=off|on` doesn't disable or enable the property on read for datasets whose property was inherited from parent, until a dataset is once unmounted and mounted again. (The properties start to work properly if a dataset is once unmounted and mounted again. The difference comes from regular mount process, e.g. via zpool import, uses mount options based on properties read from ondisk layout for each dataset, whereas `zfs set atime|relatime=off|on` just remounts a specified dataset.) -- # zpool create p1 <device> # zfs create p1/f1 # zfs set atime=off p1 # echo test > /p1/f1/test # sync # zfs list NAME USED AVAIL REFER MOUNTPOINT p1 176K 18.9G 25.5K /p1 p1/f1 26K 18.9G 26K /p1/f1 # zfs get atime NAME PROPERTY VALUE SOURCE p1 atime off local p1/f1 atime off inherited from p1 # stat /p1/f1/test | grep Access | tail -1 Access: 2019-04-26 23:32:33.741205192 +0900 # cat /p1/f1/test test # stat /p1/f1/test | grep Access | tail -1 Access: 2019-04-26 23:32:50.173231861 +0900 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ changed by read(2) -- The problem is that zfsvfs::z_atime which was probably intended to keep incore atime state just gets updated by a callback function of "atime" property change, atime_changed_cb(), and never used for anything else. Since now that all file read and atime update use a common function zpl_iter_read_common() -> file_accessed(), and whether to update atime via ->dirty_inode() is determined by atime_needs_update(), atime_needs_update() needs to return false once atime is turned off. It currently continues to return true on `zfs set atime=off`. Fix atime_changed_cb() by setting or dropping SB_NOATIME in VFS super block depending on a new atime value, so that atime_needs_update() works as expected after property change. The same problem applies to "relatime" except that a self contained relatime test is needed. This is because relatime_need_update() is based on a mount option flag MNT_RELATIME, which doesn't exist in datasets with inherited "relatime" property via `zfs set relatime=...`, hence it needs its own relatime test zfs_relatime_need_update(). Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8674 Closes #8675
-
Tomohiro Kusumi authored
Linux kernel commit 54d50897d544c874562253e2a8f70dfcad22afe8 "linux/kernel.h: split *_MAX and *_MIN macros into <linux/limits.h>" which first appeared in 5.1 has moved several macros from <linux/kernel.h> to <linux/limits.h>. This broke compilation due to header inclusion order against the local header include/spl/sys/types.h which also defines ULLONG_MAX and LLONG_MAX if undefined. It looks like local ULLONG_MAX and LLONG_MAX were never needed (or after spl integration ?) as <linux/kernel.h> has had the same definitions since an upstream commit 111ebb6e6f7bd7de6d722c5848e95621f43700d9 in 2.6.18, so drop them. -- linux/include/linux/limits.h:17: error: "LLONG_MAX" redefined [-Werror] #define LLONG_MAX ((long long)(~0ULL >> 1)) zfs/include/spl/sys/types.h:35: note: this is the location of the previous definition #define LLONG_MAX ((long long)(~0ULL>>1)) Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8714
-
Richard Laager authored
This standardizes the language on "deduplication tables" rather than "dedup data" (which might be read as the data blocks rather than the DDT). Likewise, it standardizes on "small file blocks". It also standardizes on "normal" rather than using both "normal" and "general" in the same paragraph. I also replaced "non-specified" with the more explicit "non-dedup/special". Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8713
-
Antonio Russo authored
Alternative implementation of @rlaager's original modification of zfs-mount-generator fix, with @chrisrd's comments. Set IFS to be only the tab character, matching our `-H` call in `zfs list`, allowing spaces to appear in dataset names (and mountpoints). Also adds comments explaining our rationale. Reviewed-by:
Chris Dunlop <chris@onthe.net.au> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
George Melikov <mail@gmelikov.ru> Signed-off-by:
Antonio Russo <antonio.e.russo@gmail.com> Closes #8708 Closes #8718
-
- 06 May, 2019 1 commit
-
-
Richard Laager authored
Authored by: Jason King <jason.king@joyent.com> Reviewed by: Toomas Soome <tsoome@me.com> Reviewed by: Andy Fiddaman <andy@omniosce.org> Reviewed by: Peter Tribble <peter.tribble@gmail.com> Reviewed by: Gergő Mihály Doma <domag02@gmail.com> Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Approved by: Dan McDonald <danmcd@joyent.com> Ported-by:
Richard Laager <rlaager@wiktel.com> OpenZFS-issue: https://www.illumos.org/issues/10473 OpenZFS-commit: https://github.com/illumos/illumos-gate/commit/736e67003 Closes #8711
-
- 05 May, 2019 1 commit
-
-
Tomohiro Kusumi authored
Drop duplicated phrases in comments. Also drop an obsolete comment "Perform a mount of the associated...", as all it does now is get objid from DMU and lookup incore inode. Reviewed-by:
Giuseppe Di Natale <guss80@gmail.com> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8707
-
- 04 May, 2019 2 commits
-
-
Tomohiro Kusumi authored
Linux kernel commit ca79b0c211af63fa3276f0e3fd7dd9ada2439839 "mm: convert totalram_pages and totalhigh_pages variables to atomic" replaced `totalhigh_pages` with an inline function `totalhigh_pages()`. This broke compilation on IA32, etc, as ZoL uses `totalhigh_pages` on archs with highmem. Confirmed on Fedora 30 (5.0.9-301.fc30.i686). Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8677 Closes #8701
-
John Gallagher authored
The kernel function which adds new zvols as disks to the system, add_disk(), briefly opens and closes the zvol as part of its work. Closing a zvol involves waiting for two txgs to sync. This, combined with the fact that the taskq processing new zvols is single threaded, makes this processing new zvols slow. Waiting for these txgs to sync is only necessary if the zvol has been written to, which is not the case during add_disk(). This change adds tracking of whether a zvol has been written to so that we can skip the txg_wait_synced() calls when they are unnecessary. This change also fixes the flags passed to blkdev_get_by_path() by vdev_disk_open() to be FMODE_READ | FMODE_WRITE | FMODE_EXCL instead of just FMODE_EXCL. The flags were being incorrectly calculated because we were using the wrong version of vdev_bdev_mode(). Reviewed-by:
George Wilson <george.wilson@delphix.com> Reviewed-by:
Serapheim Dimitropoulos <serapheim@delphix.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
John Gallagher <john.gallagher@delphix.com> Closes #8526 Closes #8615
-
- 02 May, 2019 5 commits
-
-
JMoVS authored
Users of existing pools, especially pools with top-level encrypted datasets, could run into trouble trying to work around Errata #4. Clarify that removing encrypted snapshots and bookmarks is enough to clear the errata. Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Tom Caputi <tcaputi@datto.com> Signed-off-by:
Justin Scholz <git@justinscholz.de> Closes #8682 Closes #8683
-
Matthew Ahrens authored
The comment in lz4_compress_zfs could be more clear and specific. It also contains needlessly strong language. Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Serapheim Dimitropoulos <serapheim@delphix.com> Signed-off-by:
Matthew Ahrens <mahrens@delphix.com> Closes: #8702 Closes: #8703
-
Tom Caputi authored
The 'zpool resilver' command requires that the resilver_defer feature is active on the pool. Unfortunately, the check for this was left out of the original patch. This commit simply corrects this so that the command properly returns an error in this case. Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Igor Kozhukhov <igor@dilos.org> Signed-off-by:
Tom Caputi <tcaputi@datto.com> Closes #8700
-
Tom Caputi authored
Currently, it is possible for the 'zpool scrub' command to progress slightly beyond 100% due to concurrent changes happening on the live pool. This behavior is expected, but the userspace code for 'zpool status' would subtract the expected amount of data from the amount of data already scrubbed, resulting in a negative integer being casted to a large positive one. This number was then used to calculate the estimated completion time, resulting in wildly wrong results. This code changes the behavior so that 'zpool status' does not attempt to report an estimate during this period. Reviewed by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Igor Kozhukhov <igor@dilos.org> Reviewed-by:
George Melikov <mail@gmelikov.ru> Signed-off-by:
Tom Caputi <tcaputi@datto.com> Closes #8611 Closes #8687
-
Matthew Ahrens authored
This comment seems to misunderstand the ## preprocessor token, which does token concatenation. It is not needed here, since we are concatenating string literals, which is performed by putting the literals next to each other. Additionally, the comment uses offensive language. Reviewed-by:
Igor Kozhukhov <igor@dilos.org> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Tony Nguyen <tony.nguyen@delphix.com> Signed-off-by:
Matthew Ahrens <mahrens@delphix.com> Closes #8698 Closes #8699
-
- 01 May, 2019 3 commits
-
-
Tomohiro Kusumi authored
sigignore(3) isn't portable. This code fails to compile on platforms without sigignore(3). Use sigaction(2). -- zfs_main.c: In function 'zfs_do_diff': zfs_main.c:7178:9: error: implicit declaration of function 'sigignore' [-Werror=implicit-function-declaration] (void) sigignore(SIGPIPE); ^~~~~~~~~ Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8593
-
Tomohiro Kusumi authored
sigset(3) isn't portable. This code fails to compile on platforms without sigset(3). Use sigaction(2). -- largest_file.c: In function 'main': largest_file.c:75:9: error: implicit declaration of function 'sigset'; did you mean 'sigvec'? [-Werror=implicit-function-declaration] (void) sigset(SIGXFSZ, sigxfsz); ^~~~~~ sigvec Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8593
-
Tomohiro Kusumi authored
The size argument of snprintf(3) in glibc and snprintf() in Linux kernel includes trailing \0, as snprintf(3) man page explains it as "write at most size bytes (including the trailing null byte ('\0'))", i.e. snprintf() can just take buffer size. e.g. For snprintf() in module/zfs/zfs_ctldir.c, a buffer size is MAXPATHLEN, and a caller is passing MAXPATHLEN to snprintf(), so size should just be `path_len` to do what the caller is trying to do. Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Richard Laager <rlaager@wiktel.com> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8692
-
- 30 Apr, 2019 3 commits
-
-
Richard Laager authored
Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Tom Caputi <tcaputi@datto.com> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8691
-
Brian Behlendorf authored
Signed-off-by:
Matthew Ahrens <mahrens@delphix.com> Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov> Closes #8660
-
Brian Behlendorf authored
Not all block devices, notably scsi_debug, set a root_blkg on the request queue. Remove this assertion and allow the the existing call to blkg_tryget() to gracefully handle the NULL (which it does). Reviewed-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Signed-off-by:
Brian Behlendorf <behlendorf1@llnl.gov> Closes #8678
-
- 26 Apr, 2019 2 commits
-
-
Tomohiro Kusumi authored
Use NV_ENCODE_NATIVE for nvlist encoding variable instead of 0. Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Chris Dunlop <chris@onthe.net.au> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8653
-
Tomohiro Kusumi authored
`make distclean` removes an empty file config/config.rpath. Avoid that by adding some text. Also see e1245d83 ("Prevent `make distclean` removing 0 sized file"). -- # find . -size 0 ./config/config.rpath # ./autogen.sh && ./configure # git diff # make distclean # git diff diff --git a/config/config.rpath b/config/config.rpath deleted file mode 100644 index e69de29bb..000000000 Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8665
-
- 25 Apr, 2019 7 commits
-
-
Tomohiro Kusumi authored
Use either SEEK_* or 0,1,2..., but not both. Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Tomohiro Kusumi <kusumi.tomohiro@gmail.com> Closes #8656
-
Tom Caputi authored
This patch fixes 2 issues with the DMU free throttle implemented in dmu_free_long_range(). The first issue is that get_next_chunk() was calculating the number of L1 blocks the free would dirty incorrectly. In some cases involving extremely large files, this code would greatly overestimate the number of effected L1 blocks, causing excessive calls to txg_wait_open(). This patch corrects the calculation. The second issue is that the free throttle uses the total number of free'd blocks in all (open, quiescing, and syncing) txgs to determine whether to throttle. This causes large frees (such as those created by the first issue) to cause 4 txg syncs before any further frees were allowed to proceed. This patch ensures that the accounting is done entirely in a per-txg fashion, so that frees from a given txg don't affect those that immediately follow it. Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Matthew Ahrens <mahrens@delphix.com> Signed-off-by:
Tom Caputi <tcaputi@datto.com> Closes #8655
-
Richard Laager authored
- Remove the language that "all user data" is encrypted. This is to avoid misunderstandings or arguments about what is "user data", especially in light of "user properties". - Document that properties are unencrypted. - Document that snapshot names are unencrypted. - For consistency with the rest of the zfs.8 man page, use "ZFS" as the generic noun, not (bolded) "zfs". The latter refers to the command. Likewise, use "ZFS" instead of "the kernel module". - Give "a passphrase" as an example of a "user's key". Reviewed-by:
Tom Caputi <tcaputi@datto.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
George Melikov <mail@gmelikov.ru> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8652
-
Richard Laager authored
This adds the encryption copies=3 limitation language into the copies property section. Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8651
-
Richard Laager authored
This documents, in zpool.8, that dedupditto is deprecated and will be made to have no effect in a future release. Reviewed-by:
George Melikov <mail@gmelikov.ru> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by:
Matthew Ahrens <mahrens@delphix.com> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8650
-
Richard Laager authored
As far as I know and can tell from testing, \fB\fB...\fR\fR is exactly equivalent to \fB...\fR. Reviewed-by:
Tom Caputi <tcaputi@datto.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8641
-
Richard Laager authored
The features are sorted in the en_US locale, not the C locale. Specifically, that means that bookmark_v2 comes _after_ bookmarks. Reviewed-by:
Tom Caputi <tcaputi@datto.com> Reviewed-by:
Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by:
Richard Laager <rlaager@wiktel.com> Closes #8641
-