Lines Matching defs:da
51 write_record(struct diffarg *da)
55 if (da->da_ddr.ddr_type == DDR_NONE) {
56 da->da_err = 0;
60 da->da_err = vn_rdwr(UIO_WRITE, da->da_vp, (caddr_t)&da->da_ddr,
61 sizeof (da->da_ddr), 0, UIO_SYSSPACE, FAPPEND,
63 *da->da_offp += sizeof (da->da_ddr);
64 return (da->da_err);
68 report_free_dnode_range(struct diffarg *da, uint64_t first, uint64_t last)
71 if (da->da_ddr.ddr_type != DDR_FREE ||
72 first != da->da_ddr.ddr_last + 1) {
73 if (write_record(da) != 0)
74 return (da->da_err);
75 da->da_ddr.ddr_type = DDR_FREE;
76 da->da_ddr.ddr_first = first;
77 da->da_ddr.ddr_last = last;
80 da->da_ddr.ddr_last = last;
85 report_dnode(struct diffarg *da, uint64_t object, dnode_phys_t *dnp)
89 return (report_free_dnode_range(da, object, object));
91 if (da->da_ddr.ddr_type != DDR_INUSE ||
92 object != da->da_ddr.ddr_last + 1) {
93 if (write_record(da) != 0)
94 return (da->da_err);
95 da->da_ddr.ddr_type = DDR_INUSE;
96 da->da_ddr.ddr_first = da->da_ddr.ddr_last = object;
99 da->da_ddr.ddr_last = object;
112 struct diffarg *da = arg;
125 err = report_free_dnode_range(da, dnobj,
145 err = report_dnode(da, dnobj, blk+i);
162 struct diffarg da;
203 da.da_vp = vp;
204 da.da_offp = offp;
205 da.da_ddr.ddr_type = DDR_NONE;
206 da.da_ddr.ddr_first = da.da_ddr.ddr_last = 0;
207 da.da_err = 0;
210 TRAVERSE_PRE | TRAVERSE_PREFETCH_METADATA, diff_cb, &da);
213 da.da_err = error;
215 /* we set the da.da_err we return as side-effect */
216 (void) write_record(&da);
222 return (da.da_err);