mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Add bookmark v2 on-disk feature
This patch adds the bookmark v2 feature to the on-disk format. This feature will be needed for the upcoming redacted sends and for an upcoming fix that for raw receives. The feature is not currently used by any code and thus this change is a no-op, aside from the fact that the user can now enable the feature. Reviewed-by: Paul Dagnelie <pcd@delphix.com> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Matt Ahrens <mahrens@delphix.com> Signed-off-by: Tom Caputi <tcaputi@datto.com> Issue #8308
This commit is contained in:
committed by
Brian Behlendorf
parent
369aa501d1
commit
579ce7c5ae
@@ -439,6 +439,17 @@ zpool_feature_init(void)
|
||||
ZFEATURE_TYPE_BOOLEAN, userobj_accounting_deps);
|
||||
}
|
||||
|
||||
{
|
||||
static const spa_feature_t bookmark_v2_deps[] = {
|
||||
SPA_FEATURE_EXTENSIBLE_DATASET,
|
||||
SPA_FEATURE_NONE
|
||||
};
|
||||
zfeature_register(SPA_FEATURE_BOOKMARK_V2,
|
||||
"com.datto:bookmark_v2", "bookmark_v2",
|
||||
"Support for larger bookmarks",
|
||||
0, ZFEATURE_TYPE_BOOLEAN, bookmark_v2_deps);
|
||||
}
|
||||
|
||||
{
|
||||
static const spa_feature_t encryption_deps[] = {
|
||||
SPA_FEATURE_EXTENSIBLE_DATASET,
|
||||
|
||||
@@ -70,6 +70,12 @@ dsl_dataset_bmark_lookup(dsl_dataset_t *ds, const char *shortname,
|
||||
if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET)
|
||||
mt = MT_NORMALIZE;
|
||||
|
||||
/*
|
||||
* Zero out the bookmark in case the one stored on disk
|
||||
* is in an older, shorter format.
|
||||
*/
|
||||
bzero(bmark_phys, sizeof (*bmark_phys));
|
||||
|
||||
err = zap_lookup_norm(mos, bmark_zapobj, shortname, sizeof (uint64_t),
|
||||
sizeof (*bmark_phys) / sizeof (uint64_t), bmark_phys, mt,
|
||||
NULL, 0, NULL);
|
||||
@@ -188,8 +194,9 @@ dsl_bookmark_create_sync(void *arg, dmu_tx_t *tx)
|
||||
for (nvpair_t *pair = nvlist_next_nvpair(dbca->dbca_bmarks, NULL);
|
||||
pair != NULL; pair = nvlist_next_nvpair(dbca->dbca_bmarks, pair)) {
|
||||
dsl_dataset_t *snapds, *bmark_fs;
|
||||
zfs_bookmark_phys_t bmark_phys;
|
||||
zfs_bookmark_phys_t bmark_phys = { 0 };
|
||||
char *shortname;
|
||||
uint32_t bmark_len = BOOKMARK_PHYS_SIZE_V1;
|
||||
|
||||
VERIFY0(dsl_dataset_hold(dp, fnvpair_value_string(pair),
|
||||
FTAG, &snapds));
|
||||
@@ -216,8 +223,7 @@ dsl_bookmark_create_sync(void *arg, dmu_tx_t *tx)
|
||||
|
||||
VERIFY0(zap_add(mos, bmark_fs->ds_bookmarks,
|
||||
shortname, sizeof (uint64_t),
|
||||
sizeof (zfs_bookmark_phys_t) / sizeof (uint64_t),
|
||||
&bmark_phys, tx));
|
||||
bmark_len / sizeof (uint64_t), &bmark_phys, tx));
|
||||
|
||||
spa_history_log_internal_ds(bmark_fs, "bookmark", tx,
|
||||
"name=%s creation_txg=%llu target_snap=%llu",
|
||||
|
||||
Reference in New Issue
Block a user