Lines Matching refs:new
137 struct pnfs_block_extent *new, bool merge_ok)
146 if (new->be_f_offset < be->be_f_offset) {
147 if (merge_ok && ext_can_merge(new, be)) {
148 be->be_f_offset = new->be_f_offset;
150 be->be_v_offset = new->be_v_offset;
151 be->be_length += new->be_length;
156 } else if (new->be_f_offset >= ext_f_end(be)) {
157 if (merge_ok && ext_can_merge(be, new)) {
158 be->be_length += new->be_length;
168 rb_link_node(&new->be_node, parent, p);
169 rb_insert_color(&new->be_node, root);
172 nfs4_put_deviceid_node(new->be_device);
173 kfree(new);
201 struct pnfs_block_extent *new;
203 new = kzalloc(sizeof(*new), GFP_ATOMIC);
204 if (!new)
209 new->be_f_offset = end;
211 new->be_v_offset =
214 new->be_length = len2;
215 new->be_state = be->be_state;
216 new->be_tag = be->be_tag;
217 new->be_device = nfs4_get_deviceid(be->be_device);
219 __ext_tree_insert(root, new, true);
255 ext_tree_insert(struct pnfs_block_layout *bl, struct pnfs_block_extent *new)
261 switch (new->be_state) {
277 be = __ext_tree_search(root, new->be_f_offset);
278 if (!be || be->be_f_offset >= ext_f_end(new)) {
279 __ext_tree_insert(root, new, true);
280 } else if (new->be_f_offset >= be->be_f_offset) {
281 if (ext_f_end(new) <= ext_f_end(be)) {
282 nfs4_put_deviceid_node(new->be_device);
283 kfree(new);
285 sector_t new_len = ext_f_end(new) - ext_f_end(be);
286 sector_t diff = new->be_length - new_len;
288 new->be_f_offset += diff;
289 new->be_v_offset += diff;
290 new->be_length = new_len;
293 } else if (ext_f_end(new) <= ext_f_end(be)) {
294 new->be_length = be->be_f_offset - new->be_f_offset;
295 __ext_tree_insert(root, new, true);
298 sector_t new_len = ext_f_end(new) - ext_f_end(be);
299 sector_t diff = new->be_length - new_len;
301 split = kmemdup(new, sizeof(*new), GFP_ATOMIC);
308 split->be_device = nfs4_get_deviceid(new->be_device);
311 new->be_f_offset += diff;
312 new->be_v_offset += diff;
313 new->be_length = new_len;
383 struct pnfs_block_extent *new;
386 new = kzalloc(sizeof(*new), GFP_ATOMIC);
387 if (!new)
392 new->be_f_offset = split;
394 new->be_v_offset = be->be_v_offset + be->be_length;
395 new->be_length = orig_len - be->be_length;
396 new->be_state = be->be_state;
397 new->be_tag = be->be_tag;
398 new->be_device = nfs4_get_deviceid(be->be_device);
400 __ext_tree_insert(root, new, false);