Lines Matching refs:new
126 struct pnfs_block_extent *new, bool merge_ok) in __ext_tree_insert() argument
135 if (new->be_f_offset < be->be_f_offset) { in __ext_tree_insert()
136 if (merge_ok && ext_can_merge(new, be)) { in __ext_tree_insert()
137 be->be_f_offset = new->be_f_offset; in __ext_tree_insert()
139 be->be_v_offset = new->be_v_offset; in __ext_tree_insert()
140 be->be_length += new->be_length; in __ext_tree_insert()
145 } else if (new->be_f_offset >= ext_f_end(be)) { in __ext_tree_insert()
146 if (merge_ok && ext_can_merge(be, new)) { in __ext_tree_insert()
147 be->be_length += new->be_length; in __ext_tree_insert()
157 rb_link_node(&new->be_node, parent, p); in __ext_tree_insert()
158 rb_insert_color(&new->be_node, root); in __ext_tree_insert()
161 nfs4_put_deviceid_node(new->be_device); in __ext_tree_insert()
162 kfree(new); in __ext_tree_insert()
189 struct pnfs_block_extent *new; in __ext_tree_remove() local
191 new = kzalloc(sizeof(*new), GFP_ATOMIC); in __ext_tree_remove()
192 if (!new) in __ext_tree_remove()
197 new->be_f_offset = end; in __ext_tree_remove()
199 new->be_v_offset = in __ext_tree_remove()
202 new->be_length = len2; in __ext_tree_remove()
203 new->be_state = be->be_state; in __ext_tree_remove()
204 new->be_tag = be->be_tag; in __ext_tree_remove()
205 new->be_device = nfs4_get_deviceid(be->be_device); in __ext_tree_remove()
207 __ext_tree_insert(root, new, true); in __ext_tree_remove()
244 ext_tree_insert(struct pnfs_block_layout *bl, struct pnfs_block_extent *new) in ext_tree_insert() argument
250 switch (new->be_state) { in ext_tree_insert()
266 be = __ext_tree_search(root, new->be_f_offset); in ext_tree_insert()
267 if (!be || be->be_f_offset >= ext_f_end(new)) { in ext_tree_insert()
268 __ext_tree_insert(root, new, true); in ext_tree_insert()
269 } else if (new->be_f_offset >= be->be_f_offset) { in ext_tree_insert()
270 if (ext_f_end(new) <= ext_f_end(be)) { in ext_tree_insert()
271 nfs4_put_deviceid_node(new->be_device); in ext_tree_insert()
272 kfree(new); in ext_tree_insert()
274 sector_t new_len = ext_f_end(new) - ext_f_end(be); in ext_tree_insert()
275 sector_t diff = new->be_length - new_len; in ext_tree_insert()
277 new->be_f_offset += diff; in ext_tree_insert()
278 new->be_v_offset += diff; in ext_tree_insert()
279 new->be_length = new_len; in ext_tree_insert()
282 } else if (ext_f_end(new) <= ext_f_end(be)) { in ext_tree_insert()
283 new->be_length = be->be_f_offset - new->be_f_offset; in ext_tree_insert()
284 __ext_tree_insert(root, new, true); in ext_tree_insert()
287 sector_t new_len = ext_f_end(new) - ext_f_end(be); in ext_tree_insert()
288 sector_t diff = new->be_length - new_len; in ext_tree_insert()
290 split = kmemdup(new, sizeof(*new), GFP_ATOMIC); in ext_tree_insert()
297 split->be_device = nfs4_get_deviceid(new->be_device); in ext_tree_insert()
300 new->be_f_offset += diff; in ext_tree_insert()
301 new->be_v_offset += diff; in ext_tree_insert()
302 new->be_length = new_len; in ext_tree_insert()
370 struct pnfs_block_extent *new; in ext_tree_split() local
373 new = kzalloc(sizeof(*new), GFP_ATOMIC); in ext_tree_split()
374 if (!new) in ext_tree_split()
379 new->be_f_offset = split; in ext_tree_split()
381 new->be_v_offset = be->be_v_offset + be->be_length; in ext_tree_split()
382 new->be_length = orig_len - be->be_length; in ext_tree_split()
383 new->be_state = be->be_state; in ext_tree_split()
384 new->be_tag = be->be_tag; in ext_tree_split()
385 new->be_device = nfs4_get_deviceid(be->be_device); in ext_tree_split()
387 __ext_tree_insert(root, new, false); in ext_tree_split()