Lines Matching defs:newfrag
471 struct chfs_node_frag *newfrag;
472 newfrag = chfs_alloc_node_frag();
473 if (newfrag) {
475 newfrag->ofs = ofs;
476 newfrag->size = size;
477 newfrag->node = fdn;
478 if (newfrag->node) {
479 newfrag->node->frags++;
484 return newfrag;
493 struct chfs_node_frag *newfrag,
496 if (lastend < newfrag->node->ofs) {
499 holefrag = new_fragment(NULL, lastend, newfrag->node->ofs - lastend);
501 chfs_free_node_frag(newfrag);
508 rb_tree_insert_node(fragtree, newfrag);
520 struct chfs_node_frag *newfrag)
527 this = (struct chfs_node_frag *)rb_tree_find_node_leq(fragtree, &newfrag->ofs);
536 if (lastend <= newfrag->ofs) {
537 if (lastend && (lastend - 1) >> PAGE_SHIFT == newfrag->ofs >> PAGE_SHIFT) {
540 CHFS_MARK_REF_NORMAL(newfrag->node->nref);
542 return no_overlapping_node(fragtree, newfrag, this, lastend);
545 if (newfrag->ofs > this->ofs) {
546 CHFS_MARK_REF_NORMAL(newfrag->node->nref);
550 if (this->ofs + this->size > newfrag->ofs + newfrag->size) {
551 /* Newfrag is inside of this. */
554 newfrag2 = new_fragment(this->node, newfrag->ofs + newfrag->size,
555 this->ofs + this->size - newfrag->ofs - newfrag->size);
559 this->size = newfrag->ofs - this->ofs;
561 rb_tree_insert_node(fragtree, newfrag);
566 /* Newfrag is bottom of this. */
567 this->size = newfrag->ofs - this->ofs;
568 rb_tree_insert_node(fragtree, newfrag);
570 /* Newfrag start at same point */
573 rb_tree_insert_node(fragtree, newfrag);
575 if (newfrag->ofs + newfrag->size >= this->ofs+this->size) {
578 this->ofs += newfrag->size;
579 this->size -= newfrag->size;
585 /* OK, now we have newfrag added in the correct place in the tree, but
586 frag_next(newfrag) may be a fragment which is overlapped by it
588 while ((this = frag_next(fragtree, newfrag)) && newfrag->ofs + newfrag->size >= this->ofs + this->size) {
593 if (!this || newfrag->ofs + newfrag->size == this->ofs)
596 this->size = (this->ofs + this->size) - (newfrag->ofs + newfrag->size);
597 this->ofs = newfrag->ofs + newfrag->size;
601 CHFS_MARK_REF_NORMAL(newfrag->node->nref);
743 struct chfs_node_frag *newfrag;
750 newfrag = new_fragment(fd, fd->ofs, fd->size);
751 if (unlikely(!newfrag))
754 ret = chfs_add_frag_to_fragtree(chmp, &ip->fragtree, newfrag);
759 if (newfrag->ofs & (PAGE_SIZE - 1)) {
760 struct chfs_node_frag *prev = frag_prev(&ip->fragtree, newfrag);
768 if ((newfrag->ofs+newfrag->size) & (PAGE_SIZE - 1)) {
769 struct chfs_node_frag *next = frag_next(&ip->fragtree, newfrag);