diff options
author | Alek P <[email protected]> | 2019-03-12 13:13:22 -0700 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-03-12 13:13:22 -0700 |
commit | 4c0883fb4af0d5565459099b98fcf90ecbfa1ca1 (patch) | |
tree | 6f99d61588b8168485f903467b271259d00882ee /include | |
parent | dd785b5b86bbb7ebbfe1d22668f3dd27c5704994 (diff) |
Avoid retrieving unused snapshot props
This patch modifies the zfs_ioc_snapshot_list_next() ioctl to enable it
to take input parameters that alter the way looping through the list of
snapshots is performed. The idea here is to restrict functions that
throw away some of the snapshots returned by the ioctl to a range of
snapshots that these functions actually use. This improves efficiency
and execution speed for some rollback and send operations.
Reviewed-by: Tom Caputi <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed by: Matt Ahrens <[email protected]>
Signed-off-by: Alek Pinchuk <[email protected]>
Closes #8077
Diffstat (limited to 'include')
-rw-r--r-- | include/libzfs.h | 8 | ||||
-rw-r--r-- | include/sys/fs/zfs.h | 11 |
2 files changed, 14 insertions, 5 deletions
diff --git a/include/libzfs.h b/include/libzfs.h index 65b06f7a8..3405bb99b 100644 --- a/include/libzfs.h +++ b/include/libzfs.h @@ -27,7 +27,7 @@ * Copyright (c) 2016, Intel Corporation. * Copyright 2016 Nexenta Systems, Inc. * Copyright (c) 2017 Open-E, Inc. All Rights Reserved. - * Copyright (c) 2018 Datto Inc. + * Copyright (c) 2019 Datto Inc. */ #ifndef _LIBZFS_H @@ -571,8 +571,10 @@ extern int zfs_iter_root(libzfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_children(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_dependents(zfs_handle_t *, boolean_t, zfs_iter_f, void *); extern int zfs_iter_filesystems(zfs_handle_t *, zfs_iter_f, void *); -extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *); -extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *); +extern int zfs_iter_snapshots(zfs_handle_t *, boolean_t, zfs_iter_f, void *, + uint64_t, uint64_t); +extern int zfs_iter_snapshots_sorted(zfs_handle_t *, zfs_iter_f, void *, + uint64_t, uint64_t); extern int zfs_iter_snapspec(zfs_handle_t *, const char *, zfs_iter_f, void *); extern int zfs_iter_bookmarks(zfs_handle_t *, zfs_iter_f, void *); extern int zfs_iter_mounted(zfs_handle_t *, zfs_iter_f, void *); diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index 8a86480a6..c4d26eb87 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -25,8 +25,8 @@ * Copyright 2011 Nexenta Systems, Inc. All rights reserved. * Copyright (c) 2013, 2017 Joyent, Inc. All rights reserved. * Copyright (c) 2014 Integros [integros.com] - * Copyright (c) 2017 Datto Inc. * Copyright (c) 2017, Intel Corporation. + * Copyright (c) 2019 Datto Inc. */ /* Portions Copyright 2010 Robert Milkowski */ @@ -1076,7 +1076,7 @@ typedef enum pool_initialize_func { * is passed between kernel and userland as an nvlist uint64 array. */ typedef struct ddt_object { - uint64_t ddo_count; /* number of elements in ddt */ + uint64_t ddo_count; /* number of elements in ddt */ uint64_t ddo_dspace; /* size of ddt on disk */ uint64_t ddo_mspace; /* size of ddt in-core */ } ddt_object_t; @@ -1124,6 +1124,13 @@ typedef enum { } vdev_initializing_state_t; /* + * nvlist name constants. Facilitate restricting snapshot iteration range for + * the "list next snapshot" ioctl + */ +#define SNAP_ITER_MIN_TXG "snap_iter_min_txg" +#define SNAP_ITER_MAX_TXG "snap_iter_max_txg" + +/* * /dev/zfs ioctl numbers. * * These numbers cannot change over time. New ioctl numbers must be appended. |