I have had ClusterHQ's partial stable ABI in Gentoo's packaging since
December (which helped to shake out bugs) and have just done another
update of it with various bug fixes, including many from HEAD.

Some might notice that merging a pull request that isn't fully reviewed
is a fairly big departure from the rigorous vetting that I did on
patches to ensure that every update was absolutely bug free. I had a
good span of about 3 years without Gentoo specific regressions that I
can recall.

While I did my best to avoid introducing regressions in Gentoo's ZoL
packaging, the /dev/zfs ABI has been unstable. That allowed for
potential upgrade pains such as 0.6.2 -> 0.6.3 where those with
mismatched modules and userspace code had problems. All ZoL packaging in
Gentoo has been marked as "testing" because of it. The partial stable
ABI presents offers an opportunity to change this such that users will
have the option of either stable packages (well tested and vetted) or
testing packages (vetted by me and pushed out for the community to vet
further).

In specific, the partial stable ABI should allow the following functions
to work whenever mismatches occur, provided that both the userland and
kernel code are mismatched using versions after the transition has taken
place:

- zpool import
- zpool iostat
- zpool tryimport
- zpool export
- zpool list
- zpool get
- zpool status
- zfs mount
- zfs umount
- zfs clone
- zfs snapshot
- zfs rollback
- zfs destroy
- zfs create
- zfs list
- zfs get
- zfs set
- zfs inherit
- zfs send
- zfs recv (part of stable API, but not ABI in the current code, plan to
resolve in the future)
- zfs bookmark
- zfs hold
- zfs release

It also provides convenient functions to control these operations
through libzfs_core. The man pages are a draft from a few months ago,
but include all of the non-zpool commands. This will be rectified in the
near future so that all functions are thoroughly documented.

After consulting with a few others, I decided in December to transition
Gentoo to this now in the belief that the long term benefits outweigh
the short term pain of the transition. Specifically, I want to exchange
all of the pain the /dev/zfs ABI being unstable will cause over years
for a brief period of pain now.

Having any pain at all is not ideal, but this is the first time we have
had a plan to ensure that this will be the last time (for the subset I
mentioned, things outside of it will likely be added in the future based
on need/importance).

Doing an update today to fix the regressions that were reported has
given me the opportunity to reflect on how I have handled things since
the December update. At present, I am working on multiple things and
while it is hard to keep track of every issue, I would like to minimize
the amount of pain that occurs during this transition. My plan is to
complete the transition by marking things stable 2 weeks after I stop
hearing reports of regressions.

If there are any regressions I have missed, I would like to hear about
them. Please contact me in #zfsonlinux on the freenode IRC network so
that I can resolve it ASAP. That way the regression can cut in line in
my queue and be handled faster than the regressions I missed prior to
the December code push.

Having said that, those on other distributions are welcome to the code
and to contact me about issues (please ping through freenode for the
fastest response). It can be found on github:

https://github.com/ryao/zfs/commits/gentoo-zfs-0.6.5.3-release
https://github.com/ryao/spl/commits/gentoo-spl-0.6.5.3-release

Tarballs of patches can be found here:

http://dev.gentoo.org/~ryao/dist/zfs-0.6.5.3-patches-p1.tar.xz
SHA256: 765a66adf67d0a3ae6a699561b98a5158d464e3b6ed413a72bdbbe6e6252ba66
SHA1: 56079ecd2543c44191cd747ce28a28a2bab8c064
MD5: 0a92dae487f507616e0850ee9760932f

http://dev.gentoo.org/~ryao/dist/spl-0.6.5.3-patches-p0.tar.xz
SHA256: 8e652d41eba421720bcecee99077d3f3c375153809426011f04a2c64aa181ca7
SHA1: 50cf449d7ba1772b967446bad7c12ac29fee7b6c
MD5: 6d3c2fe3bfff26f575120aac623f8dda

The ZFS shortlog:

AndCycle (1):
      Obey arc_meta_limit default size when changing arc_max

Benjamin Albrecht (1):
      Activate LVM volume groups before looking for zpools.

Brian Behlendorf (15):
      Fix maybe uninitialized
      Follow 0/-E convention for module load errors
      Fix --enable-linux-builtin
      Use large stacks when available
      Either _ILP32 or _LP64 must be defined
      Fix zfsctl_lookup_objset() deadlock
      Change zfs_snapshot_lock from mutex to rw lock
      Set 'zfs_expire_snapshot=0' to disable auto-unmount
      Hold the zfs_snapentry_t before dispatch
      Handle block pointers with a corrupt logical size
      Handle damaged blk_birth in dsl_deadlist_insert()
      Fix vdev_queue_aggregate() deadlock
      Fix zfs_vdev_aggregation_limit bounds checking
      Fix ztest truncated cache file
      Fix z_xattr_lock/z_teardown_lock inversion

Chunwei Chen (11):
      Fix fail path in zfs_znode_alloc
      Fix snapshot automount behavior when concurrent or fail
      Linux 4.4 compat: make_request_fn returns blk_qc_t
      Linux 4.4 compat: xattr operations takes xattr_handler
      Fix zdb calling behavior in ztest
      Fix zdb_dump_block on little endian systems
      Use spa as key besides objsetid for snapentry
      Fix snapshot automount race cause EREMOTE
      Fix uio_prefaultpages for 0 length iovec
      Fix empty xattr dir causing lockup
      Make xattr dir truncate and remove in one tx

DHE (1):
      libzfs: handle EDOM errors

Jason Zaman (1):
      sysmacros: Make P2ROUNDUP not trigger int overflow

Kamil DomaƄski (1):
      Skip GPL-only symbols test when cross-compiling

Ned Bass (1):
      Prevent SA length overflow

Olaf Faaland (1):
      Remove "index" column from dbufstat.py

Richard Yao (5):
      ClusterHQ Proposed API extensions
      Only trigger SET_ERROR tracepoint event on error
      Unconditionally build zdb and ztest with -DDEBUG
      Revert "Switch ztest mmap(2) ASSERTs to VERIFYs"
      Refresh ClusterHQ Proposed API extensions against ZoL PR

Turbo Fredriksson (1):
      Unmount is part of the shutdown process, not the boot process.

tuxoko (3):
      Fix null pointer in arc_kmem_reap_now on 32-bit
      Fix zfs_dirty_data_max overflow on 32-bit
      Prevent rm modules.* when make install

The SPL shortlog:

Brian Behlendorf (1):
      Fix --enable-linux-builtin

Chunwei Chen (1):
      Don't call kmem_cache_shrink from shrinker

Dimitri John Ledkov (1):
      spl-kmem-cache: include linux/prefetch.h for prefetchw()

Jason Zaman (1):
      sysmacros: Make P2ROUNDUP not trigger int overflow

Richard Yao (2):
      Fix race between getf() and areleasef()
      Make taskq_member() use ->journal_info

tuxoko (2):
      Fix taskq dynamic spawning
      Prevent rm modules.* when make install

Attachment: 0xBEE84C64.asc
Description: application/pgp-keys

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to