Lines Matching refs:args

59 STATIC int xfs_attr3_leaf_create(struct xfs_da_args *args,
63 struct xfs_da_args *args, int freemap_index);
64 STATIC void xfs_attr3_leaf_compact(struct xfs_da_args *args,
81 STATIC void xfs_attr3_leaf_moveents(struct xfs_da_args *args,
492 xfs_attr_shortform_create(xfs_da_args_t *args) in xfs_attr_shortform_create() argument
498 trace_xfs_attr_sf_create(args); in xfs_attr_shortform_create()
500 dp = args->dp; in xfs_attr_shortform_create()
516 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_create()
524 xfs_attr_shortform_add(xfs_da_args_t *args, int forkoff) in xfs_attr_shortform_add() argument
533 trace_xfs_attr_sf_add(args); in xfs_attr_shortform_add()
535 dp = args->dp; in xfs_attr_shortform_add()
545 if (sfe->namelen != args->namelen) in xfs_attr_shortform_add()
547 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_add()
549 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_add()
556 size = XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen); in xfs_attr_shortform_add()
561 sfe->namelen = args->namelen; in xfs_attr_shortform_add()
562 sfe->valuelen = args->valuelen; in xfs_attr_shortform_add()
563 sfe->flags = XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr_shortform_add()
564 memcpy(sfe->nameval, args->name, args->namelen); in xfs_attr_shortform_add()
565 memcpy(&sfe->nameval[args->namelen], args->value, args->valuelen); in xfs_attr_shortform_add()
568 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_add()
570 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_add()
596 xfs_attr_shortform_remove(xfs_da_args_t *args) in xfs_attr_shortform_remove() argument
604 trace_xfs_attr_sf_remove(args); in xfs_attr_shortform_remove()
606 dp = args->dp; in xfs_attr_shortform_remove()
615 if (sfe->namelen != args->namelen) in xfs_attr_shortform_remove()
617 if (memcmp(sfe->nameval, args->name, args->namelen) != 0) in xfs_attr_shortform_remove()
619 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_remove()
643 !(args->op_flags & XFS_DA_OP_ADDNAME)) { in xfs_attr_shortform_remove()
644 xfs_attr_fork_remove(dp, args->trans); in xfs_attr_shortform_remove()
650 (args->op_flags & XFS_DA_OP_ADDNAME) || in xfs_attr_shortform_remove()
653 xfs_trans_log_inode(args->trans, dp, in xfs_attr_shortform_remove()
657 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_remove()
667 xfs_attr_shortform_lookup(xfs_da_args_t *args) in xfs_attr_shortform_lookup() argument
674 trace_xfs_attr_sf_lookup(args); in xfs_attr_shortform_lookup()
676 ifp = args->dp->i_afp; in xfs_attr_shortform_lookup()
682 if (sfe->namelen != args->namelen) in xfs_attr_shortform_lookup()
684 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_lookup()
686 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_lookup()
698 xfs_attr_shortform_getvalue(xfs_da_args_t *args) in xfs_attr_shortform_getvalue() argument
704 ASSERT(args->dp->i_afp->if_flags == XFS_IFINLINE); in xfs_attr_shortform_getvalue()
705 sf = (xfs_attr_shortform_t *)args->dp->i_afp->if_u1.if_data; in xfs_attr_shortform_getvalue()
709 if (sfe->namelen != args->namelen) in xfs_attr_shortform_getvalue()
711 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_getvalue()
713 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_getvalue()
715 if (args->flags & ATTR_KERNOVAL) { in xfs_attr_shortform_getvalue()
716 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
719 if (args->valuelen < sfe->valuelen) { in xfs_attr_shortform_getvalue()
720 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
723 args->valuelen = sfe->valuelen; in xfs_attr_shortform_getvalue()
724 memcpy(args->value, &sfe->nameval[args->namelen], in xfs_attr_shortform_getvalue()
725 args->valuelen); in xfs_attr_shortform_getvalue()
735 xfs_attr_shortform_to_leaf(xfs_da_args_t *args) in xfs_attr_shortform_to_leaf() argument
747 trace_xfs_attr_sf_to_leaf(args); in xfs_attr_shortform_to_leaf()
749 dp = args->dp; in xfs_attr_shortform_to_leaf()
762 error = xfs_da_grow_inode(args, &blkno); in xfs_attr_shortform_to_leaf()
776 error = xfs_attr3_leaf_create(args, blkno, &bp); in xfs_attr_shortform_to_leaf()
778 error = xfs_da_shrink_inode(args, 0, bp); in xfs_attr_shortform_to_leaf()
789 nargs.geo = args->geo; in xfs_attr_shortform_to_leaf()
790 nargs.firstblock = args->firstblock; in xfs_attr_shortform_to_leaf()
791 nargs.flist = args->flist; in xfs_attr_shortform_to_leaf()
792 nargs.total = args->total; in xfs_attr_shortform_to_leaf()
794 nargs.trans = args->trans; in xfs_attr_shortform_to_leaf()
870 struct xfs_da_args *args, in xfs_attr3_leaf_to_shortform() argument
878 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_shortform()
883 trace_xfs_attr_leaf_to_sf(args); in xfs_attr3_leaf_to_shortform()
885 tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_to_shortform()
889 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
892 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_to_shortform()
896 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
901 error = xfs_da_shrink_inode(args, 0, bp); in xfs_attr3_leaf_to_shortform()
908 xfs_attr_fork_remove(dp, args->trans); in xfs_attr3_leaf_to_shortform()
912 xfs_attr_shortform_create(args); in xfs_attr3_leaf_to_shortform()
918 nargs.geo = args->geo; in xfs_attr3_leaf_to_shortform()
920 nargs.firstblock = args->firstblock; in xfs_attr3_leaf_to_shortform()
921 nargs.flist = args->flist; in xfs_attr3_leaf_to_shortform()
922 nargs.total = args->total; in xfs_attr3_leaf_to_shortform()
924 nargs.trans = args->trans; in xfs_attr3_leaf_to_shortform()
954 struct xfs_da_args *args) in xfs_attr3_leaf_to_node() argument
962 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_node()
969 trace_xfs_attr_leaf_to_node(args); in xfs_attr3_leaf_to_node()
971 error = xfs_da_grow_inode(args, &blkno); in xfs_attr3_leaf_to_node()
974 error = xfs_attr3_leaf_read(args->trans, dp, 0, -1, &bp1); in xfs_attr3_leaf_to_node()
978 error = xfs_da_get_buf(args->trans, dp, blkno, -1, &bp2, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
983 xfs_trans_buf_set_type(args->trans, bp2, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_to_node()
985 memcpy(bp2->b_addr, bp1->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_node()
990 xfs_trans_log_buf(args->trans, bp2, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
995 error = xfs_da3_node_create(args, 0, 1, &bp1, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
1003 xfs_attr3_leaf_hdr_from_disk(args->geo, &icleafhdr, leaf); in xfs_attr3_leaf_to_node()
1011 xfs_trans_log_buf(args->trans, bp1, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
1027 struct xfs_da_args *args, in xfs_attr3_leaf_create() argument
1033 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_create()
1038 trace_xfs_attr_leaf_create(args); in xfs_attr3_leaf_create()
1040 error = xfs_da_get_buf(args->trans, args->dp, blkno, -1, &bp, in xfs_attr3_leaf_create()
1045 xfs_trans_buf_set_type(args->trans, bp, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_create()
1047 memset(leaf, 0, args->geo->blksize); in xfs_attr3_leaf_create()
1050 ichdr.firstused = args->geo->blksize; in xfs_attr3_leaf_create()
1068 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_create()
1069 xfs_trans_log_buf(args->trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_create()
1087 trace_xfs_attr_leaf_split(state->args); in xfs_attr3_leaf_split()
1093 error = xfs_da_grow_inode(state->args, &blkno); in xfs_attr3_leaf_split()
1096 error = xfs_attr3_leaf_create(state->args, blkno, &newblk->bp); in xfs_attr3_leaf_split()
1119 trace_xfs_attr_leaf_add_old(state->args); in xfs_attr3_leaf_split()
1120 error = xfs_attr3_leaf_add(oldblk->bp, state->args); in xfs_attr3_leaf_split()
1122 trace_xfs_attr_leaf_add_new(state->args); in xfs_attr3_leaf_split()
1123 error = xfs_attr3_leaf_add(newblk->bp, state->args); in xfs_attr3_leaf_split()
1140 struct xfs_da_args *args) in xfs_attr3_leaf_add() argument
1150 trace_xfs_attr_leaf_add(args); in xfs_attr3_leaf_add()
1153 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_add()
1154 ASSERT(args->index >= 0 && args->index <= ichdr.count); in xfs_attr3_leaf_add()
1155 entsize = xfs_attr_leaf_newentsize(args, NULL); in xfs_attr3_leaf_add()
1174 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, i); in xfs_attr3_leaf_add()
1192 xfs_attr3_leaf_compact(args, &ichdr, bp); in xfs_attr3_leaf_add()
1203 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, 0); in xfs_attr3_leaf_add()
1206 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_add()
1207 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add()
1220 struct xfs_da_args *args, in xfs_attr3_leaf_add_work() argument
1231 trace_xfs_attr_leaf_add_work(args); in xfs_attr3_leaf_add_work()
1235 ASSERT(args->index >= 0 && args->index <= ichdr->count); in xfs_attr3_leaf_add_work()
1240 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_add_work()
1241 if (args->index < ichdr->count) { in xfs_attr3_leaf_add_work()
1242 tmp = ichdr->count - args->index; in xfs_attr3_leaf_add_work()
1245 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1253 mp = args->trans->t_mountp; in xfs_attr3_leaf_add_work()
1254 ASSERT(ichdr->freemap[mapindex].base < args->geo->blksize); in xfs_attr3_leaf_add_work()
1257 xfs_attr_leaf_newentsize(args, NULL)); in xfs_attr3_leaf_add_work()
1258 ASSERT(ichdr->freemap[mapindex].size < args->geo->blksize); in xfs_attr3_leaf_add_work()
1261 ichdr->freemap[mapindex].size -= xfs_attr_leaf_newentsize(args, &tmp); in xfs_attr3_leaf_add_work()
1265 entry->hashval = cpu_to_be32(args->hashval); in xfs_attr3_leaf_add_work()
1267 entry->flags |= XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr3_leaf_add_work()
1268 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr3_leaf_add_work()
1270 if ((args->blkno2 == args->blkno) && in xfs_attr3_leaf_add_work()
1271 (args->index2 <= args->index)) { in xfs_attr3_leaf_add_work()
1272 args->index2++; in xfs_attr3_leaf_add_work()
1275 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1277 ASSERT((args->index == 0) || in xfs_attr3_leaf_add_work()
1279 ASSERT((args->index == ichdr->count - 1) || in xfs_attr3_leaf_add_work()
1290 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_add_work()
1291 name_loc->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1292 name_loc->valuelen = cpu_to_be16(args->valuelen); in xfs_attr3_leaf_add_work()
1293 memcpy((char *)name_loc->nameval, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1294 memcpy((char *)&name_loc->nameval[args->namelen], args->value, in xfs_attr3_leaf_add_work()
1297 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_add_work()
1298 name_rmt->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1299 memcpy((char *)name_rmt->name, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1304 args->rmtblkno = 1; in xfs_attr3_leaf_add_work()
1305 args->rmtblkcnt = xfs_attr3_rmt_blocks(mp, args->valuelen); in xfs_attr3_leaf_add_work()
1306 args->rmtvaluelen = args->valuelen; in xfs_attr3_leaf_add_work()
1308 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1309 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_add_work()
1310 xfs_attr_leaf_entsize(leaf, args->index))); in xfs_attr3_leaf_add_work()
1329 ichdr->usedbytes += xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_add_work()
1338 struct xfs_da_args *args, in xfs_attr3_leaf_compact() argument
1345 struct xfs_trans *trans = args->trans; in xfs_attr3_leaf_compact()
1348 trace_xfs_attr_leaf_compact(args); in xfs_attr3_leaf_compact()
1350 tmpbuffer = kmem_alloc(args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_compact()
1351 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_compact()
1352 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_compact()
1365 ichdr_dst->firstused = args->geo->blksize; in xfs_attr3_leaf_compact()
1374 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf_dst, ichdr_dst); in xfs_attr3_leaf_compact()
1380 xfs_attr3_leaf_moveents(args, leaf_src, &ichdr_src, 0, in xfs_attr3_leaf_compact()
1386 xfs_trans_log_buf(trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_compact()
1449 struct xfs_da_args *args; in xfs_attr3_leaf_rebalance() local
1469 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_rebalance()
1470 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_rebalance()
1472 args = state->args; in xfs_attr3_leaf_rebalance()
1474 trace_xfs_attr_leaf_rebalance(args); in xfs_attr3_leaf_rebalance()
1533 xfs_attr3_leaf_compact(args, &ichdr2, blk2->bp); in xfs_attr3_leaf_rebalance()
1538 xfs_attr3_leaf_moveents(args, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1562 xfs_attr3_leaf_compact(args, &ichdr1, blk1->bp); in xfs_attr3_leaf_rebalance()
1567 xfs_attr3_leaf_moveents(args, leaf2, &ichdr2, 0, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1571 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf1, &ichdr1); in xfs_attr3_leaf_rebalance()
1572 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf2, &ichdr2); in xfs_attr3_leaf_rebalance()
1573 xfs_trans_log_buf(args->trans, blk1->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1574 xfs_trans_log_buf(args->trans, blk2->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1599 args->index = args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1600 args->blkno = args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1603 args->index = blk1->index; in xfs_attr3_leaf_rebalance()
1604 args->blkno = blk1->blkno; in xfs_attr3_leaf_rebalance()
1605 args->index2 = 0; in xfs_attr3_leaf_rebalance()
1606 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1614 args->index = blk2->index; in xfs_attr3_leaf_rebalance()
1615 args->blkno = blk2->blkno; in xfs_attr3_leaf_rebalance()
1622 args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1623 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1628 args->index = args->index2 = blk1->index; in xfs_attr3_leaf_rebalance()
1629 args->blkno = args->blkno2 = blk1->blkno; in xfs_attr3_leaf_rebalance()
1669 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1671 lastdelta = state->args->geo->blksize; in xfs_attr3_leaf_figure_balance()
1681 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1717 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1756 trace_xfs_attr_leaf_toosmall(state->args); in xfs_attr3_leaf_toosmall()
1765 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr, leaf); in xfs_attr3_leaf_toosmall()
1769 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_attr3_leaf_toosmall()
1816 error = xfs_attr3_leaf_read(state->args->trans, state->args->dp, in xfs_attr3_leaf_toosmall()
1821 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, bp->b_addr); in xfs_attr3_leaf_toosmall()
1823 bytes = state->args->geo->blksize - in xfs_attr3_leaf_toosmall()
1824 (state->args->geo->blksize >> 2) - in xfs_attr3_leaf_toosmall()
1830 xfs_trans_brelse(state->args->trans, bp); in xfs_attr3_leaf_toosmall()
1870 struct xfs_da_args *args) in xfs_attr3_leaf_remove() argument
1883 trace_xfs_attr_leaf_remove(args); in xfs_attr3_leaf_remove()
1886 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_remove()
1888 ASSERT(ichdr.count > 0 && ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_remove()
1889 ASSERT(args->index >= 0 && args->index < ichdr.count); in xfs_attr3_leaf_remove()
1893 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_remove()
1896 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
1909 entsize = xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_remove()
1911 ASSERT(ichdr.freemap[i].base < args->geo->blksize); in xfs_attr3_leaf_remove()
1912 ASSERT(ichdr.freemap[i].size < args->geo->blksize); in xfs_attr3_leaf_remove()
1967 memset(xfs_attr3_leaf_name(leaf, args->index), 0, entsize); in xfs_attr3_leaf_remove()
1969 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
1970 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_remove()
1973 tmp = (ichdr.count - args->index) * sizeof(xfs_attr_leaf_entry_t); in xfs_attr3_leaf_remove()
1976 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
1989 tmp = args->geo->blksize; in xfs_attr3_leaf_remove()
1993 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
2003 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_remove()
2004 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
2015 return tmp < args->geo->magicpct; /* leaf is < 37% full */ in xfs_attr3_leaf_remove()
2033 trace_xfs_attr_leaf_unbalance(state->args); in xfs_attr3_leaf_unbalance()
2037 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &drophdr, drop_leaf); in xfs_attr3_leaf_unbalance()
2038 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &savehdr, save_leaf); in xfs_attr3_leaf_unbalance()
2058 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2063 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2076 tmp_leaf = kmem_zalloc(state->args->geo->blksize, KM_SLEEP); in xfs_attr3_leaf_unbalance()
2089 tmphdr.firstused = state->args->geo->blksize; in xfs_attr3_leaf_unbalance()
2092 xfs_attr3_leaf_hdr_to_disk(state->args->geo, tmp_leaf, &tmphdr); in xfs_attr3_leaf_unbalance()
2096 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2100 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2105 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2109 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2114 memcpy(save_leaf, tmp_leaf, state->args->geo->blksize); in xfs_attr3_leaf_unbalance()
2119 xfs_attr3_leaf_hdr_to_disk(state->args->geo, save_leaf, &savehdr); in xfs_attr3_leaf_unbalance()
2120 xfs_trans_log_buf(state->args->trans, save_blk->bp, 0, in xfs_attr3_leaf_unbalance()
2121 state->args->geo->blksize - 1); in xfs_attr3_leaf_unbalance()
2150 struct xfs_da_args *args) in xfs_attr3_leaf_lookup_int() argument
2162 trace_xfs_attr_leaf_lookup(args); in xfs_attr3_leaf_lookup_int()
2165 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_lookup_int()
2167 ASSERT(ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_lookup_int()
2172 hashval = args->hashval; in xfs_attr3_leaf_lookup_int()
2200 args->index = probe; in xfs_attr3_leaf_lookup_int()
2216 if ((args->flags & XFS_ATTR_INCOMPLETE) != in xfs_attr3_leaf_lookup_int()
2222 if (name_loc->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2224 if (memcmp(args->name, name_loc->nameval, in xfs_attr3_leaf_lookup_int()
2225 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2227 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2229 args->index = probe; in xfs_attr3_leaf_lookup_int()
2233 if (name_rmt->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2235 if (memcmp(args->name, name_rmt->name, in xfs_attr3_leaf_lookup_int()
2236 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2238 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2240 args->index = probe; in xfs_attr3_leaf_lookup_int()
2241 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_lookup_int()
2242 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_lookup_int()
2243 args->rmtblkcnt = xfs_attr3_rmt_blocks( in xfs_attr3_leaf_lookup_int()
2244 args->dp->i_mount, in xfs_attr3_leaf_lookup_int()
2245 args->rmtvaluelen); in xfs_attr3_leaf_lookup_int()
2249 args->index = probe; in xfs_attr3_leaf_lookup_int()
2260 struct xfs_da_args *args) in xfs_attr3_leaf_getvalue() argument
2270 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_getvalue()
2271 ASSERT(ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_getvalue()
2272 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_getvalue()
2274 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_getvalue()
2276 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_getvalue()
2277 ASSERT(name_loc->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2278 ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2280 if (args->flags & ATTR_KERNOVAL) { in xfs_attr3_leaf_getvalue()
2281 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2284 if (args->valuelen < valuelen) { in xfs_attr3_leaf_getvalue()
2285 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2288 args->valuelen = valuelen; in xfs_attr3_leaf_getvalue()
2289 memcpy(args->value, &name_loc->nameval[args->namelen], valuelen); in xfs_attr3_leaf_getvalue()
2291 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_getvalue()
2292 ASSERT(name_rmt->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2293 ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2294 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_getvalue()
2295 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_getvalue()
2296 args->rmtblkcnt = xfs_attr3_rmt_blocks(args->dp->i_mount, in xfs_attr3_leaf_getvalue()
2297 args->rmtvaluelen); in xfs_attr3_leaf_getvalue()
2298 if (args->flags & ATTR_KERNOVAL) { in xfs_attr3_leaf_getvalue()
2299 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2302 if (args->valuelen < args->rmtvaluelen) { in xfs_attr3_leaf_getvalue()
2303 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2306 args->valuelen = args->rmtvaluelen; in xfs_attr3_leaf_getvalue()
2322 struct xfs_da_args *args, in xfs_attr3_leaf_moveents() argument
2349 ASSERT(ichdr_s->count > 0 && ichdr_s->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2352 ASSERT(ichdr_d->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2404 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2408 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2429 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2444 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2514 struct xfs_da_args *args, in xfs_attr_leaf_newentsize() argument
2519 size = xfs_attr_leaf_entsize_local(args->namelen, args->valuelen); in xfs_attr_leaf_newentsize()
2520 if (size < xfs_attr_leaf_entsize_local_max(args->geo->blksize)) { in xfs_attr_leaf_newentsize()
2527 return xfs_attr_leaf_entsize_remote(args->namelen); in xfs_attr_leaf_newentsize()
2540 struct xfs_da_args *args) in xfs_attr3_leaf_clearflag() argument
2554 trace_xfs_attr_leaf_clearflag(args); in xfs_attr3_leaf_clearflag()
2558 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_clearflag()
2563 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_clearflag()
2567 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_clearflag()
2568 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_clearflag()
2569 ASSERT(args->index >= 0); in xfs_attr3_leaf_clearflag()
2572 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_clearflag()
2576 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2580 ASSERT(be32_to_cpu(entry->hashval) == args->hashval); in xfs_attr3_leaf_clearflag()
2581 ASSERT(namelen == args->namelen); in xfs_attr3_leaf_clearflag()
2582 ASSERT(memcmp(name, args->name, namelen) == 0); in xfs_attr3_leaf_clearflag()
2586 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2589 if (args->rmtblkno) { in xfs_attr3_leaf_clearflag()
2591 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2592 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_clearflag()
2593 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_clearflag()
2594 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2601 return xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_clearflag()
2609 struct xfs_da_args *args) in xfs_attr3_leaf_setflag() argument
2620 trace_xfs_attr_leaf_setflag(args); in xfs_attr3_leaf_setflag()
2625 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_setflag()
2631 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_setflag()
2632 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_setflag()
2633 ASSERT(args->index >= 0); in xfs_attr3_leaf_setflag()
2635 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_setflag()
2639 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2642 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_setflag()
2645 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2652 return xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_setflag()
2664 struct xfs_da_args *args) in xfs_attr3_leaf_flipflags() argument
2682 trace_xfs_attr_leaf_flipflags(args); in xfs_attr3_leaf_flipflags()
2687 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp1); in xfs_attr3_leaf_flipflags()
2694 if (args->blkno2 != args->blkno) { in xfs_attr3_leaf_flipflags()
2695 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno2, in xfs_attr3_leaf_flipflags()
2704 entry1 = &xfs_attr3_leaf_entryp(leaf1)[args->index]; in xfs_attr3_leaf_flipflags()
2707 entry2 = &xfs_attr3_leaf_entryp(leaf2)[args->index2]; in xfs_attr3_leaf_flipflags()
2710 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_flipflags()
2711 ASSERT(args->index < ichdr1.count); in xfs_attr3_leaf_flipflags()
2712 ASSERT(args->index >= 0); in xfs_attr3_leaf_flipflags()
2714 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_flipflags()
2715 ASSERT(args->index2 < ichdr2.count); in xfs_attr3_leaf_flipflags()
2716 ASSERT(args->index2 >= 0); in xfs_attr3_leaf_flipflags()
2719 name_loc = xfs_attr3_leaf_name_local(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2723 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2728 name_loc = xfs_attr3_leaf_name_local(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2732 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2745 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2747 if (args->rmtblkno) { in xfs_attr3_leaf_flipflags()
2749 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2750 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_flipflags()
2751 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_flipflags()
2752 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2757 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2760 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2763 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2770 error = xfs_trans_roll(&args->trans, args->dp); in xfs_attr3_leaf_flipflags()