Deleted Added
full compact
dsl_dir.c (286575) dsl_dir.c (288204)
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 138 unchanged lines hidden (view full) ---

147 ASSERT(dd->dd_space_towrite[t] == 0);
148 }
149
150 if (dd->dd_parent)
151 dsl_dir_async_rele(dd->dd_parent, dd);
152
153 spa_async_close(dd->dd_pool->dp_spa, dd);
154
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE

--- 138 unchanged lines hidden (view full) ---

147 ASSERT(dd->dd_space_towrite[t] == 0);
148 }
149
150 if (dd->dd_parent)
151 dsl_dir_async_rele(dd->dd_parent, dd);
152
153 spa_async_close(dd->dd_pool->dp_spa, dd);
154
155 /*
156 * The props callback list should have been cleaned up by
157 * objset_evict().
158 */
159 list_destroy(&dd->dd_prop_cbs);
155 dsl_prop_fini(dd);
160 mutex_destroy(&dd->dd_lock);
161 kmem_free(dd, sizeof (dsl_dir_t));
162}
163
164int
165dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj,
166 const char *tail, void *tag, dsl_dir_t **ddp)
167{

--- 18 unchanged lines hidden (view full) ---

186 if (dd == NULL) {
187 dsl_dir_t *winner;
188
189 dd = kmem_zalloc(sizeof (dsl_dir_t), KM_SLEEP);
190 dd->dd_object = ddobj;
191 dd->dd_dbuf = dbuf;
192 dd->dd_pool = dp;
193 mutex_init(&dd->dd_lock, NULL, MUTEX_DEFAULT, NULL);
156 mutex_destroy(&dd->dd_lock);
157 kmem_free(dd, sizeof (dsl_dir_t));
158}
159
160int
161dsl_dir_hold_obj(dsl_pool_t *dp, uint64_t ddobj,
162 const char *tail, void *tag, dsl_dir_t **ddp)
163{

--- 18 unchanged lines hidden (view full) ---

182 if (dd == NULL) {
183 dsl_dir_t *winner;
184
185 dd = kmem_zalloc(sizeof (dsl_dir_t), KM_SLEEP);
186 dd->dd_object = ddobj;
187 dd->dd_dbuf = dbuf;
188 dd->dd_pool = dp;
189 mutex_init(&dd->dd_lock, NULL, MUTEX_DEFAULT, NULL);
190 dsl_prop_init(dd);
194
191
195 list_create(&dd->dd_prop_cbs, sizeof (dsl_prop_cb_record_t),
196 offsetof(dsl_prop_cb_record_t, cbr_node));
197
198 dsl_dir_snap_cmtime_update(dd);
199
200 if (dsl_dir_phys(dd)->dd_parent_obj) {
201 err = dsl_dir_hold_obj(dp,
202 dsl_dir_phys(dd)->dd_parent_obj, NULL, dd,
203 &dd->dd_parent);
204 if (err != 0)
205 goto errout;

--- 40 unchanged lines hidden (view full) ---

246 dmu_buf_rele(origin_bonus, FTAG);
247 }
248
249 dmu_buf_init_user(&dd->dd_dbu, dsl_dir_evict, &dd->dd_dbuf);
250 winner = dmu_buf_set_user_ie(dbuf, &dd->dd_dbu);
251 if (winner != NULL) {
252 if (dd->dd_parent)
253 dsl_dir_rele(dd->dd_parent, dd);
192 dsl_dir_snap_cmtime_update(dd);
193
194 if (dsl_dir_phys(dd)->dd_parent_obj) {
195 err = dsl_dir_hold_obj(dp,
196 dsl_dir_phys(dd)->dd_parent_obj, NULL, dd,
197 &dd->dd_parent);
198 if (err != 0)
199 goto errout;

--- 40 unchanged lines hidden (view full) ---

240 dmu_buf_rele(origin_bonus, FTAG);
241 }
242
243 dmu_buf_init_user(&dd->dd_dbu, dsl_dir_evict, &dd->dd_dbuf);
244 winner = dmu_buf_set_user_ie(dbuf, &dd->dd_dbu);
245 if (winner != NULL) {
246 if (dd->dd_parent)
247 dsl_dir_rele(dd->dd_parent, dd);
248 dsl_prop_fini(dd);
254 mutex_destroy(&dd->dd_lock);
255 kmem_free(dd, sizeof (dsl_dir_t));
256 dd = winner;
257 } else {
258 spa_open_ref(dp->dp_spa, dd);
259 }
260 }
261

--- 11 unchanged lines hidden (view full) ---

273 ASSERT3U(dd->dd_object, ==, ddobj);
274 ASSERT3P(dd->dd_dbuf, ==, dbuf);
275 *ddp = dd;
276 return (0);
277
278errout:
279 if (dd->dd_parent)
280 dsl_dir_rele(dd->dd_parent, dd);
249 mutex_destroy(&dd->dd_lock);
250 kmem_free(dd, sizeof (dsl_dir_t));
251 dd = winner;
252 } else {
253 spa_open_ref(dp->dp_spa, dd);
254 }
255 }
256

--- 11 unchanged lines hidden (view full) ---

268 ASSERT3U(dd->dd_object, ==, ddobj);
269 ASSERT3P(dd->dd_dbuf, ==, dbuf);
270 *ddp = dd;
271 return (0);
272
273errout:
274 if (dd->dd_parent)
275 dsl_dir_rele(dd->dd_parent, dd);
276 dsl_prop_fini(dd);
281 mutex_destroy(&dd->dd_lock);
282 kmem_free(dd, sizeof (dsl_dir_t));
283 dmu_buf_rele(dbuf, tag);
284 return (err);
285}
286
287void
288dsl_dir_rele(dsl_dir_t *dd, void *tag)

--- 1714 unchanged lines hidden ---
277 mutex_destroy(&dd->dd_lock);
278 kmem_free(dd, sizeof (dsl_dir_t));
279 dmu_buf_rele(dbuf, tag);
280 return (err);
281}
282
283void
284dsl_dir_rele(dsl_dir_t *dd, void *tag)

--- 1714 unchanged lines hidden ---