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 --- |