Lines Matching refs:args

60 STATIC int xfs_attr3_leaf_create(struct xfs_da_args *args,
64 struct xfs_da_args *args, int freemap_index);
65 STATIC void xfs_attr3_leaf_compact(struct xfs_da_args *args,
82 STATIC void xfs_attr3_leaf_moveents(struct xfs_da_args *args,
496 xfs_attr_shortform_create(xfs_da_args_t *args) in xfs_attr_shortform_create() argument
502 trace_xfs_attr_sf_create(args); in xfs_attr_shortform_create()
504 dp = args->dp; in xfs_attr_shortform_create()
520 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_create()
528 xfs_attr_shortform_add(xfs_da_args_t *args, int forkoff) in xfs_attr_shortform_add() argument
537 trace_xfs_attr_sf_add(args); in xfs_attr_shortform_add()
539 dp = args->dp; in xfs_attr_shortform_add()
549 if (sfe->namelen != args->namelen) in xfs_attr_shortform_add()
551 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_add()
553 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_add()
560 size = XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen); in xfs_attr_shortform_add()
565 sfe->namelen = args->namelen; in xfs_attr_shortform_add()
566 sfe->valuelen = args->valuelen; in xfs_attr_shortform_add()
567 sfe->flags = XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr_shortform_add()
568 memcpy(sfe->nameval, args->name, args->namelen); in xfs_attr_shortform_add()
569 memcpy(&sfe->nameval[args->namelen], args->value, args->valuelen); in xfs_attr_shortform_add()
572 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_add()
574 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_add()
600 xfs_attr_shortform_remove(xfs_da_args_t *args) in xfs_attr_shortform_remove() argument
608 trace_xfs_attr_sf_remove(args); in xfs_attr_shortform_remove()
610 dp = args->dp; in xfs_attr_shortform_remove()
619 if (sfe->namelen != args->namelen) in xfs_attr_shortform_remove()
621 if (memcmp(sfe->nameval, args->name, args->namelen) != 0) in xfs_attr_shortform_remove()
623 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_remove()
647 !(args->op_flags & XFS_DA_OP_ADDNAME)) { in xfs_attr_shortform_remove()
648 xfs_attr_fork_remove(dp, args->trans); in xfs_attr_shortform_remove()
654 (args->op_flags & XFS_DA_OP_ADDNAME) || in xfs_attr_shortform_remove()
657 xfs_trans_log_inode(args->trans, dp, in xfs_attr_shortform_remove()
661 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_remove()
671 xfs_attr_shortform_lookup(xfs_da_args_t *args) in xfs_attr_shortform_lookup() argument
678 trace_xfs_attr_sf_lookup(args); in xfs_attr_shortform_lookup()
680 ifp = args->dp->i_afp; in xfs_attr_shortform_lookup()
686 if (sfe->namelen != args->namelen) in xfs_attr_shortform_lookup()
688 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_lookup()
690 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_lookup()
702 xfs_attr_shortform_getvalue(xfs_da_args_t *args) in xfs_attr_shortform_getvalue() argument
708 ASSERT(args->dp->i_afp->if_flags == XFS_IFINLINE); in xfs_attr_shortform_getvalue()
709 sf = (xfs_attr_shortform_t *)args->dp->i_afp->if_u1.if_data; in xfs_attr_shortform_getvalue()
713 if (sfe->namelen != args->namelen) in xfs_attr_shortform_getvalue()
715 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_getvalue()
717 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_getvalue()
719 if (args->flags & ATTR_KERNOVAL) { in xfs_attr_shortform_getvalue()
720 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
723 if (args->valuelen < sfe->valuelen) { in xfs_attr_shortform_getvalue()
724 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
727 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
728 memcpy(args->value, &sfe->nameval[args->namelen], in xfs_attr_shortform_getvalue()
729 args->valuelen); in xfs_attr_shortform_getvalue()
739 xfs_attr_shortform_to_leaf(xfs_da_args_t *args) in xfs_attr_shortform_to_leaf() argument
751 trace_xfs_attr_sf_to_leaf(args); in xfs_attr_shortform_to_leaf()
753 dp = args->dp; in xfs_attr_shortform_to_leaf()
766 error = xfs_da_grow_inode(args, &blkno); in xfs_attr_shortform_to_leaf()
780 error = xfs_attr3_leaf_create(args, blkno, &bp); in xfs_attr_shortform_to_leaf()
782 error = xfs_da_shrink_inode(args, 0, bp); in xfs_attr_shortform_to_leaf()
793 nargs.geo = args->geo; in xfs_attr_shortform_to_leaf()
794 nargs.firstblock = args->firstblock; in xfs_attr_shortform_to_leaf()
795 nargs.flist = args->flist; in xfs_attr_shortform_to_leaf()
796 nargs.total = args->total; in xfs_attr_shortform_to_leaf()
798 nargs.trans = args->trans; in xfs_attr_shortform_to_leaf()
874 struct xfs_da_args *args, in xfs_attr3_leaf_to_shortform() argument
882 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_shortform()
887 trace_xfs_attr_leaf_to_sf(args); in xfs_attr3_leaf_to_shortform()
889 tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_to_shortform()
893 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
896 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_to_shortform()
900 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
905 error = xfs_da_shrink_inode(args, 0, bp); in xfs_attr3_leaf_to_shortform()
912 xfs_attr_fork_remove(dp, args->trans); in xfs_attr3_leaf_to_shortform()
916 xfs_attr_shortform_create(args); in xfs_attr3_leaf_to_shortform()
922 nargs.geo = args->geo; in xfs_attr3_leaf_to_shortform()
924 nargs.firstblock = args->firstblock; in xfs_attr3_leaf_to_shortform()
925 nargs.flist = args->flist; in xfs_attr3_leaf_to_shortform()
926 nargs.total = args->total; in xfs_attr3_leaf_to_shortform()
928 nargs.trans = args->trans; in xfs_attr3_leaf_to_shortform()
958 struct xfs_da_args *args) in xfs_attr3_leaf_to_node() argument
966 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_node()
973 trace_xfs_attr_leaf_to_node(args); in xfs_attr3_leaf_to_node()
975 error = xfs_da_grow_inode(args, &blkno); in xfs_attr3_leaf_to_node()
978 error = xfs_attr3_leaf_read(args->trans, dp, 0, -1, &bp1); in xfs_attr3_leaf_to_node()
982 error = xfs_da_get_buf(args->trans, dp, blkno, -1, &bp2, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
987 xfs_trans_buf_set_type(args->trans, bp2, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_to_node()
989 memcpy(bp2->b_addr, bp1->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_node()
994 xfs_trans_log_buf(args->trans, bp2, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
999 error = xfs_da3_node_create(args, 0, 1, &bp1, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
1007 xfs_attr3_leaf_hdr_from_disk(args->geo, &icleafhdr, leaf); in xfs_attr3_leaf_to_node()
1015 xfs_trans_log_buf(args->trans, bp1, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
1031 struct xfs_da_args *args, in xfs_attr3_leaf_create() argument
1037 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_create()
1042 trace_xfs_attr_leaf_create(args); in xfs_attr3_leaf_create()
1044 error = xfs_da_get_buf(args->trans, args->dp, blkno, -1, &bp, in xfs_attr3_leaf_create()
1049 xfs_trans_buf_set_type(args->trans, bp, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_create()
1051 memset(leaf, 0, args->geo->blksize); in xfs_attr3_leaf_create()
1054 ichdr.firstused = args->geo->blksize; in xfs_attr3_leaf_create()
1072 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_create()
1073 xfs_trans_log_buf(args->trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_create()
1091 trace_xfs_attr_leaf_split(state->args); in xfs_attr3_leaf_split()
1097 error = xfs_da_grow_inode(state->args, &blkno); in xfs_attr3_leaf_split()
1100 error = xfs_attr3_leaf_create(state->args, blkno, &newblk->bp); in xfs_attr3_leaf_split()
1123 trace_xfs_attr_leaf_add_old(state->args); in xfs_attr3_leaf_split()
1124 error = xfs_attr3_leaf_add(oldblk->bp, state->args); in xfs_attr3_leaf_split()
1126 trace_xfs_attr_leaf_add_new(state->args); in xfs_attr3_leaf_split()
1127 error = xfs_attr3_leaf_add(newblk->bp, state->args); in xfs_attr3_leaf_split()
1144 struct xfs_da_args *args) in xfs_attr3_leaf_add() argument
1154 trace_xfs_attr_leaf_add(args); in xfs_attr3_leaf_add()
1157 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_add()
1158 ASSERT(args->index >= 0 && args->index <= ichdr.count); in xfs_attr3_leaf_add()
1159 entsize = xfs_attr_leaf_newentsize(args, NULL); in xfs_attr3_leaf_add()
1178 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, i); in xfs_attr3_leaf_add()
1196 xfs_attr3_leaf_compact(args, &ichdr, bp); in xfs_attr3_leaf_add()
1207 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, 0); in xfs_attr3_leaf_add()
1210 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_add()
1211 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add()
1224 struct xfs_da_args *args, in xfs_attr3_leaf_add_work() argument
1235 trace_xfs_attr_leaf_add_work(args); in xfs_attr3_leaf_add_work()
1239 ASSERT(args->index >= 0 && args->index <= ichdr->count); in xfs_attr3_leaf_add_work()
1244 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_add_work()
1245 if (args->index < ichdr->count) { in xfs_attr3_leaf_add_work()
1246 tmp = ichdr->count - args->index; in xfs_attr3_leaf_add_work()
1249 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1257 mp = args->trans->t_mountp; in xfs_attr3_leaf_add_work()
1258 ASSERT(ichdr->freemap[mapindex].base < args->geo->blksize); in xfs_attr3_leaf_add_work()
1261 xfs_attr_leaf_newentsize(args, NULL)); in xfs_attr3_leaf_add_work()
1262 ASSERT(ichdr->freemap[mapindex].size < args->geo->blksize); in xfs_attr3_leaf_add_work()
1265 ichdr->freemap[mapindex].size -= xfs_attr_leaf_newentsize(args, &tmp); in xfs_attr3_leaf_add_work()
1269 entry->hashval = cpu_to_be32(args->hashval); in xfs_attr3_leaf_add_work()
1271 entry->flags |= XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr3_leaf_add_work()
1272 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr3_leaf_add_work()
1274 if ((args->blkno2 == args->blkno) && in xfs_attr3_leaf_add_work()
1275 (args->index2 <= args->index)) { in xfs_attr3_leaf_add_work()
1276 args->index2++; in xfs_attr3_leaf_add_work()
1279 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1281 ASSERT((args->index == 0) || in xfs_attr3_leaf_add_work()
1283 ASSERT((args->index == ichdr->count - 1) || in xfs_attr3_leaf_add_work()
1294 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_add_work()
1295 name_loc->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1296 name_loc->valuelen = cpu_to_be16(args->valuelen); in xfs_attr3_leaf_add_work()
1297 memcpy((char *)name_loc->nameval, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1298 memcpy((char *)&name_loc->nameval[args->namelen], args->value, in xfs_attr3_leaf_add_work()
1301 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_add_work()
1302 name_rmt->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1303 memcpy((char *)name_rmt->name, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1308 args->rmtblkno = 1; in xfs_attr3_leaf_add_work()
1309 args->rmtblkcnt = xfs_attr3_rmt_blocks(mp, args->valuelen); in xfs_attr3_leaf_add_work()
1310 args->rmtvaluelen = args->valuelen; in xfs_attr3_leaf_add_work()
1312 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1313 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_add_work()
1314 xfs_attr_leaf_entsize(leaf, args->index))); in xfs_attr3_leaf_add_work()
1333 ichdr->usedbytes += xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_add_work()
1342 struct xfs_da_args *args, in xfs_attr3_leaf_compact() argument
1349 struct xfs_trans *trans = args->trans; in xfs_attr3_leaf_compact()
1352 trace_xfs_attr_leaf_compact(args); in xfs_attr3_leaf_compact()
1354 tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_compact()
1355 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_compact()
1356 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_compact()
1369 ichdr_dst->firstused = args->geo->blksize; in xfs_attr3_leaf_compact()
1378 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf_dst, ichdr_dst); in xfs_attr3_leaf_compact()
1384 xfs_attr3_leaf_moveents(args, leaf_src, &ichdr_src, 0, in xfs_attr3_leaf_compact()
1390 xfs_trans_log_buf(trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_compact()
1453 struct xfs_da_args *args; in xfs_attr3_leaf_rebalance() local
1473 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_rebalance()
1474 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_rebalance()
1476 args = state->args; in xfs_attr3_leaf_rebalance()
1478 trace_xfs_attr_leaf_rebalance(args); in xfs_attr3_leaf_rebalance()
1537 xfs_attr3_leaf_compact(args, &ichdr2, blk2->bp); in xfs_attr3_leaf_rebalance()
1542 xfs_attr3_leaf_moveents(args, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1566 xfs_attr3_leaf_compact(args, &ichdr1, blk1->bp); in xfs_attr3_leaf_rebalance()
1571 xfs_attr3_leaf_moveents(args, leaf2, &ichdr2, 0, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1575 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf1, &ichdr1); in xfs_attr3_leaf_rebalance()
1576 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf2, &ichdr2); in xfs_attr3_leaf_rebalance()
1577 xfs_trans_log_buf(args->trans, blk1->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1578 xfs_trans_log_buf(args->trans, blk2->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1603 args->index = args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1604 args->blkno = args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1607 args->index = blk1->index; in xfs_attr3_leaf_rebalance()
1608 args->blkno = blk1->blkno; in xfs_attr3_leaf_rebalance()
1609 args->index2 = 0; in xfs_attr3_leaf_rebalance()
1610 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1618 args->index = blk2->index; in xfs_attr3_leaf_rebalance()
1619 args->blkno = blk2->blkno; in xfs_attr3_leaf_rebalance()
1626 args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1627 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1632 args->index = args->index2 = blk1->index; in xfs_attr3_leaf_rebalance()
1633 args->blkno = args->blkno2 = blk1->blkno; in xfs_attr3_leaf_rebalance()
1673 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1675 lastdelta = state->args->geo->blksize; in xfs_attr3_leaf_figure_balance()
1685 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1721 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1760 trace_xfs_attr_leaf_toosmall(state->args); in xfs_attr3_leaf_toosmall()
1769 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr, leaf); in xfs_attr3_leaf_toosmall()
1773 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_attr3_leaf_toosmall()
1820 error = xfs_attr3_leaf_read(state->args->trans, state->args->dp, in xfs_attr3_leaf_toosmall()
1825 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, bp->b_addr); in xfs_attr3_leaf_toosmall()
1827 bytes = state->args->geo->blksize - in xfs_attr3_leaf_toosmall()
1828 (state->args->geo->blksize >> 2) - in xfs_attr3_leaf_toosmall()
1834 xfs_trans_brelse(state->args->trans, bp); in xfs_attr3_leaf_toosmall()
1874 struct xfs_da_args *args) in xfs_attr3_leaf_remove() argument
1887 trace_xfs_attr_leaf_remove(args); in xfs_attr3_leaf_remove()
1890 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_remove()
1892 ASSERT(ichdr.count > 0 && ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_remove()
1893 ASSERT(args->index >= 0 && args->index < ichdr.count); in xfs_attr3_leaf_remove()
1897 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_remove()
1900 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
1913 entsize = xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_remove()
1915 ASSERT(ichdr.freemap[i].base < args->geo->blksize); in xfs_attr3_leaf_remove()
1916 ASSERT(ichdr.freemap[i].size < args->geo->blksize); in xfs_attr3_leaf_remove()
1971 memset(xfs_attr3_leaf_name(leaf, args->index), 0, entsize); in xfs_attr3_leaf_remove()
1973 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
1974 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_remove()
1977 tmp = (ichdr.count - args->index) * sizeof(xfs_attr_leaf_entry_t); in xfs_attr3_leaf_remove()
1980 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
1993 tmp = args->geo->blksize; in xfs_attr3_leaf_remove()
1997 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
2007 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_remove()
2008 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
2019 return tmp < args->geo->magicpct; /* leaf is < 37% full */ in xfs_attr3_leaf_remove()
2037 trace_xfs_attr_leaf_unbalance(state->args); in xfs_attr3_leaf_unbalance()
2041 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &drophdr, drop_leaf); in xfs_attr3_leaf_unbalance()
2042 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &savehdr, save_leaf); in xfs_attr3_leaf_unbalance()
2062 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2067 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2080 tmp_leaf = kmem_zalloc(state->args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_unbalance()
2093 tmphdr.firstused = state->args->geo->blksize; in xfs_attr3_leaf_unbalance()
2096 xfs_attr3_leaf_hdr_to_disk(state->args->geo, tmp_leaf, &tmphdr); in xfs_attr3_leaf_unbalance()
2100 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2104 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2109 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2113 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2118 memcpy(save_leaf, tmp_leaf, state->args->geo->blksize); in xfs_attr3_leaf_unbalance()
2123 xfs_attr3_leaf_hdr_to_disk(state->args->geo, save_leaf, &savehdr); in xfs_attr3_leaf_unbalance()
2124 xfs_trans_log_buf(state->args->trans, save_blk->bp, 0, in xfs_attr3_leaf_unbalance()
2125 state->args->geo->blksize - 1); in xfs_attr3_leaf_unbalance()
2154 struct xfs_da_args *args) in xfs_attr3_leaf_lookup_int() argument
2166 trace_xfs_attr_leaf_lookup(args); in xfs_attr3_leaf_lookup_int()
2169 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_lookup_int()
2171 ASSERT(ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_lookup_int()
2176 hashval = args->hashval; in xfs_attr3_leaf_lookup_int()
2204 args->index = probe; in xfs_attr3_leaf_lookup_int()
2220 if ((args->flags & XFS_ATTR_INCOMPLETE) != in xfs_attr3_leaf_lookup_int()
2226 if (name_loc->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2228 if (memcmp(args->name, name_loc->nameval, in xfs_attr3_leaf_lookup_int()
2229 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2231 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2233 args->index = probe; in xfs_attr3_leaf_lookup_int()
2237 if (name_rmt->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2239 if (memcmp(args->name, name_rmt->name, in xfs_attr3_leaf_lookup_int()
2240 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2242 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2244 args->index = probe; in xfs_attr3_leaf_lookup_int()
2245 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_lookup_int()
2246 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_lookup_int()
2247 args->rmtblkcnt = xfs_attr3_rmt_blocks( in xfs_attr3_leaf_lookup_int()
2248 args->dp->i_mount, in xfs_attr3_leaf_lookup_int()
2249 args->rmtvaluelen); in xfs_attr3_leaf_lookup_int()
2253 args->index = probe; in xfs_attr3_leaf_lookup_int()
2264 struct xfs_da_args *args) in xfs_attr3_leaf_getvalue() argument
2274 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_getvalue()
2275 ASSERT(ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_getvalue()
2276 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_getvalue()
2278 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_getvalue()
2280 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_getvalue()
2281 ASSERT(name_loc->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2282 ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2284 if (args->flags & ATTR_KERNOVAL) { in xfs_attr3_leaf_getvalue()
2285 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2288 if (args->valuelen < valuelen) { in xfs_attr3_leaf_getvalue()
2289 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2292 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2293 memcpy(args->value, &name_loc->nameval[args->namelen], valuelen); in xfs_attr3_leaf_getvalue()
2295 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_getvalue()
2296 ASSERT(name_rmt->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2297 ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2298 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_getvalue()
2299 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_getvalue()
2300 args->rmtblkcnt = xfs_attr3_rmt_blocks(args->dp->i_mount, in xfs_attr3_leaf_getvalue()
2301 args->rmtvaluelen); in xfs_attr3_leaf_getvalue()
2302 if (args->flags & ATTR_KERNOVAL) { in xfs_attr3_leaf_getvalue()
2303 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2306 if (args->valuelen < args->rmtvaluelen) { in xfs_attr3_leaf_getvalue()
2307 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2310 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2326 struct xfs_da_args *args, in xfs_attr3_leaf_moveents() argument
2353 ASSERT(ichdr_s->count > 0 && ichdr_s->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2356 ASSERT(ichdr_d->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2408 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2412 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2433 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2448 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2518 struct xfs_da_args *args, in xfs_attr_leaf_newentsize() argument
2523 size = xfs_attr_leaf_entsize_local(args->namelen, args->valuelen); in xfs_attr_leaf_newentsize()
2524 if (size < xfs_attr_leaf_entsize_local_max(args->geo->blksize)) { in xfs_attr_leaf_newentsize()
2531 return xfs_attr_leaf_entsize_remote(args->namelen); in xfs_attr_leaf_newentsize()
2544 struct xfs_da_args *args) in xfs_attr3_leaf_clearflag() argument
2558 trace_xfs_attr_leaf_clearflag(args); in xfs_attr3_leaf_clearflag()
2562 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_clearflag()
2567 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_clearflag()
2571 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_clearflag()
2572 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_clearflag()
2573 ASSERT(args->index >= 0); in xfs_attr3_leaf_clearflag()
2576 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_clearflag()
2580 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2584 ASSERT(be32_to_cpu(entry->hashval) == args->hashval); in xfs_attr3_leaf_clearflag()
2585 ASSERT(namelen == args->namelen); in xfs_attr3_leaf_clearflag()
2586 ASSERT(memcmp(name, args->name, namelen) == 0); in xfs_attr3_leaf_clearflag()
2590 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2593 if (args->rmtblkno) { in xfs_attr3_leaf_clearflag()
2595 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2596 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_clearflag()
2597 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_clearflag()
2598 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2605 return xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_clearflag()
2613 struct xfs_da_args *args) in xfs_attr3_leaf_setflag() argument
2624 trace_xfs_attr_leaf_setflag(args); in xfs_attr3_leaf_setflag()
2629 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_setflag()
2635 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_setflag()
2636 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_setflag()
2637 ASSERT(args->index >= 0); in xfs_attr3_leaf_setflag()
2639 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_setflag()
2643 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2646 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_setflag()
2649 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2656 return xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_setflag()
2668 struct xfs_da_args *args) in xfs_attr3_leaf_flipflags() argument
2686 trace_xfs_attr_leaf_flipflags(args); in xfs_attr3_leaf_flipflags()
2691 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp1); in xfs_attr3_leaf_flipflags()
2698 if (args->blkno2 != args->blkno) { in xfs_attr3_leaf_flipflags()
2699 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno2, in xfs_attr3_leaf_flipflags()
2708 entry1 = &xfs_attr3_leaf_entryp(leaf1)[args->index]; in xfs_attr3_leaf_flipflags()
2711 entry2 = &xfs_attr3_leaf_entryp(leaf2)[args->index2]; in xfs_attr3_leaf_flipflags()
2714 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_flipflags()
2715 ASSERT(args->index < ichdr1.count); in xfs_attr3_leaf_flipflags()
2716 ASSERT(args->index >= 0); in xfs_attr3_leaf_flipflags()
2718 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_flipflags()
2719 ASSERT(args->index2 < ichdr2.count); in xfs_attr3_leaf_flipflags()
2720 ASSERT(args->index2 >= 0); in xfs_attr3_leaf_flipflags()
2723 name_loc = xfs_attr3_leaf_name_local(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2727 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2732 name_loc = xfs_attr3_leaf_name_local(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2736 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2749 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2751 if (args->rmtblkno) { in xfs_attr3_leaf_flipflags()
2753 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2754 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_flipflags()
2755 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_flipflags()
2756 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2761 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2764 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2767 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2774 error = xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_flipflags()