Lines Matching refs:ifp
48 xfs_ifork_t *ifp, in xfs_validate_extents() argument
57 xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); in xfs_validate_extents()
66 #define xfs_validate_extents(ifp, nrecs, fmt) argument
250 xfs_ifork_t *ifp; in xfs_iformat_local() local
267 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iformat_local()
270 ifp->if_u1.if_data = NULL; in xfs_iformat_local()
271 else if (size <= sizeof(ifp->if_u2.if_inline_data)) in xfs_iformat_local()
272 ifp->if_u1.if_data = ifp->if_u2.if_inline_data; in xfs_iformat_local()
275 ifp->if_u1.if_data = kmem_alloc(real_size, KM_SLEEP | KM_NOFS); in xfs_iformat_local()
277 ifp->if_bytes = size; in xfs_iformat_local()
278 ifp->if_real_bytes = real_size; in xfs_iformat_local()
280 memcpy(ifp->if_u1.if_data, XFS_DFORK_PTR(dip, whichfork), size); in xfs_iformat_local()
281 ifp->if_flags &= ~XFS_IFEXTENTS; in xfs_iformat_local()
282 ifp->if_flags |= XFS_IFINLINE; in xfs_iformat_local()
302 xfs_ifork_t *ifp; in xfs_iformat_extents() local
307 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iformat_extents()
324 ifp->if_real_bytes = 0; in xfs_iformat_extents()
326 ifp->if_u1.if_extents = NULL; in xfs_iformat_extents()
328 ifp->if_u1.if_extents = ifp->if_u2.if_inline_ext; in xfs_iformat_extents()
330 xfs_iext_add(ifp, 0, nex); in xfs_iformat_extents()
332 ifp->if_bytes = size; in xfs_iformat_extents()
335 xfs_validate_extents(ifp, nex, XFS_EXTFMT_INODE(ip)); in xfs_iformat_extents()
337 xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); in xfs_iformat_extents()
345 ifp, 0, nex))) { in xfs_iformat_extents()
352 ifp->if_flags |= XFS_IFEXTENTS; in xfs_iformat_extents()
372 xfs_ifork_t *ifp; in xfs_iformat_btree() local
377 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iformat_btree()
401 ifp->if_broot_bytes = size; in xfs_iformat_btree()
402 ifp->if_broot = kmem_alloc(size, KM_SLEEP | KM_NOFS); in xfs_iformat_btree()
403 ASSERT(ifp->if_broot != NULL); in xfs_iformat_btree()
409 ifp->if_broot, size); in xfs_iformat_btree()
410 ifp->if_flags &= ~XFS_IFEXTENTS; in xfs_iformat_btree()
411 ifp->if_flags |= XFS_IFBROOT; in xfs_iformat_btree()
427 xfs_ifork_t *ifp; in xfs_iread_extents() local
438 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iread_extents()
443 ifp->if_bytes = ifp->if_real_bytes = 0; in xfs_iread_extents()
444 ifp->if_flags |= XFS_IFEXTENTS; in xfs_iread_extents()
445 xfs_iext_add(ifp, 0, nextents); in xfs_iread_extents()
448 xfs_iext_destroy(ifp); in xfs_iread_extents()
449 ifp->if_flags &= ~XFS_IFEXTENTS; in xfs_iread_extents()
452 xfs_validate_extents(ifp, nextents, XFS_EXTFMT_INODE(ip)); in xfs_iread_extents()
481 xfs_ifork_t *ifp; in xfs_iroot_realloc() local
495 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iroot_realloc()
501 if (ifp->if_broot_bytes == 0) { in xfs_iroot_realloc()
503 ifp->if_broot = kmem_alloc(new_size, KM_SLEEP | KM_NOFS); in xfs_iroot_realloc()
504 ifp->if_broot_bytes = (int)new_size; in xfs_iroot_realloc()
514 cur_max = xfs_bmbt_maxrecs(mp, ifp->if_broot_bytes, 0); in xfs_iroot_realloc()
517 ifp->if_broot = kmem_realloc(ifp->if_broot, new_size, in xfs_iroot_realloc()
520 op = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1, in xfs_iroot_realloc()
521 ifp->if_broot_bytes); in xfs_iroot_realloc()
522 np = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1, in xfs_iroot_realloc()
524 ifp->if_broot_bytes = (int)new_size; in xfs_iroot_realloc()
525 ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <= in xfs_iroot_realloc()
536 ASSERT((ifp->if_broot != NULL) && (ifp->if_broot_bytes > 0)); in xfs_iroot_realloc()
537 cur_max = xfs_bmbt_maxrecs(mp, ifp->if_broot_bytes, 0); in xfs_iroot_realloc()
549 memcpy(new_broot, ifp->if_broot, in xfs_iroot_realloc()
553 ifp->if_flags &= ~XFS_IFBROOT; in xfs_iroot_realloc()
563 op = (char *)XFS_BMBT_REC_ADDR(mp, ifp->if_broot, 1); in xfs_iroot_realloc()
570 op = (char *)XFS_BMAP_BROOT_PTR_ADDR(mp, ifp->if_broot, 1, in xfs_iroot_realloc()
571 ifp->if_broot_bytes); in xfs_iroot_realloc()
576 kmem_free(ifp->if_broot); in xfs_iroot_realloc()
577 ifp->if_broot = new_broot; in xfs_iroot_realloc()
578 ifp->if_broot_bytes = (int)new_size; in xfs_iroot_realloc()
579 if (ifp->if_broot) in xfs_iroot_realloc()
580 ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <= in xfs_iroot_realloc()
607 xfs_ifork_t *ifp; in xfs_idata_realloc() local
615 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_idata_realloc()
616 new_size = (int)ifp->if_bytes + byte_diff; in xfs_idata_realloc()
620 if (ifp->if_u1.if_data != ifp->if_u2.if_inline_data) { in xfs_idata_realloc()
621 kmem_free(ifp->if_u1.if_data); in xfs_idata_realloc()
623 ifp->if_u1.if_data = NULL; in xfs_idata_realloc()
625 } else if (new_size <= sizeof(ifp->if_u2.if_inline_data)) { in xfs_idata_realloc()
630 if (ifp->if_u1.if_data == NULL) { in xfs_idata_realloc()
631 ifp->if_u1.if_data = ifp->if_u2.if_inline_data; in xfs_idata_realloc()
632 } else if (ifp->if_u1.if_data != ifp->if_u2.if_inline_data) { in xfs_idata_realloc()
633 ASSERT(ifp->if_real_bytes != 0); in xfs_idata_realloc()
634 memcpy(ifp->if_u2.if_inline_data, ifp->if_u1.if_data, in xfs_idata_realloc()
636 kmem_free(ifp->if_u1.if_data); in xfs_idata_realloc()
637 ifp->if_u1.if_data = ifp->if_u2.if_inline_data; in xfs_idata_realloc()
649 if (ifp->if_u1.if_data == NULL) { in xfs_idata_realloc()
650 ASSERT(ifp->if_real_bytes == 0); in xfs_idata_realloc()
651 ifp->if_u1.if_data = kmem_alloc(real_size, in xfs_idata_realloc()
653 } else if (ifp->if_u1.if_data != ifp->if_u2.if_inline_data) { in xfs_idata_realloc()
658 if (ifp->if_real_bytes != real_size) { in xfs_idata_realloc()
659 ifp->if_u1.if_data = in xfs_idata_realloc()
660 kmem_realloc(ifp->if_u1.if_data, in xfs_idata_realloc()
662 ifp->if_real_bytes, in xfs_idata_realloc()
666 ASSERT(ifp->if_real_bytes == 0); in xfs_idata_realloc()
667 ifp->if_u1.if_data = kmem_alloc(real_size, in xfs_idata_realloc()
669 memcpy(ifp->if_u1.if_data, ifp->if_u2.if_inline_data, in xfs_idata_realloc()
670 ifp->if_bytes); in xfs_idata_realloc()
673 ifp->if_real_bytes = real_size; in xfs_idata_realloc()
674 ifp->if_bytes = new_size; in xfs_idata_realloc()
675 ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); in xfs_idata_realloc()
683 xfs_ifork_t *ifp; in xfs_idestroy_fork() local
685 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_idestroy_fork()
686 if (ifp->if_broot != NULL) { in xfs_idestroy_fork()
687 kmem_free(ifp->if_broot); in xfs_idestroy_fork()
688 ifp->if_broot = NULL; in xfs_idestroy_fork()
698 if ((ifp->if_u1.if_data != ifp->if_u2.if_inline_data) && in xfs_idestroy_fork()
699 (ifp->if_u1.if_data != NULL)) { in xfs_idestroy_fork()
700 ASSERT(ifp->if_real_bytes != 0); in xfs_idestroy_fork()
701 kmem_free(ifp->if_u1.if_data); in xfs_idestroy_fork()
702 ifp->if_u1.if_data = NULL; in xfs_idestroy_fork()
703 ifp->if_real_bytes = 0; in xfs_idestroy_fork()
705 } else if ((ifp->if_flags & XFS_IFEXTENTS) && in xfs_idestroy_fork()
706 ((ifp->if_flags & XFS_IFEXTIREC) || in xfs_idestroy_fork()
707 ((ifp->if_u1.if_extents != NULL) && in xfs_idestroy_fork()
708 (ifp->if_u1.if_extents != ifp->if_u2.if_inline_ext)))) { in xfs_idestroy_fork()
709 ASSERT(ifp->if_real_bytes != 0); in xfs_idestroy_fork()
710 xfs_iext_destroy(ifp); in xfs_idestroy_fork()
712 ASSERT(ifp->if_u1.if_extents == NULL || in xfs_idestroy_fork()
713 ifp->if_u1.if_extents == ifp->if_u2.if_inline_ext); in xfs_idestroy_fork()
714 ASSERT(ifp->if_real_bytes == 0); in xfs_idestroy_fork()
741 xfs_ifork_t *ifp; in xfs_iextents_copy() local
745 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iextents_copy()
747 ASSERT(ifp->if_bytes > 0); in xfs_iextents_copy()
749 nrecs = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iextents_copy()
761 xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); in xfs_iextents_copy()
777 xfs_validate_extents(ifp, copied, XFS_EXTFMT_INODE(ip)); in xfs_iextents_copy()
800 xfs_ifork_t *ifp; in xfs_iflush_fork() local
811 ifp = XFS_IFORK_PTR(ip, whichfork); in xfs_iflush_fork()
816 if (!ifp) { in xfs_iflush_fork()
825 (ifp->if_bytes > 0)) { in xfs_iflush_fork()
826 ASSERT(ifp->if_u1.if_data != NULL); in xfs_iflush_fork()
827 ASSERT(ifp->if_bytes <= XFS_IFORK_SIZE(ip, whichfork)); in xfs_iflush_fork()
828 memcpy(cp, ifp->if_u1.if_data, ifp->if_bytes); in xfs_iflush_fork()
833 ASSERT((ifp->if_flags & XFS_IFEXTENTS) || in xfs_iflush_fork()
836 (ifp->if_bytes > 0)) { in xfs_iflush_fork()
837 ASSERT(xfs_iext_get_ext(ifp, 0)); in xfs_iflush_fork()
846 (ifp->if_broot_bytes > 0)) { in xfs_iflush_fork()
847 ASSERT(ifp->if_broot != NULL); in xfs_iflush_fork()
848 ASSERT(XFS_BMAP_BMDR_SPACE(ifp->if_broot) <= in xfs_iflush_fork()
850 xfs_bmbt_to_bmdr(mp, ifp->if_broot, ifp->if_broot_bytes, in xfs_iflush_fork()
883 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_get_ext() argument
887 ASSERT(idx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t)); in xfs_iext_get_ext()
889 if ((ifp->if_flags & XFS_IFEXTIREC) && (idx == 0)) { in xfs_iext_get_ext()
890 return ifp->if_u1.if_ext_irec->er_extbuf; in xfs_iext_get_ext()
891 } else if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_get_ext()
896 erp = xfs_iext_idx_to_irec(ifp, &page_idx, &erp_idx, 0); in xfs_iext_get_ext()
898 } else if (ifp->if_bytes) { in xfs_iext_get_ext()
899 return &ifp->if_u1.if_extents[idx]; in xfs_iext_get_ext()
917 xfs_ifork_t *ifp = (state & BMAP_ATTRFORK) ? ip->i_afp : &ip->i_df; in xfs_iext_insert() local
922 ASSERT(ifp->if_flags & XFS_IFEXTENTS); in xfs_iext_insert()
923 xfs_iext_add(ifp, idx, count); in xfs_iext_insert()
925 xfs_bmbt_set_all(xfs_iext_get_ext(ifp, i), new); in xfs_iext_insert()
942 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_add() argument
950 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_add()
953 new_size = ifp->if_bytes + byte_diff; in xfs_iext_add()
961 memmove(&ifp->if_u2.if_inline_ext[idx + ext_diff], in xfs_iext_add()
962 &ifp->if_u2.if_inline_ext[idx], in xfs_iext_add()
964 memset(&ifp->if_u2.if_inline_ext[idx], 0, byte_diff); in xfs_iext_add()
966 ifp->if_u1.if_extents = ifp->if_u2.if_inline_ext; in xfs_iext_add()
967 ifp->if_real_bytes = 0; in xfs_iext_add()
976 xfs_iext_realloc_direct(ifp, new_size); in xfs_iext_add()
978 memmove(&ifp->if_u1.if_extents[idx + ext_diff], in xfs_iext_add()
979 &ifp->if_u1.if_extents[idx], in xfs_iext_add()
981 memset(&ifp->if_u1.if_extents[idx], 0, byte_diff); in xfs_iext_add()
991 if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_add()
992 erp = xfs_iext_idx_to_irec(ifp, &page_idx, &erp_idx, 1); in xfs_iext_add()
994 xfs_iext_irec_init(ifp); in xfs_iext_add()
995 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_add()
996 erp = ifp->if_u1.if_ext_irec; in xfs_iext_add()
1008 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, ext_diff); in xfs_iext_add()
1012 xfs_iext_add_indirect_multi(ifp, in xfs_iext_add()
1025 erp = xfs_iext_irec_new(ifp, erp_idx); in xfs_iext_add()
1033 ifp->if_bytes = new_size; in xfs_iext_add()
1054 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_add_indirect_multi() argument
1067 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_add_indirect_multi()
1068 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_add_indirect_multi()
1070 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_add_indirect_multi()
1080 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, -nex2); in xfs_iext_add_indirect_multi()
1094 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, ext_diff); in xfs_iext_add_indirect_multi()
1099 erp = xfs_iext_irec_new(ifp, erp_idx); in xfs_iext_add_indirect_multi()
1102 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, ext_diff); in xfs_iext_add_indirect_multi()
1127 ifp->if_u1.if_ext_irec[erp_idx+1].er_extcount))) { in xfs_iext_add_indirect_multi()
1140 erp = xfs_iext_irec_new(ifp, erp_idx); in xfs_iext_add_indirect_multi()
1145 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, nex2); in xfs_iext_add_indirect_multi()
1167 xfs_ifork_t *ifp = (state & BMAP_ATTRFORK) ? ip->i_afp : &ip->i_df; in xfs_iext_remove() local
1174 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_remove()
1178 xfs_iext_destroy(ifp); in xfs_iext_remove()
1179 } else if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_remove()
1180 xfs_iext_remove_indirect(ifp, idx, ext_diff); in xfs_iext_remove()
1181 } else if (ifp->if_real_bytes) { in xfs_iext_remove()
1182 xfs_iext_remove_direct(ifp, idx, ext_diff); in xfs_iext_remove()
1184 xfs_iext_remove_inline(ifp, idx, ext_diff); in xfs_iext_remove()
1186 ifp->if_bytes = new_size; in xfs_iext_remove()
1195 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_remove_inline() argument
1201 ASSERT(!(ifp->if_flags & XFS_IFEXTIREC)); in xfs_iext_remove_inline()
1203 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_remove_inline()
1208 memmove(&ifp->if_u2.if_inline_ext[idx], in xfs_iext_remove_inline()
1209 &ifp->if_u2.if_inline_ext[idx + ext_diff], in xfs_iext_remove_inline()
1212 memset(&ifp->if_u2.if_inline_ext[nextents - ext_diff], in xfs_iext_remove_inline()
1215 memset(&ifp->if_u2.if_inline_ext[idx], 0, in xfs_iext_remove_inline()
1232 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_remove_direct() argument
1239 ASSERT(!(ifp->if_flags & XFS_IFEXTIREC)); in xfs_iext_remove_direct()
1240 new_size = ifp->if_bytes - in xfs_iext_remove_direct()
1242 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_remove_direct()
1245 xfs_iext_destroy(ifp); in xfs_iext_remove_direct()
1250 memmove(&ifp->if_u1.if_extents[idx], in xfs_iext_remove_direct()
1251 &ifp->if_u1.if_extents[idx + ext_diff], in xfs_iext_remove_direct()
1255 memset(&ifp->if_u1.if_extents[nextents - ext_diff], in xfs_iext_remove_direct()
1263 xfs_iext_realloc_direct(ifp, new_size); in xfs_iext_remove_direct()
1264 ifp->if_bytes = new_size; in xfs_iext_remove_direct()
1284 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_remove_indirect() argument
1296 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_remove_indirect()
1297 erp = xfs_iext_idx_to_irec(ifp, &page_idx, &erp_idx, 0); in xfs_iext_remove_indirect()
1309 xfs_iext_irec_remove(ifp, erp_idx); in xfs_iext_remove_indirect()
1313 ASSERT(erp_idx < ifp->if_real_bytes / in xfs_iext_remove_indirect()
1315 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_remove_indirect()
1333 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, -ext_diff); in xfs_iext_remove_indirect()
1339 ifp->if_bytes -= count * sizeof(xfs_bmbt_rec_t); in xfs_iext_remove_indirect()
1340 xfs_iext_irec_compact(ifp); in xfs_iext_remove_indirect()
1348 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_realloc_direct() argument
1355 ASSERT(!(ifp->if_flags & XFS_IFEXTIREC) || in xfs_iext_realloc_direct()
1357 (new_size != ifp->if_real_bytes))); in xfs_iext_realloc_direct()
1361 xfs_iext_destroy(ifp); in xfs_iext_realloc_direct()
1364 else if (ifp->if_real_bytes) { in xfs_iext_realloc_direct()
1367 xfs_iext_direct_to_inline(ifp, new_size / in xfs_iext_realloc_direct()
1369 ifp->if_bytes = new_size; in xfs_iext_realloc_direct()
1375 if (rnew_size != ifp->if_real_bytes) { in xfs_iext_realloc_direct()
1376 ifp->if_u1.if_extents = in xfs_iext_realloc_direct()
1377 kmem_realloc(ifp->if_u1.if_extents, in xfs_iext_realloc_direct()
1379 ifp->if_real_bytes, KM_NOFS); in xfs_iext_realloc_direct()
1381 if (rnew_size > ifp->if_real_bytes) { in xfs_iext_realloc_direct()
1382 memset(&ifp->if_u1.if_extents[ifp->if_bytes / in xfs_iext_realloc_direct()
1384 rnew_size - ifp->if_real_bytes); in xfs_iext_realloc_direct()
1392 xfs_iext_inline_to_direct(ifp, rnew_size); in xfs_iext_realloc_direct()
1394 ifp->if_real_bytes = rnew_size; in xfs_iext_realloc_direct()
1395 ifp->if_bytes = new_size; in xfs_iext_realloc_direct()
1403 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_direct_to_inline() argument
1406 ASSERT(ifp->if_flags & XFS_IFEXTENTS); in xfs_iext_direct_to_inline()
1413 memcpy(ifp->if_u2.if_inline_ext, ifp->if_u1.if_extents, in xfs_iext_direct_to_inline()
1415 kmem_free(ifp->if_u1.if_extents); in xfs_iext_direct_to_inline()
1416 ifp->if_u1.if_extents = ifp->if_u2.if_inline_ext; in xfs_iext_direct_to_inline()
1417 ifp->if_real_bytes = 0; in xfs_iext_direct_to_inline()
1430 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_inline_to_direct() argument
1433 ifp->if_u1.if_extents = kmem_alloc(new_size, KM_NOFS); in xfs_iext_inline_to_direct()
1434 memset(ifp->if_u1.if_extents, 0, new_size); in xfs_iext_inline_to_direct()
1435 if (ifp->if_bytes) { in xfs_iext_inline_to_direct()
1436 memcpy(ifp->if_u1.if_extents, ifp->if_u2.if_inline_ext, in xfs_iext_inline_to_direct()
1437 ifp->if_bytes); in xfs_iext_inline_to_direct()
1438 memset(ifp->if_u2.if_inline_ext, 0, XFS_INLINE_EXTS * in xfs_iext_inline_to_direct()
1441 ifp->if_real_bytes = new_size; in xfs_iext_inline_to_direct()
1449 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_realloc_indirect() argument
1455 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_realloc_indirect()
1456 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_realloc_indirect()
1458 ASSERT(ifp->if_real_bytes); in xfs_iext_realloc_indirect()
1461 xfs_iext_destroy(ifp); in xfs_iext_realloc_indirect()
1463 ifp->if_u1.if_ext_irec = (xfs_ext_irec_t *) in xfs_iext_realloc_indirect()
1464 kmem_realloc(ifp->if_u1.if_ext_irec, in xfs_iext_realloc_indirect()
1474 xfs_ifork_t *ifp) /* inode fork pointer */ in xfs_iext_indirect_to_direct() argument
1480 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_indirect_to_direct()
1481 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_indirect_to_direct()
1485 xfs_iext_irec_compact_pages(ifp); in xfs_iext_indirect_to_direct()
1486 ASSERT(ifp->if_real_bytes == XFS_IEXT_BUFSZ); in xfs_iext_indirect_to_direct()
1488 ep = ifp->if_u1.if_ext_irec->er_extbuf; in xfs_iext_indirect_to_direct()
1489 kmem_free(ifp->if_u1.if_ext_irec); in xfs_iext_indirect_to_direct()
1490 ifp->if_flags &= ~XFS_IFEXTIREC; in xfs_iext_indirect_to_direct()
1491 ifp->if_u1.if_extents = ep; in xfs_iext_indirect_to_direct()
1492 ifp->if_bytes = size; in xfs_iext_indirect_to_direct()
1494 xfs_iext_realloc_direct(ifp, size); in xfs_iext_indirect_to_direct()
1503 xfs_ifork_t *ifp) /* inode fork pointer */ in xfs_iext_destroy() argument
1505 if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_destroy()
1509 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_destroy()
1511 xfs_iext_irec_remove(ifp, erp_idx); in xfs_iext_destroy()
1513 ifp->if_flags &= ~XFS_IFEXTIREC; in xfs_iext_destroy()
1514 } else if (ifp->if_real_bytes) { in xfs_iext_destroy()
1515 kmem_free(ifp->if_u1.if_extents); in xfs_iext_destroy()
1516 } else if (ifp->if_bytes) { in xfs_iext_destroy()
1517 memset(ifp->if_u2.if_inline_ext, 0, XFS_INLINE_EXTS * in xfs_iext_destroy()
1520 ifp->if_u1.if_extents = NULL; in xfs_iext_destroy()
1521 ifp->if_real_bytes = 0; in xfs_iext_destroy()
1522 ifp->if_bytes = 0; in xfs_iext_destroy()
1530 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_bno_to_ext() argument
1544 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_bno_to_ext()
1550 if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_bno_to_ext()
1553 erp = xfs_iext_bno_to_irec(ifp, bno, &erp_idx); in xfs_iext_bno_to_ext()
1557 base = ifp->if_u1.if_extents; in xfs_iext_bno_to_ext()
1572 if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_bno_to_ext()
1580 if (ifp->if_flags & XFS_IFEXTIREC) { in xfs_iext_bno_to_ext()
1587 ep = xfs_iext_get_ext(ifp, idx); in xfs_iext_bno_to_ext()
1601 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_bno_to_irec() argument
1612 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_bno_to_irec()
1613 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_bno_to_irec()
1619 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_bno_to_irec()
1642 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_idx_to_irec() argument
1655 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_idx_to_irec()
1657 ASSERT(page_idx <= ifp->if_bytes / sizeof(xfs_bmbt_rec_t)); in xfs_iext_idx_to_irec()
1658 ASSERT(page_idx < ifp->if_bytes / sizeof(xfs_bmbt_rec_t) || realloc); in xfs_iext_idx_to_irec()
1660 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_idx_to_irec()
1668 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_idx_to_irec()
1700 xfs_ifork_t *ifp) /* inode fork pointer */ in xfs_iext_irec_init() argument
1705 ASSERT(!(ifp->if_flags & XFS_IFEXTIREC)); in xfs_iext_irec_init()
1706 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_irec_init()
1712 ifp->if_u1.if_extents = kmem_alloc(XFS_IEXT_BUFSZ, KM_NOFS); in xfs_iext_irec_init()
1713 } else if (!ifp->if_real_bytes) { in xfs_iext_irec_init()
1714 xfs_iext_inline_to_direct(ifp, XFS_IEXT_BUFSZ); in xfs_iext_irec_init()
1715 } else if (ifp->if_real_bytes < XFS_IEXT_BUFSZ) { in xfs_iext_irec_init()
1716 xfs_iext_realloc_direct(ifp, XFS_IEXT_BUFSZ); in xfs_iext_irec_init()
1718 erp->er_extbuf = ifp->if_u1.if_extents; in xfs_iext_irec_init()
1722 ifp->if_flags |= XFS_IFEXTIREC; in xfs_iext_irec_init()
1723 ifp->if_real_bytes = XFS_IEXT_BUFSZ; in xfs_iext_irec_init()
1724 ifp->if_bytes = nextents * sizeof(xfs_bmbt_rec_t); in xfs_iext_irec_init()
1725 ifp->if_u1.if_ext_irec = erp; in xfs_iext_irec_init()
1735 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_irec_new() argument
1742 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_irec_new()
1743 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_new()
1746 xfs_iext_realloc_indirect(ifp, ++nlists * in xfs_iext_irec_new()
1752 erp = ifp->if_u1.if_ext_irec; in xfs_iext_irec_new()
1759 erp = ifp->if_u1.if_ext_irec; in xfs_iext_irec_new()
1761 ifp->if_real_bytes = nlists * XFS_IEXT_BUFSZ; in xfs_iext_irec_new()
1774 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_irec_remove() argument
1781 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_irec_remove()
1782 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_remove()
1783 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_irec_remove()
1785 xfs_iext_irec_update_extoffs(ifp, erp_idx + 1, in xfs_iext_irec_remove()
1790 erp = ifp->if_u1.if_ext_irec; in xfs_iext_irec_remove()
1802 xfs_iext_realloc_indirect(ifp, in xfs_iext_irec_remove()
1805 kmem_free(ifp->if_u1.if_ext_irec); in xfs_iext_irec_remove()
1807 ifp->if_real_bytes = nlists * XFS_IEXT_BUFSZ; in xfs_iext_irec_remove()
1823 xfs_ifork_t *ifp) /* inode fork pointer */ in xfs_iext_irec_compact() argument
1828 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_irec_compact()
1829 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_compact()
1830 nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); in xfs_iext_irec_compact()
1833 xfs_iext_destroy(ifp); in xfs_iext_irec_compact()
1835 xfs_iext_indirect_to_direct(ifp); in xfs_iext_irec_compact()
1836 xfs_iext_direct_to_inline(ifp, nextents); in xfs_iext_irec_compact()
1838 xfs_iext_indirect_to_direct(ifp); in xfs_iext_irec_compact()
1840 xfs_iext_irec_compact_pages(ifp); in xfs_iext_irec_compact()
1849 xfs_ifork_t *ifp) /* inode fork pointer */ in xfs_iext_irec_compact_pages() argument
1855 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_irec_compact_pages()
1856 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_compact_pages()
1858 erp = &ifp->if_u1.if_ext_irec[erp_idx]; in xfs_iext_irec_compact_pages()
1873 xfs_iext_irec_remove(ifp, erp_idx + 1); in xfs_iext_irec_compact_pages()
1874 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_compact_pages()
1890 xfs_ifork_t *ifp, /* inode fork pointer */ in xfs_iext_irec_update_extoffs() argument
1897 ASSERT(ifp->if_flags & XFS_IFEXTIREC); in xfs_iext_irec_update_extoffs()
1898 nlists = ifp->if_real_bytes / XFS_IEXT_BUFSZ; in xfs_iext_irec_update_extoffs()
1900 ifp->if_u1.if_ext_irec[i].er_extoff += ext_diff; in xfs_iext_irec_update_extoffs()