aboutsummaryrefslogtreecommitdiffstats
path: root/tests/zfs-tests/include
diff options
context:
space:
mode:
authorGeorge Amanakis <[email protected]>2021-12-17 21:35:28 +0100
committerBrian Behlendorf <[email protected]>2023-05-18 11:59:42 -0700
commit482eeef804f0f325faddb102f112c0f1ec86a1b6 (patch)
treef5b052e7fed06ad527285841ec6de2d7503d39ed /tests/zfs-tests/include
parente34e15ed6d1882d29e314321b7642305d99f1b78 (diff)
Teach zpool scrub to scrub only blocks in error log
Added a flag '-e' in zpool scrub to scrub only blocks in error log. A user can pause, resume and cancel the error scrub by passing additional command line arguments -p -s just like a regular scrub. This involves adding a new flag, creating new libzfs interfaces, a new ioctl, and the actual iteration and read-issuing logic. Error scrubbing is executed in multiple txg to make sure pool performance is not affected. Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Tony Hutter <[email protected]> Co-authored-by: TulsiJain [email protected] Signed-off-by: George Amanakis <[email protected]> Closes #8995 Closes #12355
Diffstat (limited to 'tests/zfs-tests/include')
-rw-r--r--tests/zfs-tests/include/libtest.shlib18
1 files changed, 18 insertions, 0 deletions
diff --git a/tests/zfs-tests/include/libtest.shlib b/tests/zfs-tests/include/libtest.shlib
index 8521f271b..133f8387d 100644
--- a/tests/zfs-tests/include/libtest.shlib
+++ b/tests/zfs-tests/include/libtest.shlib
@@ -1969,6 +1969,12 @@ function is_pool_scrubbing #pool <verbose>
check_pool_status "$1" "scan" "scrub in progress since " $2
}
+function is_pool_error_scrubbing #pool <verbose>
+{
+ check_pool_status "$1" "scrub" "error scrub in progress since " $2
+ return $?
+}
+
function is_pool_scrubbed #pool <verbose>
{
check_pool_status "$1" "scan" "scrub repaired" $2
@@ -1979,11 +1985,23 @@ function is_pool_scrub_stopped #pool <verbose>
check_pool_status "$1" "scan" "scrub canceled" $2
}
+function is_pool_error_scrub_stopped #pool <verbose>
+{
+ check_pool_status "$1" "scrub" "error scrub canceled on " $2
+ return $?
+}
+
function is_pool_scrub_paused #pool <verbose>
{
check_pool_status "$1" "scan" "scrub paused since " $2
}
+function is_pool_error_scrub_paused #pool <verbose>
+{
+ check_pool_status "$1" "scrub" "error scrub paused since " $2
+ return $?
+}
+
function is_pool_removing #pool
{
check_pool_status "$1" "remove" "in progress since "