OpenZFS merge master-436ab35a5
- speed up writing to ZFS pools without ZIL devices (aa755b3)
- speed up importing ZFS pools (2d8f72d, a0e0199, cf0977a)
...
Differential D28677 Authored by mm on Mon, Feb 15, 2:42 AM.
Details
Summary OpenZFS merge master-436ab35a5
...
Diff Detail
Event TimelineHerald added a subscriber: delphij. · View Herald TranscriptMon, Feb 15, 2:43 AM2021-02-15 02:43:05 (UTC+0) Comment Actions Github version: https://github.com/mmatuska/freebsd-src/commits/openzfs_gc1c31a835 Comment Actions Huh. Looks like upstream added the following everywhere: static int zfs_freebsd_read(struct vop_read_args *ap) { zfs_uio_t uio; zfs_uio_init(&uio, ap->a_uio); return (zfs_read(VTOZ(ap->a_vp), &uio, ioflags(ap->a_ioflag), ap->a_cred)); } Not only this adds a likely avoidable data copy, this can no longer be tail called as return has to clean up the stack. That's a major bummer and should get reimplemented. I don't have time to get into it now. That said, the readlink bit looks fine. I don't think it's feasible to really review the entire patchset tough. Comment Actions @mjg I don't think much has changed under the hood because: typedef struct zfs_uio { struct uio *uio; } zfs_uio_t; #define GET_UIO_STRUCT(u) (u)->uio #define zfs_uio_segflg(u) GET_UIO_STRUCT(u)->uio_segflg #define zfs_uio_offset(u) GET_UIO_STRUCT(u)->uio_offset #define zfs_uio_resid(u) GET_UIO_STRUCT(u)->uio_resid #define zfs_uio_iovcnt(u) GET_UIO_STRUCT(u)->uio_iovcnt #define zfs_uio_iovlen(u, idx) GET_UIO_STRUCT(u)->uio_iov[(idx)].iov_len #define zfs_uio_iovbase(u, idx) GET_UIO_STRUCT(u)->uio_iov[(idx)].iov_base #define zfs_uio_td(u) GET_UIO_STRUCT(u)->uio_td #define zfs_uio_rw(u) GET_UIO_STRUCT(u)->uio_rw #define zfs_uio_fault_disable(u, set) #define zfs_uio_prefaultpages(size, u) (0) static __inline void zfs_uio_init(zfs_uio_t *uio, struct uio *uio_s) { GET_UIO_STRUCT(uio) = uio_s; } But if it is like you say, then we do symlink_len -= zfs_uio_resid(&uio); after line error = zfs_readlink(ap->a_vp, &uio, ap->a_cred, NULL); and that would be a no-go in zfs_freebsd_readlink(). Comment Actions The zfs test suite was not very happy with this in my bhyve, I guess we postpone this or someone else could continue with the merge. I have cherry-picked two important commits for 13.0-RELEASE. Comment Actions Is the test suite happy with zfs as is? I know it used to pass few months back, but to my understanding some of the assertions were not being compiled in. Comment Actions I ran the few zfs tests I have on openzfs_gc1c31a835-n244815-1f4c076e9e38 without observing any problems. Comment Actions To be true guys, what is much more interesting than this diff is the diff between vendor/openzfs and sys/contrib/openzfs - I guess we want to keep it as small as possible (long-term). And currently there is already some difference. The most notable improvement for me is the speedup in zpool import. I have a 102-drive pool with 60TB of L2 cache and the import time is reduced by a factor of 10. Comment Actions The intent is to have next to no local patches, but upstreaming got stalled at some point with CI failures and I did not pick it up later. It is a little iffy right now but should be sorted out soon(tm). mm retitled this revision from Merge OpenZFS gc1c31a835 to Merge OpenZFS 436ab35a5.Tue, Feb 16, 1:05 AM2021-02-16 01:05:46 (UTC+0) This revision was not accepted when it landed; it landed in state Needs Review.Tue, Feb 16, 10:31 AM2021-02-16 10:31:29 (UTC+0) Closed by commit R10:184c1b943937: zfs: merge OpenZFS master-436ab35a5 (authored by mm). · Explain Why This revision was automatically updated to reflect the committed changes. Comment Actions Sorry I didn't get a chance to review this in time. Thank you for updating to 436ab35a5. I share the concern about our diff against upstream. Large DiffThis large diff affects 248 files. Files without inline comments have been collapsed. Expand All Files
Revision Contents
Diff 83996 sys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zfs_send/zfs_send_encrypted_unloaded.kshsys/contrib/openzfs/tests/zfs-tests/tests/functional/cli_root/zpool_events/zpool_events_duplicates.ksh |