forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 5
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Linux compat 4.18: check_disk_size_change()
Added support for the bops->check_events() interface which was added in the 2.6.38 kernel to replace bops->media_changed(). Fully implementing this functionality allows the volume resize code to rely on revalidate_disk(), which is the preferred mechanism, and removes the need to use check_disk_size_change(). In order for bops->check_events() to lookup the zvol_state_t stored in the disk->private_data the zvol_state_lock needs to be held. Since the check events interface may poll the mutex has been converted to a rwlock for better concurrently. The rwlock need only be taken as a writer in the zvol_free() path when disk->private_data is set to NULL. The configure checks for the block_device_operations structure were consolidated in a single kernel-block-device-operations.m4 file. The ZFS_AC_KERNEL_BDEV_BLOCK_DEVICE_OPERATIONS configure checks and assoicated dead code was removed. This interface was added to the 2.6.28 kernel which predates the oldest supported 2.6.32 kernel and will therefore always be available. Updated maximum Linux version in META file. The 4.17 kernel was released on 2018-06-03 and ZoL is compatible with the finalized kernel. Signed-off-by: Brian Behlendorf <[email protected]>
- Loading branch information
1 parent
29445fe
commit 6d464db
Showing
7 changed files
with
175 additions
and
209 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
dnl # | ||
dnl # 2.6.38 API change | ||
dnl # | ||
AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS], [ | ||
AC_MSG_CHECKING([whether bops->check_events() exists]) | ||
tmp_flags="$EXTRA_KCFLAGS" | ||
EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" | ||
ZFS_LINUX_TRY_COMPILE([ | ||
#include <linux/blkdev.h> | ||
unsigned int blk_check_events(struct gendisk *disk, | ||
unsigned int clearing) { return (0); } | ||
static const struct block_device_operations | ||
bops __attribute__ ((unused)) = { | ||
.check_events = blk_check_events, | ||
}; | ||
],[ | ||
],[ | ||
AC_MSG_RESULT(yes) | ||
AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_CHECK_EVENTS, 1, | ||
[bops->check_events() exists]) | ||
],[ | ||
AC_MSG_RESULT(no) | ||
]) | ||
EXTRA_KCFLAGS="$tmp_flags" | ||
]) | ||
|
||
dnl # | ||
dnl # 3.10.x API change | ||
dnl # | ||
AC_DEFUN([ZFS_AC_KERNEL_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID], [ | ||
AC_MSG_CHECKING([whether bops->release() is void]) | ||
tmp_flags="$EXTRA_KCFLAGS" | ||
EXTRA_KCFLAGS="${NO_UNUSED_BUT_SET_VARIABLE}" | ||
ZFS_LINUX_TRY_COMPILE([ | ||
#include <linux/blkdev.h> | ||
void blk_release(struct gendisk *g, fmode_t mode) { return; } | ||
static const struct block_device_operations | ||
bops __attribute__ ((unused)) = { | ||
.open = NULL, | ||
.release = blk_release, | ||
.ioctl = NULL, | ||
.compat_ioctl = NULL, | ||
}; | ||
],[ | ||
],[ | ||
AC_MSG_RESULT(void) | ||
AC_DEFINE(HAVE_BLOCK_DEVICE_OPERATIONS_RELEASE_VOID, 1, | ||
[bops->release() returns void]) | ||
],[ | ||
AC_MSG_RESULT(int) | ||
]) | ||
EXTRA_KCFLAGS="$tmp_flags" | ||
]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.