mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Added no_scrub_restart flag to zpool reopen
Added -n flag to zpool reopen that allows a running scrub operation to continue if there is a device with Dirty Time Log. By default if a component device has a DTL and zpool reopen is executed all running scan operations will be restarted. Added functional tests for `zpool reopen` Tests covers following scenarios: * `zpool reopen` without arguments, * `zpool reopen` with pool name as argument, * `zpool reopen` while scrubbing, * `zpool reopen -n` while scrubbing, * `zpool reopen -n` while resilvering, * `zpool reopen` with bad arguments. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tom Caputi <tcaputi@datto.com> Signed-off-by: Arkadiusz Bubała <arkadiusz.bubala@open-e.com> Closes #6076 Closes #6746
This commit is contained in:
committed by
Brian Behlendorf
parent
3ad59c015d
commit
d3f2cd7e3b
+12
-11
@@ -25,6 +25,7 @@
|
||||
* Copyright (c) 2011, 2014 by Delphix. All rights reserved.
|
||||
* Copyright 2016 Igor Kozhukhov <ikozhukhov@gmail.com>
|
||||
* Copyright (c) 2017 Datto Inc.
|
||||
* Copyright (c) 2017 Open-E, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
@@ -3370,20 +3371,20 @@ zpool_reguid(zpool_handle_t *zhp)
|
||||
* Reopen the pool.
|
||||
*/
|
||||
int
|
||||
zpool_reopen(zpool_handle_t *zhp)
|
||||
zpool_reopen_one(zpool_handle_t *zhp, void *data)
|
||||
{
|
||||
zfs_cmd_t zc = {"\0"};
|
||||
char msg[1024];
|
||||
libzfs_handle_t *hdl = zhp->zpool_hdl;
|
||||
libzfs_handle_t *hdl = zpool_get_handle(zhp);
|
||||
const char *pool_name = zpool_get_name(zhp);
|
||||
boolean_t *scrub_restart = data;
|
||||
int error;
|
||||
|
||||
(void) snprintf(msg, sizeof (msg),
|
||||
dgettext(TEXT_DOMAIN, "cannot reopen '%s'"),
|
||||
zhp->zpool_name);
|
||||
error = lzc_reopen(pool_name, *scrub_restart);
|
||||
if (error) {
|
||||
return (zpool_standard_error_fmt(hdl, error,
|
||||
dgettext(TEXT_DOMAIN, "cannot reopen '%s'"), pool_name));
|
||||
}
|
||||
|
||||
(void) strlcpy(zc.zc_name, zhp->zpool_name, sizeof (zc.zc_name));
|
||||
if (zfs_ioctl(hdl, ZFS_IOC_POOL_REOPEN, &zc) == 0)
|
||||
return (0);
|
||||
return (zpool_standard_error(hdl, errno, msg));
|
||||
return (0);
|
||||
}
|
||||
|
||||
/* call into libzfs_core to execute the sync IOCTL per pool */
|
||||
|
||||
Reference in New Issue
Block a user