Reviewed by: Matthew Ahrens <[email protected]> Reviewed by: John Kennedy <[email protected]> Reviewed by: Dan Kimmel <[email protected]>
Details about the motivation of this feature and its usage can be found in this blogpost: https://sdimitro.github.io/post/zpool-checkpoint/ A lightning talk of this feature can be found here: https://www.youtube.com/watch?v=fPQA8K40jAM Implementation details can be found in big block comment of spa_checkpoint.c Side-changes that are relevant to this commit but not explained elsewhere: * renames metaslab trees to be shorter without losing meaning * space_map_{alloc,truncate}() accept a block size as a parameter. The reason is that in the current state all space maps that we allocate through the DMU use a global tunable (space_map_blksz) which defauls to 4KB. This is ok for metaslab space maps in terms of bandwirdth since they are scattered all over the disk. But for other space maps this default is probably not what we want. Examples are device removal's vdev_obsolete_sm or vdev_chedkpoint_sm from this review. Both of these have a 1:1 relationship with each vdev and could benefit from a bigger block size. Upstream Bugs: DLPX-49202, DLPX-48936, DLPX-48532, DLPX-46652, DLPX-51224, DLPX-51469, DLPX-52028, DLPX-53181, DLPX-52524, DLPX-56750, DLPX-57058, DLPX-57033 You can view, comment on, or merge this pull request online at: https://github.com/openzfs/openzfs/pull/560 -- Commit Summary -- * 9166 zfs storage pool checkpoint -- File Changes -- M usr/src/cmd/mdb/common/modules/zfs/zfs.c (67) M usr/src/cmd/truss/codes.c (6) M usr/src/cmd/zdb/zdb.c (847) M usr/src/cmd/zdb/zdb_il.c (12) M usr/src/cmd/zpool/zpool_main.c (215) M usr/src/cmd/ztest/ztest.c (120) M usr/src/common/zfs/zfeature_common.c (7) M usr/src/common/zfs/zfeature_common.h (3) M usr/src/common/zfs/zpool_prop.c (4) M usr/src/lib/libzfs/common/libzfs.h (7) M usr/src/lib/libzfs/common/libzfs_pool.c (43) M usr/src/lib/libzfs/common/libzfs_util.c (29) M usr/src/lib/libzfs/common/mapfile-vers (2) M usr/src/lib/libzfs_core/common/libzfs_core.c (68) M usr/src/lib/libzfs_core/common/libzfs_core.h (3) M usr/src/lib/libzfs_core/common/mapfile-vers (9) M usr/src/man/man1m/zdb.1m (5) M usr/src/man/man1m/zpool.1m (93) M usr/src/man/man5/zpool-features.5 (20) M usr/src/pkg/manifests/system-test-zfstest.mf (52) A usr/src/test/zfs-tests/cmd/randwritecomp/Makefile (19) A usr/src/test/zfs-tests/cmd/randwritecomp/randwritecomp.c (192) M usr/src/test/zfs-tests/include/commands.cfg (1) M usr/src/test/zfs-tests/include/libtest.shlib (20) M usr/src/test/zfs-tests/runfiles/delphix.run (11) A usr/src/test/zfs-tests/runfiles/longevity.run (23) M usr/src/test/zfs-tests/runfiles/omnios.run (13) M usr/src/test/zfs-tests/runfiles/openindiana.run (13) M usr/src/test/zfs-tests/tests/functional/cli_root/zdb/zdb_001_neg.ksh (4) M usr/src/test/zfs-tests/tests/functional/cli_root/zpool_import/import_rewind_config_changed.ksh (36) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/Makefile (21) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_after_rewind.ksh (55) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_big_rewind.ksh (57) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_capacity.ksh (90) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_conf_change.ksh (43) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard.ksh (53) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard_busy.ksh (106) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_discard_many.ksh (52) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_indirect.ksh (59) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_invalid.ksh (80) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_lun_expsz.ksh (61) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_open.ksh (48) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_removal.ksh (72) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_rewind.ksh (49) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_ro_rewind.ksh (57) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_sm_scale.ksh (74) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_twice.ksh (40) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_vdev_add.ksh (63) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_zdb.ksh (80) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/checkpoint_zhack_feat.ksh (66) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/cleanup.ksh (23) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/pool_checkpoint.kshlib (392) A usr/src/test/zfs-tests/tests/functional/pool_checkpoint/setup.ksh (25) M usr/src/test/zfs-tests/tests/functional/removal/removal.kshlib (108) M usr/src/test/zfs-tests/tests/functional/removal/removal_remap_deadlists.ksh (5) M usr/src/test/zfs-tests/tests/functional/removal/removal_reservation.ksh (9) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_add.ksh (14) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_create_fs.ksh (9) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_export.ksh (31) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_remap.ksh (13) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_remove.ksh (9) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_scrub.ksh (13) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_send.ksh (11) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_send_recv.ksh (13) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_snapshot.ksh (9) M usr/src/test/zfs-tests/tests/functional/removal/removal_with_zdb.ksh (15) A usr/src/test/zfs-tests/tests/longevity/Makefile (21) A usr/src/test/zfs-tests/tests/longevity/slop_space_test.ksh (255) M usr/src/uts/common/Makefile.files (1) M usr/src/uts/common/fs/zfs/dmu_traverse.c (14) M usr/src/uts/common/fs/zfs/dnode.c (4) M usr/src/uts/common/fs/zfs/dnode_sync.c (2) M usr/src/uts/common/fs/zfs/dsl_dataset.c (12) M usr/src/uts/common/fs/zfs/dsl_destroy.c (4) M usr/src/uts/common/fs/zfs/dsl_dir.c (37) M usr/src/uts/common/fs/zfs/dsl_pool.c (111) M usr/src/uts/common/fs/zfs/dsl_scan.c (145) M usr/src/uts/common/fs/zfs/dsl_synctask.c (124) M usr/src/uts/common/fs/zfs/dsl_userhold.c (5) M usr/src/uts/common/fs/zfs/metaslab.c (441) M usr/src/uts/common/fs/zfs/range_tree.c (10) M usr/src/uts/common/fs/zfs/spa.c (449) A usr/src/uts/common/fs/zfs/spa_checkpoint.c (623) M usr/src/uts/common/fs/zfs/spa_misc.c (77) M usr/src/uts/common/fs/zfs/space_map.c (149) M usr/src/uts/common/fs/zfs/sys/dmu.h (1) M usr/src/uts/common/fs/zfs/sys/dsl_dir.h (3) M usr/src/uts/common/fs/zfs/sys/dsl_pool.h (8) M usr/src/uts/common/fs/zfs/sys/dsl_synctask.h (41) M usr/src/uts/common/fs/zfs/sys/metaslab.h (6) M usr/src/uts/common/fs/zfs/sys/metaslab_impl.h (53) M usr/src/uts/common/fs/zfs/sys/range_tree.h (3) M usr/src/uts/common/fs/zfs/sys/spa.h (8) A usr/src/uts/common/fs/zfs/sys/spa_checkpoint.h (44) M usr/src/uts/common/fs/zfs/sys/spa_impl.h (5) M usr/src/uts/common/fs/zfs/sys/space_map.h (12) M usr/src/uts/common/fs/zfs/sys/uberblock_impl.h (24) M usr/src/uts/common/fs/zfs/sys/vdev.h (5) M usr/src/uts/common/fs/zfs/sys/vdev_impl.h (11) M usr/src/uts/common/fs/zfs/sys/vdev_removal.h (4) M usr/src/uts/common/fs/zfs/sys/zio.h (1) M usr/src/uts/common/fs/zfs/sys/zthr.h (1) M usr/src/uts/common/fs/zfs/uberblock.c (3) M usr/src/uts/common/fs/zfs/vdev.c (179) M usr/src/uts/common/fs/zfs/vdev_indirect.c (17) M usr/src/uts/common/fs/zfs/vdev_label.c (46) M usr/src/uts/common/fs/zfs/vdev_removal.c (78) M usr/src/uts/common/fs/zfs/zcp.c (2) M usr/src/uts/common/fs/zfs/zcp_synctask.c (9) M usr/src/uts/common/fs/zfs/zfs_ioctl.c (32) M usr/src/uts/common/fs/zfs/zil.c (109) M usr/src/uts/common/fs/zfs/zio.c (17) M usr/src/uts/common/fs/zfs/zthr.c (2) M usr/src/uts/common/sys/fs/zfs.h (36) -- Patch Links -- https://github.com/openzfs/openzfs/pull/560.patch https://github.com/openzfs/openzfs/pull/560.diff -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/openzfs/openzfs/pull/560 ------------------------------------------ openzfs-developer Archives: https://openzfs.topicbox.com/groups/developer/discussions/Td88f07fc9e296932-M497cde1d95406220e58313f4 Powered by Topicbox: https://topicbox.com
