Skip to content

Commit 99df633

Browse files
committed
Various fixes
Signed-off-by: Paul Dagnelie <[email protected]>
1 parent fc526e1 commit 99df633

File tree

10 files changed

+55
-87
lines changed

10 files changed

+55
-87
lines changed

include/sys/dmu_recv.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,13 @@ typedef struct dmu_recv_cookie {
4646
const char *drc_tosnap;
4747
boolean_t drc_newfs;
4848
boolean_t drc_byteswap;
49-
boolean_t drc_raw;
5049
uint64_t drc_featureflags;
5150
boolean_t drc_force;
5251
boolean_t drc_resumable;
5352
boolean_t drc_raw;
5453
boolean_t drc_clone;
5554
struct avl_tree *drc_guid_to_ds_map;
5655
nvlist_t *drc_keynvl;
57-
zio_cksum_t drc_cksum;
5856
uint64_t drc_newsnapobj;
5957
void *drc_owner;
6058
cred_t *drc_cred;
@@ -78,12 +76,12 @@ typedef struct dmu_recv_cookie {
7876
objlist_t *drc_ignore_objlist;
7977
} dmu_recv_cookie_t;
8078

81-
int dmu_recv_begin(char *tofs, char *tosnap,
82-
struct dmu_replay_record *drr_begin, boolean_t force, boolean_t resumable,
83-
nvlist_t *localprops, nvlist_t *hidden_args, char *origin,
84-
dmu_recv_cookie_t *drc);
85-
int dmu_recv_stream(dmu_recv_cookie_t *drc, struct vnode *vp, offset_t *voffp,
86-
int cleanup_fd, uint64_t *action_handlep);
79+
int dmu_recv_begin(char *tofs, char *tosnap, dmu_replay_record_t *drr_begin,
80+
boolean_t force, boolean_t resumable, nvlist_t *localprops,
81+
nvlist_t *hidden_args, char *origin, dmu_recv_cookie_t *drc,
82+
vnode_t *vp, offset_t *voffp);
83+
int dmu_recv_stream(dmu_recv_cookie_t *drc, int cleanup_fd,
84+
uint64_t *action_handlep, offset_t *voffp);
8785
int dmu_recv_end(dmu_recv_cookie_t *drc, void *owner);
8886
boolean_t dmu_objset_is_receiving(objset_t *os);
8987

include/sys/dsl_bookmark.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ typedef struct redaction_list {
6363
redaction_list_phys_t *rl_phys;
6464
dmu_buf_t *rl_dbuf;
6565
uint64_t rl_object;
66-
refcount_t rl_longholds;
66+
zfs_refcount_t rl_longholds;
6767
objset_t *rl_mos;
6868
} redaction_list_t;
6969

module/zfs/dmu_recv.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ byteswap_record(dmu_replay_record_t *drr)
155155
DO32(drr_object.drr_type);
156156
DO32(drr_object.drr_bonustype);
157157
DO32(drr_object.drr_blksz);
158+
DO32(drr_object.drr_bonuslen);
158159
DO32(drr_object.drr_raw_bonuslen);
159160
DO64(drr_object.drr_toguid);
160161
DO64(drr_object.drr_maxblkid);

module/zfs/dmu_send.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,7 +1250,7 @@ send_traverse_thread(void *arg)
12501250
* Utility function that causes End of Stream records to compare after of all
12511251
* others, so that other threads' comparison logic can stay simple.
12521252
*/
1253-
static int
1253+
static int __attribute__((unused))
12541254
send_range_after(const struct send_range *from, const struct send_range *to)
12551255
{
12561256
if (from->eos_marker == B_TRUE)
@@ -1301,7 +1301,7 @@ static struct send_range *
13011301
get_next_range_nofree(bqueue_t *bq, struct send_range *prev)
13021302
{
13031303
struct send_range *next = bqueue_dequeue(bq);
1304-
ASSERTV(send_range_after(prev, next) == -1);
1304+
ASSERT3S(send_range_after(prev, next), ==, -1);
13051305
return (next);
13061306
}
13071307

module/zfs/dsl_bookmark.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,8 @@ dsl_bookmark_node_add(dsl_dataset_t *hds, dsl_bookmark_node_t *dbn,
278278
else if (dbn->dbn_phys.zbm_redaction_obj != 0)
279279
bookmark_phys_size = offsetof(zfs_bookmark_phys_t, zbm_flags);
280280

281-
zfs_bookmark_phys_t zero_phys = { 0 };
282-
ASSERTV(!bcmp(((char *)&dbn->dbn_phys) + bookmark_phys_size,
281+
__attribute__((unused)) zfs_bookmark_phys_t zero_phys = { 0 };
282+
ASSERT0(bcmp(((char *)&dbn->dbn_phys) + bookmark_phys_size,
283283
&zero_phys, sizeof (zfs_bookmark_phys_t) - bookmark_phys_size));
284284

285285
VERIFY0(zap_add(mos, hds->ds_bookmarks_obj, dbn->dbn_name,
@@ -955,28 +955,28 @@ dsl_bookmark_destroy(nvlist_t *bmarks, nvlist_t *errors)
955955
boolean_t
956956
dsl_redaction_list_long_held(redaction_list_t *rl)
957957
{
958-
return (!refcount_is_zero(&rl->rl_longholds));
958+
return (!zfs_refcount_is_zero(&rl->rl_longholds));
959959
}
960960

961961
void
962962
dsl_redaction_list_long_hold(dsl_pool_t *dp, redaction_list_t *rl, void *tag)
963963
{
964964
ASSERT(dsl_pool_config_held(dp));
965-
(void) refcount_add(&rl->rl_longholds, tag);
965+
(void) zfs_refcount_add(&rl->rl_longholds, tag);
966966
}
967967

968968
void
969969
dsl_redaction_list_long_rele(redaction_list_t *rl, void *tag)
970970
{
971-
(void) refcount_remove(&rl->rl_longholds, tag);
971+
(void) zfs_refcount_remove(&rl->rl_longholds, tag);
972972
}
973973

974974
/* ARGSUSED */
975975
static void
976976
redaction_list_evict_sync(void *rlu)
977977
{
978978
redaction_list_t *rl = rlu;
979-
refcount_destroy(&rl->rl_longholds);
979+
zfs_refcount_destroy(&rl->rl_longholds);
980980

981981
kmem_free(rl, sizeof (redaction_list_t));
982982
}
@@ -1011,7 +1011,7 @@ dsl_redaction_list_hold_obj(dsl_pool_t *dp, uint64_t rlobj, void *tag,
10111011
rl->rl_object = rlobj;
10121012
rl->rl_phys = dbuf->db_data;
10131013
rl->rl_mos = dp->dp_meta_objset;
1014-
refcount_create(&rl->rl_longholds);
1014+
zfs_refcount_create(&rl->rl_longholds);
10151015
dmu_buf_init_user(&rl->rl_dbu, redaction_list_evict_sync, NULL,
10161016
&rl->rl_dbuf);
10171017
if ((winner = dmu_buf_set_user_ie(dbuf, &rl->rl_dbu)) != NULL) {
@@ -1420,7 +1420,7 @@ dsl_redaction_list_traverse(redaction_list_t *rl, zbookmark_phys_t *resume,
14201420
* Binary search for the point to resume from. The goal is to minimize
14211421
* the number of disk reads we have to perform.
14221422
*/
1423-
buf = kmem_alloc(bufsize, KM_SLEEP);
1423+
buf = zio_data_buf_alloc(bufsize);
14241424
uint64_t maxbufid = (rl->rl_phys->rlp_num_entries - 1) /
14251425
redact_block_buf_num_entries(bufsize);
14261426
uint64_t minbufid = 0;
@@ -1503,6 +1503,6 @@ dsl_redaction_list_traverse(redaction_list_t *rl, zbookmark_phys_t *resume,
15031503
break;
15041504
}
15051505

1506-
kmem_free(buf, bufsize);
1506+
zio_buf_free(buf, bufsize);
15071507
return (err);
15081508
}

module/zfs/dsl_dataset.c

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -306,72 +306,6 @@ struct feature_type_uint64_array_arg {
306306
uint64_t *array;
307307
};
308308

309-
static void
310-
unload_zfeature(dsl_dataset_t *ds, spa_feature_t f)
311-
{
312-
switch (spa_feature_table[f].fi_type) {
313-
case ZFEATURE_TYPE_BOOLEAN:
314-
break;
315-
case ZFEATURE_TYPE_UINT64_ARRAY:
316-
{
317-
struct feature_type_uint64_array_arg *ftuaa = ds->ds_feature[f];
318-
kmem_free(ftuaa->array, ftuaa->length * sizeof (uint64_t));
319-
kmem_free(ftuaa, sizeof (*ftuaa));
320-
break;
321-
}
322-
default:
323-
panic("Invalid zfeature type!");
324-
}
325-
}
326-
327-
static int
328-
load_zfeature(objset_t *mos, dsl_dataset_t *ds, spa_feature_t f)
329-
{
330-
int err = 0;
331-
switch (spa_feature_table[f].fi_type) {
332-
case ZFEATURE_TYPE_BOOLEAN:
333-
err = zap_contains(mos, ds->ds_object,
334-
spa_feature_table[f].fi_guid);
335-
if (err == 0) {
336-
ds->ds_feature[f] = (void *)B_TRUE;
337-
} else {
338-
ASSERT3U(err, ==, ENOENT);
339-
err = 0;
340-
}
341-
break;
342-
case ZFEATURE_TYPE_UINT64_ARRAY:
343-
{
344-
uint64_t int_size, num_int;
345-
uint64_t *data;
346-
err = zap_length(mos, ds->ds_object,
347-
spa_feature_table[f].fi_guid, &int_size, &num_int);
348-
if (err != 0) {
349-
ASSERT3U(err, ==, ENOENT);
350-
err = 0;
351-
break;
352-
}
353-
ASSERT3U(int_size, ==, sizeof (uint64_t));
354-
data = kmem_alloc(int_size * num_int, KM_SLEEP);
355-
VERIFY0(zap_lookup(mos, ds->ds_object,
356-
spa_feature_table[f].fi_guid, int_size, num_int, data));
357-
struct feature_type_uint64_array_arg *ftuaa =
358-
kmem_alloc(sizeof (*ftuaa), KM_SLEEP);
359-
ftuaa->length = num_int;
360-
ftuaa->array = data;
361-
ds->ds_feature[f] = ftuaa;
362-
break;
363-
}
364-
default:
365-
panic("Invalid zfeature type!");
366-
}
367-
return (err);
368-
}
369-
370-
struct feature_type_uint64_array_arg {
371-
uint64_t length;
372-
uint64_t *array;
373-
};
374-
375309
static void
376310
unload_zfeature(dsl_dataset_t *ds, spa_feature_t f)
377311
{

tests/zfs-tests/cmd/libzfs_input_check/libzfs_input_check.c

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -656,6 +656,34 @@ zfs_destroy(const char *dataset)
656656
return (err == 0 ? 0 : errno);
657657
}
658658

659+
static void
660+
test_redact(const char *snapshot1, const char *snapshot2)
661+
{
662+
nvlist_t *required = fnvlist_alloc();
663+
nvlist_t *snapnv = fnvlist_alloc();
664+
char bookmark[MAXNAMELEN + 32];
665+
666+
fnvlist_add_string(required, "bookname", "testbookmark");
667+
fnvlist_add_boolean(snapnv, snapshot2);
668+
fnvlist_add_nvlist(required, "snapnv", snapnv);
669+
670+
IOC_INPUT_TEST(ZFS_IOC_REDACT, snapshot1, required, NULL, 0);
671+
672+
nvlist_free(snapnv);
673+
nvlist_free(required);
674+
675+
strncpy(bookmark, snapshot1, sizeof (bookmark));
676+
*strchr(bookmark, '@') = '\0';
677+
strncat(bookmark, "#testbookmark", sizeof (bookmark));
678+
zfs_destroy(bookmark);
679+
}
680+
681+
static void
682+
test_get_bookmark_props(const char *bookmark)
683+
{
684+
IOC_INPUT_TEST(ZFS_IOC_GET_BOOKMARK_PROPS, bookmark, NULL, NULL, 0);
685+
}
686+
659687
static void
660688
zfs_ioc_input_tests(const char *pool)
661689
{
@@ -666,6 +694,7 @@ zfs_ioc_input_tests(const char *pool)
666694
char bookmark[ZFS_MAX_DATASET_NAME_LEN + 32];
667695
char backup[ZFS_MAX_DATASET_NAME_LEN];
668696
char clone[ZFS_MAX_DATASET_NAME_LEN];
697+
char clonesnap[ZFS_MAX_DATASET_NAME_LEN + 32];
669698
int tmpfd, err;
670699

671700
/*
@@ -676,6 +705,7 @@ zfs_ioc_input_tests(const char *pool)
676705
(void) snprintf(snapshot, sizeof (snapshot), "%s@snapshot", dataset);
677706
(void) snprintf(bookmark, sizeof (bookmark), "%s#bookmark", dataset);
678707
(void) snprintf(clone, sizeof (clone), "%s/test-fs-clone", pool);
708+
(void) snprintf(clonesnap, sizeof (clonesnap), "%s@snap", clone);
679709
(void) snprintf(backup, sizeof (backup), "%s/backup", pool);
680710

681711
err = lzc_create(dataset, DMU_OST_ZFS, NULL, NULL, 0);
@@ -713,13 +743,17 @@ zfs_ioc_input_tests(const char *pool)
713743

714744
test_bookmark(pool, snapshot, bookmark);
715745
test_get_bookmarks(dataset);
746+
test_get_bookmark_props(bookmark);
716747
test_destroy_bookmarks(pool, bookmark);
717748

718749
test_hold(pool, snapshot);
719750
test_get_holds(snapshot);
720751
test_release(pool, snapshot);
721752

722753
test_clone(snapshot, clone);
754+
test_snapshot(pool, clonesnap);
755+
test_redact(snapshot, clonesnap);
756+
zfs_destroy(clonesnap);
723757
zfs_destroy(clone);
724758

725759
test_rollback(dataset, snapshot);
@@ -870,6 +904,8 @@ validate_ioc_values(void)
870904
ZFS_IOC_BASE + 76 == ZFS_IOC_REMAP &&
871905
ZFS_IOC_BASE + 77 == ZFS_IOC_POOL_CHECKPOINT &&
872906
ZFS_IOC_BASE + 78 == ZFS_IOC_POOL_DISCARD_CHECKPOINT &&
907+
ZFS_IOC_BASE + 79 == ZFS_IOC_REDACT &&
908+
ZFS_IOC_BASE + 80 == ZFS_IOC_GET_BOOKMARK_PROPS &&
873909
LINUX_IOC_BASE + 1 == ZFS_IOC_EVENTS_NEXT &&
874910
LINUX_IOC_BASE + 2 == ZFS_IOC_EVENTS_CLEAR &&
875911
LINUX_IOC_BASE + 3 == ZFS_IOC_EVENTS_SEEK);

tests/zfs-tests/cmd/stride_dd/stride_dd.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,4 +210,3 @@ main(int argc, char *argv[])
210210

211211
return (0);
212212
}
213-

tests/zfs-tests/tests/functional/cli_root/zfs_clone/zfs_clone_rm_nested.ksh

100644100755
File mode changed.

tests/zfs-tests/tests/functional/rsend/rsend_016_neg.ksh

100644100755
File mode changed.

0 commit comments

Comments
 (0)