equal
deleted
inserted
replaced
660 |
660 |
661 spa_history_log_internal(LOG_DS_REPLAY_INC_SYNC, |
661 spa_history_log_internal(LOG_DS_REPLAY_INC_SYNC, |
662 dp->dp_spa, tx, "dataset = %lld", dsobj); |
662 dp->dp_spa, tx, "dataset = %lld", dsobj); |
663 } |
663 } |
664 |
664 |
665 |
|
666 static boolean_t |
665 static boolean_t |
667 dmu_recv_verify_features(dsl_dataset_t *ds, struct drr_begin *drrb) |
666 dmu_recv_verify_features(dsl_dataset_t *ds, struct drr_begin *drrb) |
668 { |
667 { |
669 int featureflags; |
668 int featureflags; |
670 |
669 |
785 *cp = '/'; |
784 *cp = '/'; |
786 if (err) |
785 if (err) |
787 return (err); |
786 return (err); |
788 |
787 |
789 if (dmu_recv_verify_features(ds, drrb)) { |
788 if (dmu_recv_verify_features(ds, drrb)) { |
790 dsl_dataset_rele(ds, dmu_recv_tag); |
789 dsl_dataset_rele(ds, FTAG); |
791 return (ENOTSUP); |
790 return (ENOTSUP); |
792 } |
791 } |
793 |
792 |
794 err = dsl_sync_task_do(ds->ds_dir->dd_pool, |
793 err = dsl_sync_task_do(ds->ds_dir->dd_pool, |
795 recv_new_check, recv_new_sync, ds->ds_dir, &rbsa, 5); |
794 recv_new_check, recv_new_sync, ds->ds_dir, &rbsa, 5); |