]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
MFC r331701: MFV r331695, 331700: 9166 zfs storage pool checkpoint
authormav <mav@FreeBSD.org>
Mon, 16 Apr 2018 04:10:56 +0000 (04:10 +0000)
committermav <mav@FreeBSD.org>
Mon, 16 Apr 2018 04:10:56 +0000 (04:10 +0000)
commitae751e77ee5685e40fda9e58de3377886556347d
tree4384fff6612558b2ce6b755529cd027696398474
parenta7e579a333bfc7edf5afcee36f1757e24ad751f3
MFC r331701: MFV r331695, 331700: 9166 zfs storage pool checkpoint

illumos/illumos-gate@8671400134a11c848244896ca51a7db4d0f69da4

The idea of Storage Pool Checkpoint (aka zpool checkpoint) deals with
exactly that.  It can be thought of as a “pool-wide snapshot” (or a
variation of extreme rewind that doesn’t corrupt your data).  It remembers
the entire state of the pool at the point that it was taken and the user
can revert back to it later or discard it.  Its generic use case is an
administrator that is about to perform a set of destructive actions to ZFS
as part of a critical procedure.  She takes a checkpoint of the pool before
performing the actions, then rewinds back to it if one of them fails or puts
the pool into an unexpected state.  Otherwise, she discards it.  With the
assumption that no one else is making modifications to ZFS, she basically
wraps all these actions into a “high-level transaction”.

Reviewed by: Matthew Ahrens <mahrens@delphix.com>
Reviewed by: John Kennedy <john.kennedy@delphix.com>
Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Approved by: Richard Lowe <richlowe@richlowe.net>
Author: Serapheim Dimitropoulos <serapheim.dimitro@delphix.com>
62 files changed:
cddl/contrib/opensolaris/cmd/zdb/zdb.8
cddl/contrib/opensolaris/cmd/zdb/zdb.c
cddl/contrib/opensolaris/cmd/zdb/zdb_il.c
cddl/contrib/opensolaris/cmd/zpool/zpool-features.7
cddl/contrib/opensolaris/cmd/zpool/zpool.8
cddl/contrib/opensolaris/cmd/zpool/zpool_main.c
cddl/contrib/opensolaris/cmd/ztest/ztest.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c
cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c
cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h
sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c
sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h
sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c
sys/cddl/contrib/opensolaris/uts/common/Makefile.files
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_checkpoint.c [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/range_tree.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_checkpoint.h [new file with mode: 0644]
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/uberblock_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_removal.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zthr.h
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/uberblock.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_indirect.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_removal.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zcp.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zcp_synctask.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zthr.c
sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h
sys/conf/files