git://git.camperquake.de
/
zfs.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Illumos #3306, #3321
[zfs.git]
/
module
/
zfs
/
dmu_send.c
diff --git
a/module/zfs/dmu_send.c
b/module/zfs/dmu_send.c
index
949f4d7
..
921c3d7
100644
(file)
--- a/
module/zfs/dmu_send.c
+++ b/
module/zfs/dmu_send.c
@@
-373,7
+373,7
@@
backup_cb(spa_t *spa, zilog_t *zilog, const blkptr_t *bp, arc_buf_t *pbuf,
for (ptr = abuf->b_data;
(char *)ptr < (char *)abuf->b_data + blksz;
ptr++)
for (ptr = abuf->b_data;
(char *)ptr < (char *)abuf->b_data + blksz;
ptr++)
- *ptr = 0x2f5baddb10c;
+ *ptr = 0x2f5baddb10c
ULL
;
} else {
return (EIO);
}
} else {
return (EIO);
}
@@
-1077,8
+1077,8
@@
restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro)
void *data = NULL;
if (drro->drr_type == DMU_OT_NONE ||
void *data = NULL;
if (drro->drr_type == DMU_OT_NONE ||
-
drro->drr_type >= DMU_OT_NUMTYPES
||
-
drro->drr_bonustype >= DMU_OT_NUMTYPES
||
+
!DMU_OT_IS_VALID(drro->drr_type)
||
+
!DMU_OT_IS_VALID(drro->drr_bonustype)
||
drro->drr_checksumtype >= ZIO_CHECKSUM_FUNCTIONS ||
drro->drr_compress >= ZIO_COMPRESS_FUNCTIONS ||
P2PHASE(drro->drr_blksz, SPA_MINBLOCKSIZE) ||
drro->drr_checksumtype >= ZIO_CHECKSUM_FUNCTIONS ||
drro->drr_compress >= ZIO_COMPRESS_FUNCTIONS ||
P2PHASE(drro->drr_blksz, SPA_MINBLOCKSIZE) ||
@@
-1143,7
+1143,9
@@
restore_object(struct restorearg *ra, objset_t *os, struct drr_object *drro)
ASSERT3U(db->db_size, >=, drro->drr_bonuslen);
bcopy(data, db->db_data, drro->drr_bonuslen);
if (ra->byteswap) {
ASSERT3U(db->db_size, >=, drro->drr_bonuslen);
bcopy(data, db->db_data, drro->drr_bonuslen);
if (ra->byteswap) {
- dmu_ot[drro->drr_bonustype].ot_byteswap(db->db_data,
+ dmu_object_byteswap_t byteswap =
+ DMU_OT_BYTESWAP(drro->drr_bonustype);
+ dmu_ot_byteswap[byteswap].ob_func(db->db_data,
drro->drr_bonuslen);
}
dmu_buf_rele(db, FTAG);
drro->drr_bonuslen);
}
dmu_buf_rele(db, FTAG);
@@
-1186,7
+1188,7
@@
restore_write(struct restorearg *ra, objset_t *os,
int err;
if (drrw->drr_offset + drrw->drr_length < drrw->drr_offset ||
int err;
if (drrw->drr_offset + drrw->drr_length < drrw->drr_offset ||
-
drrw->drr_type >= DMU_OT_NUMTYPES
)
+
!DMU_OT_IS_VALID(drrw->drr_type)
)
return (EINVAL);
data = restore_read(ra, drrw->drr_length);
return (EINVAL);
data = restore_read(ra, drrw->drr_length);
@@
-1205,8
+1207,11
@@
restore_write(struct restorearg *ra, objset_t *os,
dmu_tx_abort(tx);
return (err);
}
dmu_tx_abort(tx);
return (err);
}
- if (ra->byteswap)
- dmu_ot[drrw->drr_type].ot_byteswap(data, drrw->drr_length);
+ if (ra->byteswap) {
+ dmu_object_byteswap_t byteswap =
+ DMU_OT_BYTESWAP(drrw->drr_type);
+ dmu_ot_byteswap[byteswap].ob_func(data, drrw->drr_length);
+ }
dmu_write(os, drrw->drr_object,
drrw->drr_offset, drrw->drr_length, data, tx);
dmu_tx_commit(tx);
dmu_write(os, drrw->drr_object,
drrw->drr_offset, drrw->drr_length, data, tx);
dmu_tx_commit(tx);
@@
-1604,13
+1609,6
@@
dmu_recv_existing_end(dmu_recv_cookie_t *drc)
dsl_dataset_t *ds = drc->drc_logical_ds;
int err, myerr;
dsl_dataset_t *ds = drc->drc_logical_ds;
int err, myerr;
- /*
- * XXX hack; seems the ds is still dirty and dsl_pool_zil_clean()
- * expects it to have a ds_user_ptr (and zil), but clone_swap()
- * can close it.
- */
- txg_wait_synced(ds->ds_dir->dd_pool, 0);
-
if (dsl_dataset_tryown(ds, FALSE, dmu_recv_tag)) {
err = dsl_dataset_clone_swap(drc->drc_real_ds, ds,
drc->drc_force);
if (dsl_dataset_tryown(ds, FALSE, dmu_recv_tag)) {
err = dsl_dataset_clone_swap(drc->drc_real_ds, ds,
drc->drc_force);