aboutsummaryrefslogtreecommitdiffstats
path: root/config/kernel-blkdev.m4
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2022-05-27 19:40:22 +0000
committerBrian Behlendorf <[email protected]>2022-05-31 12:04:26 -0700
commita12a5cb5b821f24f26d388094cdac79deb0e879f (patch)
tree48503af5a681f671f8638e910c37ab09ceb3a634 /config/kernel-blkdev.m4
parente2c31f2bc7d190fbd8fc5c13bac23daffc5d7b56 (diff)
Linux 5.19 compat: blkdev_issue_secure_erase()
Linux 5.19 commit torvalds/linux@44abff2c0 splits the secure erase functionality from the blkdev_issue_discard() function. The blkdev_issue_secure_erase() must now be issued to issue a secure erase. Reviewed-by: Tony Hutter <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #13515
Diffstat (limited to 'config/kernel-blkdev.m4')
-rw-r--r--config/kernel-blkdev.m453
1 files changed, 53 insertions, 0 deletions
diff --git a/config/kernel-blkdev.m4 b/config/kernel-blkdev.m4
index 9c60e5dd4..fb7b1a458 100644
--- a/config/kernel-blkdev.m4
+++ b/config/kernel-blkdev.m4
@@ -295,6 +295,57 @@ AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE], [
])
dnl #
+dnl # 5.19 API: blkdev_issue_secure_erase()
+dnl # 3.10 API: blkdev_issue_discard(..., BLKDEV_DISCARD_SECURE)
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_SECURE_ERASE], [
+ ZFS_LINUX_TEST_SRC([blkdev_issue_secure_erase], [
+ #include <linux/blkdev.h>
+ ],[
+ struct block_device *bdev = NULL;
+ sector_t sector = 0;
+ sector_t nr_sects = 0;
+ int error __attribute__ ((unused));
+
+ error = blkdev_issue_secure_erase(bdev,
+ sector, nr_sects, GFP_KERNEL);
+ ])
+
+ ZFS_LINUX_TEST_SRC([blkdev_issue_discard_flags], [
+ #include <linux/blkdev.h>
+ ],[
+ struct block_device *bdev = NULL;
+ sector_t sector = 0;
+ sector_t nr_sects = 0;
+ unsigned long flags = 0;
+ int error __attribute__ ((unused));
+
+ error = blkdev_issue_discard(bdev,
+ sector, nr_sects, GFP_KERNEL, flags);
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_BLKDEV_ISSUE_SECURE_ERASE], [
+ AC_MSG_CHECKING([whether blkdev_issue_secure_erase() is available])
+ ZFS_LINUX_TEST_RESULT([blkdev_issue_secure_erase], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BLKDEV_ISSUE_SECURE_ERASE, 1,
+ [blkdev_issue_secure_erase() is available])
+ ],[
+ AC_MSG_RESULT(no)
+
+ AC_MSG_CHECKING([whether blkdev_issue_discard() is available])
+ ZFS_LINUX_TEST_RESULT([blkdev_issue_discard_flags], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_BLKDEV_ISSUE_DISCARD, 1,
+ [blkdev_issue_discard() is available])
+ ],[
+ ZFS_LINUX_TEST_ERROR([blkdev_issue_discard()])
+ ])
+ ])
+])
+
+dnl #
dnl # 5.13 API change
dnl # blkdev_get_by_path() no longer handles ERESTARTSYS
dnl #
@@ -326,6 +377,7 @@ AC_DEFUN([ZFS_AC_KERNEL_SRC_BLKDEV], [
ZFS_AC_KERNEL_SRC_BLKDEV_CHECK_DISK_CHANGE
ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
ZFS_AC_KERNEL_SRC_BLKDEV_BDEV_WHOLE
+ ZFS_AC_KERNEL_SRC_BLKDEV_ISSUE_SECURE_ERASE
])
AC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
@@ -340,4 +392,5 @@ AC_DEFUN([ZFS_AC_KERNEL_BLKDEV], [
ZFS_AC_KERNEL_BLKDEV_BDEV_CHECK_MEDIA_CHANGE
ZFS_AC_KERNEL_BLKDEV_BDEV_WHOLE
ZFS_AC_KERNEL_BLKDEV_GET_ERESTARTSYS
+ ZFS_AC_KERNEL_BLKDEV_ISSUE_SECURE_ERASE
])