]> granicus.if.org Git - zfs/commit
Linux 5.2 compat: rw_tryupgrade()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 23 May 2019 20:46:33 +0000 (13:46 -0700)
committerGitHub <noreply@github.com>
Thu, 23 May 2019 20:46:33 +0000 (13:46 -0700)
commitbff2361aeb32a83c26e2992733864ca99cced257
treeae45cdae978446595bbb160f20dae43ba9e79edb
parente34c3ee2fcbb320525a110c1811c557bc60479ff
Linux 5.2 compat: rw_tryupgrade()

Commit torvalds/linux@46ad0840b has removed the architecture specific
rwsem source and headers leaving only the generic version.  As part
of this change the RWSEM_ACTIVE_READ_BIAS and RWSEM_ACTIVE_WRITE_BIAS
macros were moved to the private kernel/locking/rwsem.h header.
This results in a build failure because these macros were required
to implement the rw_tryupgrade() compatibility function.

In practice, this isn't a major problem because there are only a
few consumers of rw_tryupgrade() and because consumers of rw_tryupgrade
should be written to retry using rw_enter(RW_WRITER).

After auditing all of the callers only dmu_zfetch() was determined
not to perform a retry.  It has been updated in this commit to
resolve this issue.

That said, the rw_tryupgrade() functionality should be considered
for possible removal in a future release due to the difficultly
in supporting the interface.

Reviewed-by: Tomohiro Kusumi <kusumi.tomohiro@gmail.com>
Reviewed-by: Chunwei Chen <tuxoko@gmail.com>
Signed-off-by: Brian Behlendorf <behlendorf1@llnl.gov>
Closes #8730
include/spl/sys/rwlock.h
module/spl/spl-rwlock.c
module/zfs/dmu_zfetch.c