From f00ab3f22cc2c7f62cfd56be842945667b1d558f Mon Sep 17 00:00:00 2001 From: Tom Caputi Date: Mon, 4 Feb 2019 14:24:55 -0500 Subject: [PATCH] Detect and prevent mixed raw and non-raw sends Currently, there is an issue in the raw receive code where raw receives are allowed to happen on top of previously non-raw received datasets. This is a problem because the source-side dataset doesn't know about how the blocks on the destination were encrypted. As a result, any MAC in the objset's checksum-of-MACs tree that is a parent of both blocks encrypted on the source and blocks encrypted by the destination will be incorrect. This will result in authentication errors when we decrypt the dataset. This patch fixes this issue by adding a new check to the raw receive code. The code now maintains an "IVset guid", which acts as an identifier for the set of IVs used to encrypt a given snapshot. When a snapshot is raw received, the destination snapshot will take this value from the DRR_BEGIN payload. Non-raw receives and normal "zfs snap" operations will cause ZFS to generate a new IVset guid. When a raw incremental stream is received, ZFS will check that the "from" IVset guid in the stream matches that of the "from" destination snapshot. If they do not match, the code will error out the receive, preventing the problem. This patch requires an on-disk format change to add the IVset guids to snapshots and bookmarks. As a result, this patch has errata handling and a tunable to help affected users resolve the issue with as little interruption as possible. Reviewed-by: Paul Dagnelie Reviewed-by: Brian Behlendorf Reviewed-by: Matt Ahrens Signed-off-by: Tom Caputi Closes #8308 --- cmd/zpool/zpool_main.c | 22 +++ include/sys/dmu_recv.h | 2 + include/sys/dsl_crypt.h | 5 +- include/sys/dsl_dataset.h | 6 + include/sys/fs/zfs.h | 4 + lib/libzfs/libzfs_iter.c | 1 + lib/libzfs/libzfs_sendrecv.c | 14 ++ lib/libzfs_core/libzfs_core.c | 1 + man/man8/zfs.8 | 25 +++ module/zcommon/zfeature_common.c | 2 + module/zcommon/zfs_prop.c | 3 + module/zfs/dmu_recv.c | 62 ++++++-- module/zfs/dmu_send.c | 32 +++- module/zfs/dsl_bookmark.c | 40 ++++- module/zfs/dsl_crypt.c | 112 +++++++++++--- module/zfs/dsl_dataset.c | 31 ++++ module/zfs/spa.c | 10 ++ module/zfs/zcp_get.c | 9 ++ tests/runfiles/linux.run | 5 +- .../cli_root/zpool_get/zpool_get.cfg | 1 + .../cli_root/zpool_import/Makefile.am | 3 +- .../zpool_import/blockfiles/Makefile.am | 3 +- .../blockfiles/missing_ivset.dat.bz2 | Bin 0 -> 167066 bytes .../zpool_import/zpool_import_errata3.ksh | 5 +- .../zpool_import/zpool_import_errata4.ksh | 143 ++++++++++++++++++ .../tests/functional/rsend/Makefile.am | 1 + .../tests/functional/rsend/send_mixed_raw.ksh | 118 +++++++++++++++ 27 files changed, 607 insertions(+), 53 deletions(-) create mode 100644 tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/missing_ivset.dat.bz2 create mode 100755 tests/zfs-tests/tests/functional/cli_root/zpool_import/zpool_import_errata4.ksh create mode 100755 tests/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh diff --git a/cmd/zpool/zpool_main.c b/cmd/zpool/zpool_main.c index 68723a0e2a..c36003c987 100644 --- a/cmd/zpool/zpool_main.c +++ b/cmd/zpool/zpool_main.c @@ -2478,6 +2478,17 @@ show_import(nvlist_t *config) "old ones.\n")); break; + case ZPOOL_ERRATA_ZOL_8308_ENCRYPTION: + (void) printf(gettext(" action: Existing " + "encrypted datasets contain an on-disk " + "incompatibility which\n\tmay cause " + "on-disk corruption with 'zfs recv' and " + "which needs to be\n\tcorrected. Enable " + "the bookmark_v2 feature and backup " + "these datasets to new encrypted " + "datasets and\n\tdestroy the " + "old ones.\n")); + break; default: /* * All errata must contain an action message. @@ -7401,6 +7412,17 @@ status_callback(zpool_handle_t *zhp, void *data) "mount existing encrypted datasets readonly.\n")); break; + case ZPOOL_ERRATA_ZOL_8308_ENCRYPTION: + (void) printf(gettext("\tExisting encrypted datasets " + "contain an on-disk incompatibility\n\twhich " + "needs to be corrected.\n")); + (void) printf(gettext("action: To correct the issue " + "enable the bookmark_v2 feature and " + "backup\n\texisting encrypted datasets to new " + "encrypted datasets and\n\tdestroy the old " + "ones.\n")); + break; + default: /* * All errata which allow the pool to be imported diff --git a/include/sys/dmu_recv.h b/include/sys/dmu_recv.h index 4a0d477115..90002026be 100644 --- a/include/sys/dmu_recv.h +++ b/include/sys/dmu_recv.h @@ -51,7 +51,9 @@ typedef struct dmu_recv_cookie { struct avl_tree *drc_guid_to_ds_map; nvlist_t *drc_keynvl; zio_cksum_t drc_cksum; + uint64_t drc_fromsnapobj; uint64_t drc_newsnapobj; + uint64_t drc_ivset_guid; void *drc_owner; cred_t *drc_cred; } dmu_recv_cookie_t; diff --git a/include/sys/dsl_crypt.h b/include/sys/dsl_crypt.h index e01d53527e..c2c0a548a4 100644 --- a/include/sys/dsl_crypt.h +++ b/include/sys/dsl_crypt.h @@ -189,12 +189,13 @@ void key_mapping_rele(spa_t *spa, dsl_key_mapping_t *km, void *tag); int spa_keystore_lookup_key(spa_t *spa, uint64_t dsobj, void *tag, dsl_crypto_key_t **dck_out); -int dsl_crypto_populate_key_nvlist(struct dsl_dataset *ds, nvlist_t **nvl_out); +int dsl_crypto_populate_key_nvlist(struct dsl_dataset *ds, + uint64_t from_ivset_guid, nvlist_t **nvl_out); int dsl_crypto_recv_raw_key_check(struct dsl_dataset *ds, nvlist_t *nvl, dmu_tx_t *tx); void dsl_crypto_recv_raw_key_sync(struct dsl_dataset *ds, nvlist_t *nvl, dmu_tx_t *tx); -int dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, +int dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, uint64_t fromobj, dmu_objset_type_t ostype, nvlist_t *nvl, boolean_t do_key); int spa_keystore_change_key(const char *dsname, dsl_crypto_params_t *dcp); diff --git a/include/sys/dsl_dataset.h b/include/sys/dsl_dataset.h index 47a46f07d3..c464c70bd2 100644 --- a/include/sys/dsl_dataset.h +++ b/include/sys/dsl_dataset.h @@ -114,6 +114,12 @@ struct dsl_key_mapping; */ #define DS_FIELD_REMAP_DEADLIST "com.delphix:remap_deadlist" +/* + * This field is set to the ivset guid for encrypted snapshots. This is used + * for validating raw receives. + */ +#define DS_FIELD_IVSET_GUID "com.datto:ivset_guid" + /* * DS_FLAG_CI_DATASET is set if the dataset contains a file system whose * name lookups should be performed case-insensitively. diff --git a/include/sys/fs/zfs.h b/include/sys/fs/zfs.h index c4d26eb878..d25e8b5a5b 100644 --- a/include/sys/fs/zfs.h +++ b/include/sys/fs/zfs.h @@ -183,6 +183,7 @@ typedef enum { ZFS_PROP_KEYSTATUS, ZFS_PROP_REMAPTXG, /* not exposed to the user */ ZFS_PROP_SPECIAL_SMALL_BLOCKS, + ZFS_PROP_IVSET_GUID, /* not exposed to the user */ ZFS_NUM_PROPS } zfs_prop_t; @@ -975,6 +976,7 @@ typedef enum zpool_errata { ZPOOL_ERRATA_ZOL_2094_SCRUB, ZPOOL_ERRATA_ZOL_2094_ASYNC_DESTROY, ZPOOL_ERRATA_ZOL_6845_ENCRYPTION, + ZPOOL_ERRATA_ZOL_8308_ENCRYPTION, } zpool_errata_t; /* @@ -1264,6 +1266,8 @@ typedef enum { ZFS_ERR_IOC_ARG_REQUIRED, ZFS_ERR_IOC_ARG_BADTYPE, ZFS_ERR_WRONG_PARENT, + ZFS_ERR_FROM_IVSET_GUID_MISSING, + ZFS_ERR_FROM_IVSET_GUID_MISMATCH, } zfs_errno_t; /* diff --git a/lib/libzfs/libzfs_iter.c b/lib/libzfs/libzfs_iter.c index e765a7ee74..5e9a1ecae7 100644 --- a/lib/libzfs/libzfs_iter.c +++ b/lib/libzfs/libzfs_iter.c @@ -215,6 +215,7 @@ zfs_iter_bookmarks(zfs_handle_t *zhp, zfs_iter_f func, void *data) fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_GUID)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATETXG)); fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_CREATION)); + fnvlist_add_boolean(props, zfs_prop_to_name(ZFS_PROP_IVSET_GUID)); if ((err = lzc_get_bookmarks(zhp->zfs_name, props, &bmarks)) != 0) goto out; diff --git a/lib/libzfs/libzfs_sendrecv.c b/lib/libzfs/libzfs_sendrecv.c index 8096089f62..c140e5d303 100644 --- a/lib/libzfs/libzfs_sendrecv.c +++ b/lib/libzfs/libzfs_sendrecv.c @@ -4392,6 +4392,20 @@ zfs_receive_one(libzfs_handle_t *hdl, int infd, const char *tosnap, "destination %s space quota exceeded."), name); (void) zfs_error(hdl, EZFS_NOSPC, errbuf); break; + case ZFS_ERR_FROM_IVSET_GUID_MISSING: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "IV set guid missing. See errata %u at" + "http://zfsonlinux.org/msg/ZFS-8000-ER"), + ZPOOL_ERRATA_ZOL_8308_ENCRYPTION); + (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); + break; + case ZFS_ERR_FROM_IVSET_GUID_MISMATCH: + zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, + "IV set guid mismatch. See the 'zfs receive' " + "man page section\n discussing the limitations " + "of raw encrypted send streams.")); + (void) zfs_error(hdl, EZFS_BADSTREAM, errbuf); + break; case EBUSY: if (hastoken) { zfs_error_aux(hdl, dgettext(TEXT_DOMAIN, diff --git a/lib/libzfs_core/libzfs_core.c b/lib/libzfs_core/libzfs_core.c index 524a637e4a..6bbe76e0a4 100644 --- a/lib/libzfs_core/libzfs_core.c +++ b/lib/libzfs_core/libzfs_core.c @@ -1124,6 +1124,7 @@ lzc_bookmark(nvlist_t *bookmarks, nvlist_t **errlist) * "guid" - globally unique identifier of the snapshot it refers to * "createtxg" - txg when the snapshot it refers to was created * "creation" - timestamp when the snapshot it refers to was created + * "ivsetguid" - IVset guid for identifying encrypted snapshots * * The format of the returned nvlist as follows: * -> { diff --git a/man/man8/zfs.8 b/man/man8/zfs.8 index b51c91daa0..52143f7fcb 100644 --- a/man/man8/zfs.8 +++ b/man/man8/zfs.8 @@ -3845,6 +3845,31 @@ parameters with the .Fl o options. .Pp +The added security provided by raw sends adds some restrictions to the send +and receive process. ZFS will not allow a mix of raw receives and non-raw +receives. Specifically, any raw incremental receives that are attempted after +a non-raw receive will fail. Non-raw receives do not have this restriction and, +therefore, are always possible. Because of this, it is best practice to always +use either raw sends for their security benefits or non-raw sends for their +flexibility when working with encrypted datasets, but not a combination. +.Pp +The reason for this restriction stems from the inherent restrictions of the +AEAD ciphers that ZFS uses to encrypt data. When using ZFS native encryption, +each block of data is encrypted against a randomly generated number known as +the "initialization vector" (IV), which is stored in the filesystem metadata. +This number is required by the encryption algorithms whenever the data is to +be decrypted. Together, all of the IVs provided for all of the blocks in a +given snapshot are collectively called an "IV set". When ZFS performs a raw +send, the IV set is transferred from the source to the destination in the send +stream. When ZFS performs a non-raw send, the data is decrypted by the source +system and re-encrypted by the destination system, creating a snapshot with +effectively the same data, but a different IV set. In order for decryption to +work after a raw send, ZFS must ensure that the IV set used on both the source +and destination side match. When an incremental raw receive is performed on +top of an existing snapshot, ZFS will check to confirm that the "from" +snapshot on both the source and destination were using the same IV set, +ensuring the new IV set is consistent. +.Pp The name of the snapshot .Pq and file system, if a full stream is received that this subcommand creates depends on the argument type and the use of the diff --git a/module/zcommon/zfeature_common.c b/module/zcommon/zfeature_common.c index 74ff2b6570..dc0c1161f8 100644 --- a/module/zcommon/zfeature_common.c +++ b/module/zcommon/zfeature_common.c @@ -442,6 +442,7 @@ zpool_feature_init(void) { static const spa_feature_t bookmark_v2_deps[] = { SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_BOOKMARKS, SPA_FEATURE_NONE }; zfeature_register(SPA_FEATURE_BOOKMARK_V2, @@ -453,6 +454,7 @@ zpool_feature_init(void) { static const spa_feature_t encryption_deps[] = { SPA_FEATURE_EXTENSIBLE_DATASET, + SPA_FEATURE_BOOKMARK_V2, SPA_FEATURE_NONE }; zfeature_register(SPA_FEATURE_ENCRYPTION, diff --git a/module/zcommon/zfs_prop.c b/module/zcommon/zfs_prop.c index 4d5bc39e5a..dab749138a 100644 --- a/module/zcommon/zfs_prop.c +++ b/module/zcommon/zfs_prop.c @@ -559,6 +559,9 @@ zfs_prop_init(void) PROP_READONLY, ZFS_TYPE_DATASET, "UNIQUE"); zprop_register_hidden(ZFS_PROP_INCONSISTENT, "inconsistent", PROP_TYPE_NUMBER, PROP_READONLY, ZFS_TYPE_DATASET, "INCONSISTENT"); + zprop_register_hidden(ZFS_PROP_IVSET_GUID, "ivsetguid", + PROP_TYPE_NUMBER, PROP_READONLY, + ZFS_TYPE_DATASET | ZFS_TYPE_BOOKMARK, "IVSETGUID"); zprop_register_hidden(ZFS_PROP_PREV_SNAP, "prevsnap", PROP_TYPE_STRING, PROP_READONLY, ZFS_TYPE_FILESYSTEM | ZFS_TYPE_VOLUME, "PREVSNAP"); zprop_register_hidden(ZFS_PROP_PBKDF2_SALT, "pbkdf2salt", diff --git a/module/zfs/dmu_recv.c b/module/zfs/dmu_recv.c index 8794603185..e49a0f4aa4 100644 --- a/module/zfs/dmu_recv.c +++ b/module/zfs/dmu_recv.c @@ -72,7 +72,6 @@ typedef struct dmu_recv_begin_arg { dmu_recv_cookie_t *drba_cookie; cred_t *drba_cred; dsl_crypto_params_t *drba_dcp; - uint64_t drba_snapobj; } dmu_recv_begin_arg_t; static int @@ -128,7 +127,7 @@ recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds, dsl_dataset_t *snap; uint64_t obj = dsl_dataset_phys(ds)->ds_prev_snap_obj; - /* Can't perform a raw receive on top of a non-raw receive */ + /* Can't raw receive on top of an unencrypted dataset */ if (!encrypted && raw) return (SET_ERROR(EINVAL)); @@ -155,7 +154,7 @@ recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds, return (SET_ERROR(ENODEV)); if (drba->drba_cookie->drc_force) { - drba->drba_snapobj = obj; + drba->drba_cookie->drc_fromsnapobj = obj; } else { /* * If we are not forcing, there must be no @@ -165,7 +164,8 @@ recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds, dsl_dataset_rele(snap, FTAG); return (SET_ERROR(ETXTBSY)); } - drba->drba_snapobj = ds->ds_prev->ds_object; + drba->drba_cookie->drc_fromsnapobj = + ds->ds_prev->ds_object; } dsl_dataset_rele(snap, FTAG); @@ -200,7 +200,7 @@ recv_begin_check_existing_impl(dmu_recv_begin_arg_t *drba, dsl_dataset_t *ds, return (SET_ERROR(EINVAL)); } - drba->drba_snapobj = 0; + drba->drba_cookie->drc_fromsnapobj = 0; } return (0); @@ -440,7 +440,7 @@ dmu_recv_begin_sync(void *arg, dmu_tx_t *tx) * the raw cmd set. Raw incremental recvs do not use a dcp * since the encryption parameters are already set in stone. */ - if (dcp == NULL && drba->drba_snapobj == 0 && + if (dcp == NULL && drba->drba_cookie->drc_fromsnapobj == 0 && drba->drba_origin == NULL) { ASSERT3P(dcp, ==, NULL); dcp = &dummy_dcp; @@ -454,15 +454,15 @@ dmu_recv_begin_sync(void *arg, dmu_tx_t *tx) /* create temporary clone */ dsl_dataset_t *snap = NULL; - if (drba->drba_snapobj != 0) { + if (drba->drba_cookie->drc_fromsnapobj != 0) { VERIFY0(dsl_dataset_hold_obj(dp, - drba->drba_snapobj, FTAG, &snap)); + drba->drba_cookie->drc_fromsnapobj, FTAG, &snap)); ASSERT3P(dcp, ==, NULL); } dsobj = dsl_dataset_create_sync(ds->ds_dir, recv_clone_name, snap, crflags, drba->drba_cred, dcp, tx); - if (drba->drba_snapobj != 0) + if (drba->drba_cookie->drc_fromsnapobj != 0) dsl_dataset_rele(snap, FTAG); dsl_dataset_rele_flags(ds, dsflags, FTAG); } else { @@ -2526,11 +2526,16 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, * the keynvl away until then. */ err = dsl_crypto_recv_raw(spa_name(ra->os->os_spa), - drc->drc_ds->ds_object, drc->drc_drrb->drr_type, - keynvl, drc->drc_newfs); + drc->drc_ds->ds_object, drc->drc_fromsnapobj, + drc->drc_drrb->drr_type, keynvl, drc->drc_newfs); if (err != 0) goto out; + /* see comment in dmu_recv_end_sync() */ + drc->drc_ivset_guid = 0; + (void) nvlist_lookup_uint64(keynvl, "to_ivset_guid", + &drc->drc_ivset_guid); + if (!drc->drc_newfs) drc->drc_keynvl = fnvlist_dup(keynvl); } @@ -2591,10 +2596,10 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, sizeof (struct receive_record_arg) + ra->rrd->payload_size); ra->rrd = NULL; } - if (ra->next_rrd == NULL) - ra->next_rrd = kmem_zalloc(sizeof (*ra->next_rrd), KM_SLEEP); - ra->next_rrd->eos_marker = B_TRUE; - bqueue_enqueue(&rwa->q, ra->next_rrd, 1); + ASSERT3P(ra->rrd, ==, NULL); + ra->rrd = kmem_zalloc(sizeof (*ra->rrd), KM_SLEEP); + ra->rrd->eos_marker = B_TRUE; + bqueue_enqueue(&rwa->q, ra->rrd, 1); mutex_enter(&rwa->mutex); while (!rwa->done) { @@ -2635,6 +2640,14 @@ dmu_recv_stream(dmu_recv_cookie_t *drc, vnode_t *vp, offset_t *voffp, err = rwa->err; out: + /* + * If we hit an error before we started the receive_writer_thread + * we need to clean up the next_rrd we create by processing the + * DRR_BEGIN record. + */ + if (ra->next_rrd != NULL) + kmem_free(ra->next_rrd, sizeof (*ra->next_rrd)); + nvlist_free(begin_nvl); if ((featureflags & DMU_BACKUP_FEATURE_DEDUP) && (cleanup_fd != -1)) zfs_onexit_fd_rele(cleanup_fd); @@ -2838,6 +2851,25 @@ dmu_recv_end_sync(void *arg, dmu_tx_t *tx) drc->drc_newsnapobj = dsl_dataset_phys(drc->drc_ds)->ds_prev_snap_obj; } + + /* + * If this is a raw receive, the crypt_keydata nvlist will include + * a to_ivset_guid for us to set on the new snapshot. This value + * will override the value generated by the snapshot code. However, + * this value may not be present, because older implementations of + * the raw send code did not include this value, and we are still + * allowed to receive them if the zfs_disable_ivset_guid_check + * tunable is set, in which case we will leave the newly-generated + * value. + */ + if (drc->drc_raw && drc->drc_ivset_guid != 0) { + dmu_object_zapify(dp->dp_meta_objset, drc->drc_newsnapobj, + DMU_OT_DSL_DATASET, tx); + VERIFY0(zap_update(dp->dp_meta_objset, drc->drc_newsnapobj, + DS_FIELD_IVSET_GUID, sizeof (uint64_t), 1, + &drc->drc_ivset_guid, tx)); + } + zvol_create_minors(dp->dp_spa, drc->drc_tofs, B_TRUE); /* diff --git a/module/zfs/dmu_send.c b/module/zfs/dmu_send.c index 43e19ecbc1..ad64d666be 100644 --- a/module/zfs/dmu_send.c +++ b/module/zfs/dmu_send.c @@ -1119,9 +1119,13 @@ dmu_send_impl(void *tag, dsl_pool_t *dp, dsl_dataset_t *to_ds, } if (featureflags & DMU_BACKUP_FEATURE_RAW) { + uint64_t ivset_guid = (ancestor_zb != NULL) ? + ancestor_zb->zbm_ivset_guid : 0; + ASSERT(os->os_encrypted); - err = dsl_crypto_populate_key_nvlist(to_ds, &keynvl); + err = dsl_crypto_populate_key_nvlist(to_ds, + ivset_guid, &keynvl); if (err != 0) { fnvlist_free(nvl); goto out; @@ -1235,7 +1239,7 @@ dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, } if (fromsnap != 0) { - zfs_bookmark_phys_t zb; + zfs_bookmark_phys_t zb = { 0 }; boolean_t is_clone; err = dsl_dataset_hold_obj(dp, fromsnap, FTAG, &fromds); @@ -1244,12 +1248,25 @@ dmu_send_obj(const char *pool, uint64_t tosnap, uint64_t fromsnap, dsl_pool_rele(dp, FTAG); return (err); } - if (!dsl_dataset_is_before(ds, fromds, 0)) + if (!dsl_dataset_is_before(ds, fromds, 0)) { err = SET_ERROR(EXDEV); + dsl_dataset_rele(fromds, FTAG); + dsl_dataset_rele_flags(ds, dsflags, FTAG); + dsl_pool_rele(dp, FTAG); + return (err); + } + zb.zbm_creation_time = dsl_dataset_phys(fromds)->ds_creation_time; zb.zbm_creation_txg = dsl_dataset_phys(fromds)->ds_creation_txg; zb.zbm_guid = dsl_dataset_phys(fromds)->ds_guid; + + if (dsl_dataset_is_zapified(fromds)) { + (void) zap_lookup(dp->dp_meta_objset, + fromds->ds_object, DS_FIELD_IVSET_GUID, 8, 1, + &zb.zbm_ivset_guid); + } + is_clone = (fromds->ds_dir != ds->ds_dir); dsl_dataset_rele(fromds, FTAG); err = dmu_send_impl(FTAG, dp, ds, &zb, is_clone, @@ -1298,7 +1315,7 @@ dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, } if (fromsnap != NULL) { - zfs_bookmark_phys_t zb; + zfs_bookmark_phys_t zb = { 0 }; boolean_t is_clone = B_FALSE; int fsnamelen = strchr(tosnap, '@') - tosnap; @@ -1324,6 +1341,13 @@ dmu_send(const char *tosnap, const char *fromsnap, boolean_t embedok, dsl_dataset_phys(fromds)->ds_creation_txg; zb.zbm_guid = dsl_dataset_phys(fromds)->ds_guid; is_clone = (ds->ds_dir != fromds->ds_dir); + + if (dsl_dataset_is_zapified(fromds)) { + (void) zap_lookup(dp->dp_meta_objset, + fromds->ds_object, + DS_FIELD_IVSET_GUID, 8, 1, + &zb.zbm_ivset_guid); + } dsl_dataset_rele(fromds, FTAG); } } else { diff --git a/module/zfs/dsl_bookmark.c b/module/zfs/dsl_bookmark.c index 08e8355414..a32198402f 100644 --- a/module/zfs/dsl_bookmark.c +++ b/module/zfs/dsl_bookmark.c @@ -221,6 +221,26 @@ dsl_bookmark_create_sync(void *arg, dmu_tx_t *tx) bmark_phys.zbm_creation_time = dsl_dataset_phys(snapds)->ds_creation_time; + /* + * If the dataset is encrypted create a larger bookmark to + * accommodate the IVset guid. The IVset guid was added + * after the encryption feature to prevent a problem with + * raw sends. If we encounter an encrypted dataset without + * an IVset guid we fall back to a normal bookmark. + */ + if (snapds->ds_dir->dd_crypto_obj != 0 && + spa_feature_is_enabled(dp->dp_spa, + SPA_FEATURE_BOOKMARK_V2)) { + int err = zap_lookup(mos, snapds->ds_object, + DS_FIELD_IVSET_GUID, sizeof (uint64_t), 1, + &bmark_phys.zbm_ivset_guid); + if (err == 0) { + bmark_len = BOOKMARK_PHYS_SIZE_V2; + spa_feature_incr(dp->dp_spa, + SPA_FEATURE_BOOKMARK_V2, tx); + } + } + VERIFY0(zap_add(mos, bmark_fs->ds_bookmarks, shortname, sizeof (uint64_t), bmark_len / sizeof (uint64_t), &bmark_phys, tx)); @@ -273,7 +293,7 @@ dsl_get_bookmarks_impl(dsl_dataset_t *ds, nvlist_t *props, nvlist_t *outnvl) zap_cursor_retrieve(&zc, &attr) == 0; zap_cursor_advance(&zc)) { char *bmark_name = attr.za_name; - zfs_bookmark_phys_t bmark_phys; + zfs_bookmark_phys_t bmark_phys = { 0 }; err = dsl_dataset_bmark_lookup(ds, bmark_name, &bmark_phys); ASSERT3U(err, !=, ENOENT); @@ -296,6 +316,11 @@ dsl_get_bookmarks_impl(dsl_dataset_t *ds, nvlist_t *props, nvlist_t *outnvl) dsl_prop_nvlist_add_uint64(out_props, ZFS_PROP_CREATION, bmark_phys.zbm_creation_time); } + if (nvlist_exists(props, + zfs_prop_to_name(ZFS_PROP_IVSET_GUID))) { + dsl_prop_nvlist_add_uint64(out_props, + ZFS_PROP_IVSET_GUID, bmark_phys.zbm_ivset_guid); + } fnvlist_add_nvlist(outnvl, bmark_name, out_props); fnvlist_free(out_props); @@ -343,13 +368,26 @@ typedef struct dsl_bookmark_destroy_arg { static int dsl_dataset_bookmark_remove(dsl_dataset_t *ds, const char *name, dmu_tx_t *tx) { + int err; objset_t *mos = ds->ds_dir->dd_pool->dp_meta_objset; uint64_t bmark_zapobj = ds->ds_bookmarks; matchtype_t mt = 0; + uint64_t int_size, num_ints; if (dsl_dataset_phys(ds)->ds_flags & DS_FLAG_CI_DATASET) mt = MT_NORMALIZE; + err = zap_length(mos, bmark_zapobj, name, &int_size, &num_ints); + if (err != 0) + return (err); + + ASSERT3U(int_size, ==, sizeof (uint64_t)); + + if (num_ints * int_size > BOOKMARK_PHYS_SIZE_V1) { + spa_feature_decr(dmu_objset_spa(mos), + SPA_FEATURE_BOOKMARK_V2, tx); + } + return (zap_remove_norm(mos, bmark_zapobj, name, mt, tx)); } diff --git a/module/zfs/dsl_crypt.c b/module/zfs/dsl_crypt.c index 9271128b96..a0e7fcce47 100644 --- a/module/zfs/dsl_crypt.c +++ b/module/zfs/dsl_crypt.c @@ -72,6 +72,13 @@ * object is also refcounted. */ +/* + * This tunable allows datasets to be raw received even if the stream does + * not include IVset guids or if the guids don't match. This is used as part + * of the resolution for ZPOOL_ERRATA_ZOL_8308_ENCRYPTION. + */ +int zfs_disable_ivset_guid_check = 0; + static void dsl_wrapping_key_hold(dsl_wrapping_key_t *wkey, void *tag) { @@ -1963,21 +1970,23 @@ dsl_dataset_create_crypt_sync(uint64_t dsobj, dsl_dir_t *dd, typedef struct dsl_crypto_recv_key_arg { uint64_t dcrka_dsobj; + uint64_t dcrka_fromobj; dmu_objset_type_t dcrka_ostype; nvlist_t *dcrka_nvl; boolean_t dcrka_do_key; } dsl_crypto_recv_key_arg_t; static int -dsl_crypto_recv_raw_objset_check(dsl_dataset_t *ds, dmu_objset_type_t ostype, - nvlist_t *nvl, dmu_tx_t *tx) +dsl_crypto_recv_raw_objset_check(dsl_dataset_t *ds, dsl_dataset_t *fromds, + dmu_objset_type_t ostype, nvlist_t *nvl, dmu_tx_t *tx) { int ret; objset_t *os; dnode_t *mdn; uint8_t *buf = NULL; uint_t len; - uint64_t intval, nlevels, blksz, ibs, nblkptr, maxblkid; + uint64_t intval, nlevels, blksz, ibs; + uint64_t nblkptr, maxblkid; if (ostype != DMU_OST_ZFS && ostype != DMU_OST_ZVOL) return (SET_ERROR(EINVAL)); @@ -2044,6 +2053,30 @@ dsl_crypto_recv_raw_objset_check(dsl_dataset_t *ds, dmu_objset_type_t ostype, } rrw_exit(&ds->ds_bp_rwlock, FTAG); + /* + * Check that the ivset guid of the fromds matches the one from the + * send stream. Older versions of the encryption code did not have + * an ivset guid on the from dataset and did not send one in the + * stream. For these streams we provide the + * zfs_disable_ivset_guid_check tunable to allow these datasets to + * be received with a generated ivset guid. + */ + if (fromds != NULL && !zfs_disable_ivset_guid_check) { + uint64_t from_ivset_guid = 0; + intval = 0; + + (void) nvlist_lookup_uint64(nvl, "from_ivset_guid", &intval); + (void) zap_lookup(tx->tx_pool->dp_meta_objset, + fromds->ds_object, DS_FIELD_IVSET_GUID, + sizeof (from_ivset_guid), 1, &from_ivset_guid); + + if (intval == 0 || from_ivset_guid == 0) + return (SET_ERROR(ZFS_ERR_FROM_IVSET_GUID_MISSING)); + + if (intval != from_ivset_guid) + return (SET_ERROR(ZFS_ERR_FROM_IVSET_GUID_MISMATCH)); + } + return (0); } @@ -2063,7 +2096,11 @@ dsl_crypto_recv_raw_objset_sync(dsl_dataset_t *ds, dmu_objset_type_t ostype, VERIFY0(dmu_objset_from_ds(ds, &os)); mdn = DMU_META_DNODE(os); - /* fetch the values we need from the nvlist */ + /* + * Fetch the values we need from the nvlist. "to_ivset_guid" must + * be set on the snapshot, which doesn't exist yet. The receive + * code will take care of this for us later. + */ compress = fnvlist_lookup_uint64(nvl, "mdn_compress"); checksum = fnvlist_lookup_uint64(nvl, "mdn_checksum"); nlevels = fnvlist_lookup_uint64(nvl, "mdn_nlevels"); @@ -2127,7 +2164,7 @@ dsl_crypto_recv_raw_key_check(dsl_dataset_t *ds, nvlist_t *nvl, dmu_tx_t *tx) objset_t *mos = tx->tx_pool->dp_meta_objset; uint8_t *buf = NULL; uint_t len; - uint64_t intval, guid, version; + uint64_t intval, key_guid, version; boolean_t is_passphrase = B_FALSE; ASSERT(dsl_dataset_phys(ds)->ds_flags & DS_FLAG_INCONSISTENT); @@ -2152,10 +2189,10 @@ dsl_crypto_recv_raw_key_check(dsl_dataset_t *ds, nvlist_t *nvl, dmu_tx_t *tx) */ if (ds->ds_dir->dd_crypto_obj != 0) { ret = zap_lookup(mos, ds->ds_dir->dd_crypto_obj, - DSL_CRYPTO_KEY_GUID, 8, 1, &guid); + DSL_CRYPTO_KEY_GUID, 8, 1, &key_guid); if (ret != 0) return (ret); - if (intval != guid) + if (intval != key_guid) return (SET_ERROR(EACCES)); } @@ -2221,13 +2258,13 @@ dsl_crypto_recv_raw_key_sync(dsl_dataset_t *ds, nvlist_t *nvl, dmu_tx_t *tx) uint_t len; uint64_t rddobj, one = 1; uint8_t *keydata, *hmac_keydata, *iv, *mac; - uint64_t crypt, guid, keyformat, iters, salt; + uint64_t crypt, key_guid, keyformat, iters, salt; uint64_t version = ZIO_CRYPT_KEY_CURRENT_VERSION; char *keylocation = "prompt"; /* lookup the values we need to create the DSL Crypto Key */ crypt = fnvlist_lookup_uint64(nvl, DSL_CRYPTO_KEY_CRYPTO_SUITE); - guid = fnvlist_lookup_uint64(nvl, DSL_CRYPTO_KEY_GUID); + key_guid = fnvlist_lookup_uint64(nvl, DSL_CRYPTO_KEY_GUID); keyformat = fnvlist_lookup_uint64(nvl, zfs_prop_to_name(ZFS_PROP_KEYFORMAT)); iters = fnvlist_lookup_uint64(nvl, @@ -2282,7 +2319,7 @@ dsl_crypto_recv_raw_key_sync(dsl_dataset_t *ds, nvlist_t *nvl, dmu_tx_t *tx) /* sync the key data to the ZAP object on disk */ dsl_crypto_key_sync_impl(mos, dd->dd_crypto_obj, crypt, - rddobj, guid, iv, mac, keydata, hmac_keydata, keyformat, salt, + rddobj, key_guid, iv, mac, keydata, hmac_keydata, keyformat, salt, iters, tx); } @@ -2291,17 +2328,24 @@ dsl_crypto_recv_key_check(void *arg, dmu_tx_t *tx) { int ret; dsl_crypto_recv_key_arg_t *dcrka = arg; - dsl_dataset_t *ds = NULL; + dsl_dataset_t *ds = NULL, *fromds = NULL; ret = dsl_dataset_hold_obj(tx->tx_pool, dcrka->dcrka_dsobj, FTAG, &ds); if (ret != 0) - goto error; + goto out; - ret = dsl_crypto_recv_raw_objset_check(ds, + if (dcrka->dcrka_fromobj != 0) { + ret = dsl_dataset_hold_obj(tx->tx_pool, dcrka->dcrka_fromobj, + FTAG, &fromds); + if (ret != 0) + goto out; + } + + ret = dsl_crypto_recv_raw_objset_check(ds, fromds, dcrka->dcrka_ostype, dcrka->dcrka_nvl, tx); if (ret != 0) - goto error; + goto out; /* * We run this check even if we won't be doing this part of @@ -2310,14 +2354,13 @@ dsl_crypto_recv_key_check(void *arg, dmu_tx_t *tx) */ ret = dsl_crypto_recv_raw_key_check(ds, dcrka->dcrka_nvl, tx); if (ret != 0) - goto error; + goto out; - dsl_dataset_rele(ds, FTAG); - return (0); - -error: +out: if (ds != NULL) dsl_dataset_rele(ds, FTAG); + if (fromds != NULL) + dsl_dataset_rele(fromds, FTAG); return (ret); } @@ -2342,12 +2385,13 @@ dsl_crypto_recv_key_sync(void *arg, dmu_tx_t *tx) * without wrapping it. */ int -dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, +dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, uint64_t fromobj, dmu_objset_type_t ostype, nvlist_t *nvl, boolean_t do_key) { dsl_crypto_recv_key_arg_t dcrka; dcrka.dcrka_dsobj = dsobj; + dcrka.dcrka_fromobj = fromobj; dcrka.dcrka_ostype = ostype; dcrka.dcrka_nvl = nvl; dcrka.dcrka_do_key = do_key; @@ -2357,7 +2401,8 @@ dsl_crypto_recv_raw(const char *poolname, uint64_t dsobj, } int -dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) +dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, uint64_t from_ivset_guid, + nvlist_t **nvl_out) { int ret; objset_t *os; @@ -2368,8 +2413,9 @@ dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) dsl_dir_t *rdd = NULL; dsl_pool_t *dp = ds->ds_dir->dd_pool; objset_t *mos = dp->dp_meta_objset; - uint64_t crypt = 0, guid = 0, format = 0; + uint64_t crypt = 0, key_guid = 0, format = 0; uint64_t iters = 0, salt = 0, version = 0; + uint64_t to_ivset_guid = 0; uint8_t raw_keydata[MASTER_KEY_MAX_LEN]; uint8_t raw_hmac_keydata[SHA512_HMAC_KEYLEN]; uint8_t iv[WRAPPING_IV_LEN]; @@ -2390,7 +2436,7 @@ dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) if (ret != 0) goto error; - ret = zap_lookup(mos, dckobj, DSL_CRYPTO_KEY_GUID, 8, 1, &guid); + ret = zap_lookup(mos, dckobj, DSL_CRYPTO_KEY_GUID, 8, 1, &key_guid); if (ret != 0) goto error; @@ -2414,6 +2460,12 @@ dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) if (ret != 0) goto error; + /* see zfs_disable_ivset_guid_check tunable for errata info */ + ret = zap_lookup(mos, ds->ds_object, DS_FIELD_IVSET_GUID, 8, 1, + &to_ivset_guid); + if (ret != 0) + ASSERT3U(dp->dp_spa->spa_errata, !=, 0); + /* * We don't support raw sends of legacy on-disk formats. See the * comment in dsl_crypto_recv_key_check() for details. @@ -2463,7 +2515,7 @@ dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) dsl_pool_config_exit(dp, FTAG); fnvlist_add_uint64(nvl, DSL_CRYPTO_KEY_CRYPTO_SUITE, crypt); - fnvlist_add_uint64(nvl, DSL_CRYPTO_KEY_GUID, guid); + fnvlist_add_uint64(nvl, DSL_CRYPTO_KEY_GUID, key_guid); fnvlist_add_uint64(nvl, DSL_CRYPTO_KEY_VERSION, version); VERIFY0(nvlist_add_uint8_array(nvl, DSL_CRYPTO_KEY_MASTER_KEY, raw_keydata, MASTER_KEY_MAX_LEN)); @@ -2485,6 +2537,8 @@ dsl_crypto_populate_key_nvlist(dsl_dataset_t *ds, nvlist_t **nvl_out) fnvlist_add_uint64(nvl, "mdn_indblkshift", mdn->dn_indblkshift); fnvlist_add_uint64(nvl, "mdn_nblkptr", mdn->dn_nblkptr); fnvlist_add_uint64(nvl, "mdn_maxblkid", mdn->dn_maxblkid); + fnvlist_add_uint64(nvl, "to_ivset_guid", to_ivset_guid); + fnvlist_add_uint64(nvl, "from_ivset_guid", from_ivset_guid); *nvl_out = nvl; return (0); @@ -2595,6 +2649,10 @@ dsl_dataset_crypt_stats(dsl_dataset_t *ds, nvlist_t *nv) zfs_prop_to_name(ZFS_PROP_PBKDF2_ITERS), 8, 1, &intval) == 0) { dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_PBKDF2_ITERS, intval); } + if (zap_lookup(dd->dd_pool->dp_meta_objset, ds->ds_object, + DS_FIELD_IVSET_GUID, 8, 1, &intval) == 0) { + dsl_prop_nvlist_add_uint64(nv, ZFS_PROP_IVSET_GUID, intval); + } if (dsl_dir_get_encryption_root_ddobj(dd, &intval) == 0) { VERIFY0(dsl_dir_hold_obj(dd->dd_pool, intval, NULL, FTAG, @@ -2829,3 +2887,9 @@ error: return (ret); } + +#if defined(_KERNEL) +module_param(zfs_disable_ivset_guid_check, int, 0644); +MODULE_PARM_DESC(zfs_disable_ivset_guid_check, + "Set to allow raw receives without IVset guids"); +#endif diff --git a/module/zfs/dsl_dataset.c b/module/zfs/dsl_dataset.c index ad944e5b8e..086750fed9 100644 --- a/module/zfs/dsl_dataset.c +++ b/module/zfs/dsl_dataset.c @@ -621,6 +621,13 @@ dsl_dataset_hold_obj(dsl_pool_t *dp, uint64_t dsobj, void *tag, ds->ds_reserved = ds->ds_quota = 0; } + if (err == 0 && ds->ds_dir->dd_crypto_obj != 0 && + ds->ds_is_snapshot && + zap_contains(mos, dsobj, DS_FIELD_IVSET_GUID) != 0) { + dp->dp_spa->spa_errata = + ZPOOL_ERRATA_ZOL_8308_ENCRYPTION; + } + dsl_deadlist_open(&ds->ds_deadlist, mos, dsl_dataset_phys(ds)->ds_deadlist_obj); uint64_t remap_deadlist_obj = @@ -1702,6 +1709,30 @@ dsl_dataset_snapshot_sync_impl(dsl_dataset_t *ds, const char *snapname, sizeof (remap_deadlist_obj), 1, &remap_deadlist_obj, tx)); } + /* + * Create a ivset guid for this snapshot if the dataset is + * encrypted. This may be overridden by a raw receive. A + * previous implementation of this code did not have this + * field as part of the on-disk format for ZFS encryption + * (see errata #4). As part of the remediation for this + * issue, we ask the user to enable the bookmark_v2 feature + * which is now a dependency of the encryption feature. We + * use this as a heuristic to determine when the user has + * elected to correct any datasets created with the old code. + * As a result, we only do this step if the bookmark_v2 + * feature is enabled, which limits the number of states a + * given pool / dataset can be in with regards to terms of + * correcting the issue. + */ + if (ds->ds_dir->dd_crypto_obj != 0 && + spa_feature_is_enabled(dp->dp_spa, SPA_FEATURE_BOOKMARK_V2)) { + uint64_t ivset_guid = unique_create(); + + dmu_object_zapify(mos, dsobj, DMU_OT_DSL_DATASET, tx); + VERIFY0(zap_add(mos, dsobj, DS_FIELD_IVSET_GUID, + sizeof (ivset_guid), 1, &ivset_guid, tx)); + } + ASSERT3U(dsl_dataset_phys(ds)->ds_prev_snap_txg, <, tx->tx_txg); dsl_dataset_phys(ds)->ds_prev_snap_obj = dsobj; dsl_dataset_phys(ds)->ds_prev_snap_txg = crtxg; diff --git a/module/zfs/spa.c b/module/zfs/spa.c index bbe2f89629..d95a43001e 100644 --- a/module/zfs/spa.c +++ b/module/zfs/spa.c @@ -3360,6 +3360,16 @@ spa_ld_check_features(spa_t *spa, boolean_t *missing_feat_writep) return (spa_vdev_err(rvd, VDEV_AUX_CORRUPT_DATA, EIO)); } + /* + * Encryption was added before bookmark_v2, even though bookmark_v2 + * is now a dependency. If this pool has encryption enabled without + * bookmark_v2, trigger an errata message. + */ + if (spa_feature_is_enabled(spa, SPA_FEATURE_ENCRYPTION) && + !spa_feature_is_enabled(spa, SPA_FEATURE_BOOKMARK_V2)) { + spa->spa_errata = ZPOOL_ERRATA_ZOL_8308_ENCRYPTION; + } + return (0); } diff --git a/module/zfs/zcp_get.c b/module/zfs/zcp_get.c index 2481bb1fe2..ed98f0d102 100644 --- a/module/zfs/zcp_get.c +++ b/module/zfs/zcp_get.c @@ -411,6 +411,15 @@ get_special_prop(lua_State *state, dsl_dataset_t *ds, const char *dsname, case ZFS_PROP_INCONSISTENT: numval = dsl_get_inconsistent(ds); break; + case ZFS_PROP_IVSET_GUID: + if (dsl_dataset_is_zapified(ds)) { + error = zap_lookup(ds->ds_dir->dd_pool->dp_meta_objset, + ds->ds_object, DS_FIELD_IVSET_GUID, + sizeof (numval), 1, &numval); + } else { + error = ENOENT; + } + break; case ZFS_PROP_RECEIVE_RESUME_TOKEN: { char *token = get_receive_resume_stats_impl(ds); diff --git a/tests/runfiles/linux.run b/tests/runfiles/linux.run index 917bf24f92..6987173353 100644 --- a/tests/runfiles/linux.run +++ b/tests/runfiles/linux.run @@ -378,7 +378,7 @@ tests = ['zpool_import_001_pos', 'zpool_import_002_pos', 'zpool_import_missing_002_pos', 'zpool_import_missing_003_pos', 'zpool_import_rename_001_pos', 'zpool_import_all_001_pos', 'zpool_import_encrypted', 'zpool_import_encrypted_load', - 'zpool_import_errata3', + 'zpool_import_errata3', 'zpool_import_errata4', 'import_cachefile_device_added', 'import_cachefile_device_removed', 'import_cachefile_device_replaced', @@ -793,7 +793,8 @@ tests = ['rsend_001_pos', 'rsend_002_pos', 'rsend_003_pos', 'rsend_004_pos', 'send-c_embedded_blocks', 'send-c_resume', 'send-cpL_varied_recsize', 'send-c_recv_dedup', 'send_encrypted_files', 'send_encrypted_heirarchy', 'send_encrypted_props', 'send_freeobjects', 'send_realloc_dnode_size', - 'send_holds', 'send_hole_birth', 'send-wDR_encrypted_zvol'] + 'send_holds', 'send_hole_birth', 'send_mixed_raw', + 'send-wDR_encrypted_zvol'] tags = ['functional', 'rsend'] [tests/functional/scrub_mirror] diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg b/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg index 48a32174fa..b9ede86ede 100644 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_get/zpool_get.cfg @@ -88,5 +88,6 @@ if is_linux; then "feature@project_quota" "feature@allocation_classes" "feature@resilver_defer" + "feature@bookmark_v2" ) fi diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.am b/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.am index 6f0f5d0b86..ad0f9c46ed 100644 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.am +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_import/Makefile.am @@ -39,7 +39,8 @@ dist_pkgdata_SCRIPTS = \ zpool_import_rename_001_pos.ksh \ zpool_import_encrypted.ksh \ zpool_import_encrypted_load.ksh \ - zpool_import_errata3.ksh + zpool_import_errata3.ksh \ + zpool_import_errata4.ksh dist_pkgdata_DATA = \ zpool_import.cfg \ diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.am b/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.am index 74ae609798..dc3685e4b9 100644 --- a/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.am +++ b/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/Makefile.am @@ -1,4 +1,5 @@ pkgdatadir = $(datadir)/@PACKAGE@/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles dist_pkgdata_DATA = \ unclean_export.dat.bz2 \ - cryptv0.dat.bz2 + cryptv0.dat.bz2 \ + missing_ivset.dat.bz2 diff --git a/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/missing_ivset.dat.bz2 b/tests/zfs-tests/tests/functional/cli_root/zpool_import/blockfiles/missing_ivset.dat.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2b91d9003b855828258a7192d60db8797cf3edf7 GIT binary patch literal 167066 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 z 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%0AN;Q!ZAy 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 /$TESTPOOL/$POOL_FILE + return 0 +} + +function cleanup +{ + log_must set_tunable32 zfs_disable_ivset_guid_check 0 + poolexists $POOL_NAME && log_must zpool destroy $POOL_NAME + [[ -e /$TESTPOOL/$POOL_FILE ]] && rm /$TESTPOOL/$POOL_FILE + return 0 +} +log_onexit cleanup + +log_assert "Verify that Errata 4 is properly handled" + +function has_ivset_guid # dataset +{ + ds="$1" + ivset_guid=$(get_prop ivsetguid $ds) + + if [ "$ivset_guid" == "-" ]; then + return 1 + else + return 0 + fi +} + +# 1. Import a pre-packaged pool with Errata #4 and verify its state +uncompress_pool +log_must zpool import -d /$TESTPOOL/ $POOL_NAME +log_must eval "zpool status $POOL_NAME | grep -q 'Errata #4'" +log_must eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" +bm2_value=$(zpool get -H -o value feature@bookmark_v2 $POOL_NAME) +if [ "$bm2_value" != "disabled" ]; then + log_fail "initial pool's bookmark_v2 feature is not disabled" +fi + +log_mustnot has_ivset_guid $POOL_NAME/testfs@snap1 +log_mustnot has_ivset_guid $POOL_NAME/testfs@snap2 +log_mustnot has_ivset_guid $POOL_NAME/testfs@snap3 +log_mustnot has_ivset_guid $POOL_NAME/testvol@snap1 +log_mustnot has_ivset_guid $POOL_NAME/testvol@snap2 +log_mustnot has_ivset_guid $POOL_NAME/testvol@snap3 + +# 2. Prepare pool to fix existing datasets +log_must zpool set feature@bookmark_v2=enabled $POOL_NAME +log_must set_tunable32 zfs_disable_ivset_guid_check 1 +log_must zfs create $POOL_NAME/fixed + +# 3. Use raw sends to fix datasets +log_must eval "zfs send -w $POOL_NAME/testfs@snap1 | \ + zfs recv $POOL_NAME/fixed/testfs" +log_must eval "zfs send -w -i @snap1 $POOL_NAME/testfs@snap2 | \ + zfs recv $POOL_NAME/fixed/testfs" +log_must eval \ + "zfs send -w -i $POOL_NAME/testfs#snap2 $POOL_NAME/testfs@snap3 | \ + zfs recv $POOL_NAME/fixed/testfs" + +log_must eval "zfs send -w $POOL_NAME/testvol@snap1 | \ + zfs recv $POOL_NAME/fixed/testvol" +log_must eval "zfs send -w -i @snap1 $POOL_NAME/testvol@snap2 | \ + zfs recv $POOL_NAME/fixed/testvol" +log_must eval \ + "zfs send -w -i $POOL_NAME/testvol#snap2 $POOL_NAME/testvol@snap3 | \ + zfs recv $POOL_NAME/fixed/testvol" + +# 4. Ensure fixed datasets match their initial counterparts +log_must eval "echo 'password' | zfs load-key $POOL_NAME/testfs" +log_must eval "echo 'password' | zfs load-key $POOL_NAME/testvol" +log_must eval "echo 'password' | zfs load-key $POOL_NAME/fixed/testfs" +log_must eval "echo 'password' | zfs load-key $POOL_NAME/fixed/testvol" +log_must zfs mount $POOL_NAME/testfs +log_must zfs mount $POOL_NAME/fixed/testfs +block_device_wait + +old_mntpnt=$(get_prop mountpoint $POOL_NAME/testfs) +new_mntpnt=$(get_prop mountpoint $POOL_NAME/fixed/testfs) +log_must diff -r "$old_mntpnt" "$new_mntpnt" +log_must diff /dev/zvol/$POOL_NAME/testvol /dev/zvol/$POOL_NAME/fixed/testvol + +log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap1 +log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap2 +log_must has_ivset_guid $POOL_NAME/fixed/testfs@snap3 +log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap1 +log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap2 +log_must has_ivset_guid $POOL_NAME/fixed/testvol@snap3 + +# 5. Destroy the initial datasets and verify the errata is gone +log_must zfs destroy -r $POOL_NAME/testfs +log_must zfs destroy -r $POOL_NAME/testvol + +log_must zpool export $POOL_NAME +log_must zpool import -d /$TESTPOOL/ $POOL_NAME +log_mustnot eval "zpool status $POOL_NAME | grep -q 'Errata #4'" +log_mustnot eval "zpool status $POOL_NAME | grep -q ZFS-8000-ER" +log_pass "Errata 4 is properly handled" diff --git a/tests/zfs-tests/tests/functional/rsend/Makefile.am b/tests/zfs-tests/tests/functional/rsend/Makefile.am index 0b15f8d2bb..b0c68c5be5 100644 --- a/tests/zfs-tests/tests/functional/rsend/Makefile.am +++ b/tests/zfs-tests/tests/functional/rsend/Makefile.am @@ -43,6 +43,7 @@ dist_pkgdata_SCRIPTS = \ send_realloc_dnode_size.ksh \ send_holds.ksh \ send_hole_birth.ksh \ + send_mixed_raw.ksh \ send-wDR_encrypted_zvol.ksh dist_pkgdata_DATA = \ diff --git a/tests/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh b/tests/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh new file mode 100755 index 0000000000..eea535af11 --- /dev/null +++ b/tests/zfs-tests/tests/functional/rsend/send_mixed_raw.ksh @@ -0,0 +1,118 @@ +#!/bin/ksh -p +# +# CDDL HEADER START +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet at +# http://www.illumos.org/license/CDDL. +# +# CDDL HEADER END +# +# +# Copyright (c) 2019 Datto, Inc. All rights reserved. +# + +. $STF_SUITE/include/libtest.shlib + +# +# DESCRIPTION: +# Verify that 'zfs receive' produces an error when mixing +# raw and non-raw sends in a way that would break IV set +# consistency. +# +# STRATEGY: +# 1. Create an initial dataset with 3 snapshots. +# 2. Perform a raw send of the first snapshot to 2 other datasets. +# 3. Perform a non-raw send of the second snapshot to one of +# the other datasets. Perform a raw send from this dataset to +# the last one. +# 4. Attempt to raw send the final snapshot of the first dataset +# to the other 2 datasets, which should fail. +# 5. Repeat steps 1-4, but using bookmarks for incremental sends. +# +# +# A B C notes +# ------------------------------------------------------------------------------ +# snap1 ---raw---> snap1 --raw--> snap1 # all snaps initialized via raw send +# snap2 -non-raw-> snap2 --raw--> snap2 # A sends non-raw to B, B sends raw to C +# snap3 ------------raw---------> snap3 # attempt send to C (should fail) +# + + +verify_runnable "both" + +function cleanup +{ + datasetexists $TESTPOOL/$TESTFS3 && \ + log_must zfs destroy -r $TESTPOOL/$TESTFS3 + datasetexists $TESTPOOL/$TESTFS2 && \ + log_must zfs destroy -r $TESTPOOL/$TESTFS2 + datasetexists $TESTPOOL/$TESTFS1 && \ + log_must zfs destroy -r $TESTPOOL/$TESTFS1 +} +log_onexit cleanup + +log_assert "Mixing raw and non-raw receives should fail" + +typeset passphrase="password" + +log_must eval "echo $passphrase | zfs create -o encryption=on" \ + "-o keyformat=passphrase $TESTPOOL/$TESTFS1" + +log_must zfs snapshot $TESTPOOL/$TESTFS1@1 +log_must touch /$TESTPOOL/$TESTFS1/a +log_must zfs snapshot $TESTPOOL/$TESTFS1@2 +log_must touch /$TESTPOOL/$TESTFS1/b +log_must zfs snapshot $TESTPOOL/$TESTFS1@3 + +# Testing with snapshots +log_must eval "zfs send -w $TESTPOOL/$TESTFS1@1 |" \ + "zfs receive $TESTPOOL/$TESTFS2" +log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS2" +log_must eval "zfs send -w $TESTPOOL/$TESTFS2@1 |" \ + "zfs receive $TESTPOOL/$TESTFS3" +log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS3" + +log_must eval "zfs send -i $TESTPOOL/$TESTFS1@1 $TESTPOOL/$TESTFS1@2 |" \ + "zfs receive $TESTPOOL/$TESTFS2" +log_must eval "zfs send -w -i $TESTPOOL/$TESTFS2@1 $TESTPOOL/$TESTFS2@2 |" \ + "zfs receive $TESTPOOL/$TESTFS3" + +log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS1@2 $TESTPOOL/$TESTFS1@3 |" \ + "zfs receive $TESTPOOL/$TESTFS2" +log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS2@2 $TESTPOOL/$TESTFS2@3 |" \ + "zfs receive $TESTPOOL/$TESTFS3" + +log_must zfs destroy -r $TESTPOOL/$TESTFS3 +log_must zfs destroy -r $TESTPOOL/$TESTFS2 + +# Testing with bookmarks +log_must zfs bookmark $TESTPOOL/$TESTFS1@1 $TESTPOOL/$TESTFS1#b1 +log_must zfs bookmark $TESTPOOL/$TESTFS1@2 $TESTPOOL/$TESTFS1#b2 + +log_must eval "zfs send -w $TESTPOOL/$TESTFS1@1 |" \ + "zfs receive $TESTPOOL/$TESTFS2" +log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS2" + +log_must zfs bookmark $TESTPOOL/$TESTFS2@1 $TESTPOOL/$TESTFS2#b1 + +log_must eval "zfs send -w $TESTPOOL/$TESTFS2@1 |" \ + "zfs receive $TESTPOOL/$TESTFS3" +log_must eval "echo $passphrase | zfs load-key $TESTPOOL/$TESTFS3" + +log_must eval "zfs send -i $TESTPOOL/$TESTFS1#b1 $TESTPOOL/$TESTFS1@2 |" \ + "zfs receive $TESTPOOL/$TESTFS2" +log_must eval "zfs send -w -i $TESTPOOL/$TESTFS2#b1 $TESTPOOL/$TESTFS2@2 |" \ + "zfs receive $TESTPOOL/$TESTFS3" + +log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS1#b2" \ + "$TESTPOOL/$TESTFS1@3 | zfs receive $TESTPOOL/$TESTFS2" +log_mustnot eval "zfs send -w -i $TESTPOOL/$TESTFS2#b2" \ + "$TESTPOOL/$TESTFS2@3 | zfs receive $TESTPOOL/$TESTFS3" + +log_pass "Mixing raw and non-raw receives fail as expected"