• Home
  • Raw
  • Download

Lines Matching refs:args

45 STATIC int xfs_attr3_leaf_create(struct xfs_da_args *args,
49 struct xfs_da_args *args, int freemap_index);
50 STATIC void xfs_attr3_leaf_compact(struct xfs_da_args *args,
67 STATIC void xfs_attr3_leaf_moveents(struct xfs_da_args *args,
398 struct xfs_da_args *args, in xfs_attr_copy_value() argument
405 if (args->flags & ATTR_KERNOVAL) { in xfs_attr_copy_value()
406 args->valuelen = valuelen; in xfs_attr_copy_value()
413 if (args->valuelen < valuelen) { in xfs_attr_copy_value()
414 args->valuelen = valuelen; in xfs_attr_copy_value()
418 if (args->op_flags & XFS_DA_OP_ALLOCVAL) { in xfs_attr_copy_value()
419 args->value = kmem_alloc_large(valuelen, 0); in xfs_attr_copy_value()
420 if (!args->value) in xfs_attr_copy_value()
423 args->valuelen = valuelen; in xfs_attr_copy_value()
426 if (args->rmtblkno) in xfs_attr_copy_value()
427 return xfs_attr_rmtval_get(args); in xfs_attr_copy_value()
437 memcpy(args->value, value, valuelen); in xfs_attr_copy_value()
565 xfs_attr_shortform_create(xfs_da_args_t *args) in xfs_attr_shortform_create() argument
571 trace_xfs_attr_sf_create(args); in xfs_attr_shortform_create()
573 dp = args->dp; in xfs_attr_shortform_create()
589 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_create()
597 xfs_attr_shortform_add(xfs_da_args_t *args, int forkoff) in xfs_attr_shortform_add() argument
606 trace_xfs_attr_sf_add(args); in xfs_attr_shortform_add()
608 dp = args->dp; in xfs_attr_shortform_add()
618 if (sfe->namelen != args->namelen) in xfs_attr_shortform_add()
620 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_add()
622 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_add()
629 size = XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen); in xfs_attr_shortform_add()
634 sfe->namelen = args->namelen; in xfs_attr_shortform_add()
635 sfe->valuelen = args->valuelen; in xfs_attr_shortform_add()
636 sfe->flags = XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr_shortform_add()
637 memcpy(sfe->nameval, args->name, args->namelen); in xfs_attr_shortform_add()
638 memcpy(&sfe->nameval[args->namelen], args->value, args->valuelen); in xfs_attr_shortform_add()
641 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_ADATA); in xfs_attr_shortform_add()
643 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_add()
669 xfs_attr_shortform_remove(xfs_da_args_t *args) in xfs_attr_shortform_remove() argument
677 trace_xfs_attr_sf_remove(args); in xfs_attr_shortform_remove()
679 dp = args->dp; in xfs_attr_shortform_remove()
688 if (sfe->namelen != args->namelen) in xfs_attr_shortform_remove()
690 if (memcmp(sfe->nameval, args->name, args->namelen) != 0) in xfs_attr_shortform_remove()
692 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_remove()
716 !(args->op_flags & XFS_DA_OP_ADDNAME)) { in xfs_attr_shortform_remove()
717 xfs_attr_fork_remove(dp, args->trans); in xfs_attr_shortform_remove()
723 (args->op_flags & XFS_DA_OP_ADDNAME) || in xfs_attr_shortform_remove()
726 xfs_trans_log_inode(args->trans, dp, in xfs_attr_shortform_remove()
730 xfs_sbversion_add_attr2(mp, args->trans); in xfs_attr_shortform_remove()
740 xfs_attr_shortform_lookup(xfs_da_args_t *args) in xfs_attr_shortform_lookup() argument
747 trace_xfs_attr_sf_lookup(args); in xfs_attr_shortform_lookup()
749 ifp = args->dp->i_afp; in xfs_attr_shortform_lookup()
755 if (sfe->namelen != args->namelen) in xfs_attr_shortform_lookup()
757 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_lookup()
759 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_lookup()
775 struct xfs_da_args *args) in xfs_attr_shortform_getvalue() argument
781 ASSERT(args->dp->i_afp->if_flags == XFS_IFINLINE); in xfs_attr_shortform_getvalue()
782 sf = (xfs_attr_shortform_t *)args->dp->i_afp->if_u1.if_data; in xfs_attr_shortform_getvalue()
786 if (sfe->namelen != args->namelen) in xfs_attr_shortform_getvalue()
788 if (memcmp(args->name, sfe->nameval, args->namelen) != 0) in xfs_attr_shortform_getvalue()
790 if (!xfs_attr_namesp_match(args->flags, sfe->flags)) in xfs_attr_shortform_getvalue()
792 return xfs_attr_copy_value(args, &sfe->nameval[args->namelen], in xfs_attr_shortform_getvalue()
804 struct xfs_da_args *args, in xfs_attr_shortform_to_leaf() argument
817 trace_xfs_attr_sf_to_leaf(args); in xfs_attr_shortform_to_leaf()
819 dp = args->dp; in xfs_attr_shortform_to_leaf()
829 xfs_bmap_local_to_extents_empty(args->trans, dp, XFS_ATTR_FORK); in xfs_attr_shortform_to_leaf()
832 error = xfs_da_grow_inode(args, &blkno); in xfs_attr_shortform_to_leaf()
837 error = xfs_attr3_leaf_create(args, blkno, &bp); in xfs_attr_shortform_to_leaf()
843 nargs.geo = args->geo; in xfs_attr_shortform_to_leaf()
844 nargs.total = args->total; in xfs_attr_shortform_to_leaf()
846 nargs.trans = args->trans; in xfs_attr_shortform_to_leaf()
996 struct xfs_da_args *args, in xfs_attr3_leaf_to_shortform() argument
1004 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_shortform()
1009 trace_xfs_attr_leaf_to_sf(args); in xfs_attr3_leaf_to_shortform()
1011 tmpbuffer = kmem_alloc(args->geo->blksize, 0); in xfs_attr3_leaf_to_shortform()
1015 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
1018 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_to_shortform()
1022 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_to_shortform()
1027 error = xfs_da_shrink_inode(args, 0, bp); in xfs_attr3_leaf_to_shortform()
1034 xfs_attr_fork_remove(dp, args->trans); in xfs_attr3_leaf_to_shortform()
1038 xfs_attr_shortform_create(args); in xfs_attr3_leaf_to_shortform()
1044 nargs.geo = args->geo; in xfs_attr3_leaf_to_shortform()
1046 nargs.total = args->total; in xfs_attr3_leaf_to_shortform()
1048 nargs.trans = args->trans; in xfs_attr3_leaf_to_shortform()
1078 struct xfs_da_args *args) in xfs_attr3_leaf_to_node() argument
1086 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_to_node()
1093 trace_xfs_attr_leaf_to_node(args); in xfs_attr3_leaf_to_node()
1095 error = xfs_da_grow_inode(args, &blkno); in xfs_attr3_leaf_to_node()
1098 error = xfs_attr3_leaf_read(args->trans, dp, 0, -1, &bp1); in xfs_attr3_leaf_to_node()
1102 error = xfs_da_get_buf(args->trans, dp, blkno, -1, &bp2, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
1107 xfs_trans_buf_set_type(args->trans, bp2, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_to_node()
1109 memcpy(bp2->b_addr, bp1->b_addr, args->geo->blksize); in xfs_attr3_leaf_to_node()
1114 xfs_trans_log_buf(args->trans, bp2, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
1119 error = xfs_da3_node_create(args, 0, 1, &bp1, XFS_ATTR_FORK); in xfs_attr3_leaf_to_node()
1127 xfs_attr3_leaf_hdr_from_disk(args->geo, &icleafhdr, leaf); in xfs_attr3_leaf_to_node()
1135 xfs_trans_log_buf(args->trans, bp1, 0, args->geo->blksize - 1); in xfs_attr3_leaf_to_node()
1151 struct xfs_da_args *args, in xfs_attr3_leaf_create() argument
1157 struct xfs_inode *dp = args->dp; in xfs_attr3_leaf_create()
1162 trace_xfs_attr_leaf_create(args); in xfs_attr3_leaf_create()
1164 error = xfs_da_get_buf(args->trans, args->dp, blkno, -1, &bp, in xfs_attr3_leaf_create()
1169 xfs_trans_buf_set_type(args->trans, bp, XFS_BLFT_ATTR_LEAF_BUF); in xfs_attr3_leaf_create()
1171 memset(leaf, 0, args->geo->blksize); in xfs_attr3_leaf_create()
1174 ichdr.firstused = args->geo->blksize; in xfs_attr3_leaf_create()
1192 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_create()
1193 xfs_trans_log_buf(args->trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_create()
1211 trace_xfs_attr_leaf_split(state->args); in xfs_attr3_leaf_split()
1217 error = xfs_da_grow_inode(state->args, &blkno); in xfs_attr3_leaf_split()
1220 error = xfs_attr3_leaf_create(state->args, blkno, &newblk->bp); in xfs_attr3_leaf_split()
1243 trace_xfs_attr_leaf_add_old(state->args); in xfs_attr3_leaf_split()
1244 error = xfs_attr3_leaf_add(oldblk->bp, state->args); in xfs_attr3_leaf_split()
1246 trace_xfs_attr_leaf_add_new(state->args); in xfs_attr3_leaf_split()
1247 error = xfs_attr3_leaf_add(newblk->bp, state->args); in xfs_attr3_leaf_split()
1264 struct xfs_da_args *args) in xfs_attr3_leaf_add() argument
1274 trace_xfs_attr_leaf_add(args); in xfs_attr3_leaf_add()
1277 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_add()
1278 ASSERT(args->index >= 0 && args->index <= ichdr.count); in xfs_attr3_leaf_add()
1279 entsize = xfs_attr_leaf_newentsize(args, NULL); in xfs_attr3_leaf_add()
1298 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, i); in xfs_attr3_leaf_add()
1316 xfs_attr3_leaf_compact(args, &ichdr, bp); in xfs_attr3_leaf_add()
1327 tmp = xfs_attr3_leaf_add_work(bp, &ichdr, args, 0); in xfs_attr3_leaf_add()
1330 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_add()
1331 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add()
1344 struct xfs_da_args *args, in xfs_attr3_leaf_add_work() argument
1355 trace_xfs_attr_leaf_add_work(args); in xfs_attr3_leaf_add_work()
1359 ASSERT(args->index >= 0 && args->index <= ichdr->count); in xfs_attr3_leaf_add_work()
1364 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_add_work()
1365 if (args->index < ichdr->count) { in xfs_attr3_leaf_add_work()
1366 tmp = ichdr->count - args->index; in xfs_attr3_leaf_add_work()
1369 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1377 mp = args->trans->t_mountp; in xfs_attr3_leaf_add_work()
1378 ASSERT(ichdr->freemap[mapindex].base < args->geo->blksize); in xfs_attr3_leaf_add_work()
1381 xfs_attr_leaf_newentsize(args, NULL)); in xfs_attr3_leaf_add_work()
1382 ASSERT(ichdr->freemap[mapindex].size < args->geo->blksize); in xfs_attr3_leaf_add_work()
1385 ichdr->freemap[mapindex].size -= xfs_attr_leaf_newentsize(args, &tmp); in xfs_attr3_leaf_add_work()
1389 entry->hashval = cpu_to_be32(args->hashval); in xfs_attr3_leaf_add_work()
1391 entry->flags |= XFS_ATTR_NSP_ARGS_TO_ONDISK(args->flags); in xfs_attr3_leaf_add_work()
1392 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr3_leaf_add_work()
1394 if ((args->blkno2 == args->blkno) && in xfs_attr3_leaf_add_work()
1395 (args->index2 <= args->index)) { in xfs_attr3_leaf_add_work()
1396 args->index2++; in xfs_attr3_leaf_add_work()
1399 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1401 ASSERT((args->index == 0) || in xfs_attr3_leaf_add_work()
1403 ASSERT((args->index == ichdr->count - 1) || in xfs_attr3_leaf_add_work()
1414 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_add_work()
1415 name_loc->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1416 name_loc->valuelen = cpu_to_be16(args->valuelen); in xfs_attr3_leaf_add_work()
1417 memcpy((char *)name_loc->nameval, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1418 memcpy((char *)&name_loc->nameval[args->namelen], args->value, in xfs_attr3_leaf_add_work()
1421 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_add_work()
1422 name_rmt->namelen = args->namelen; in xfs_attr3_leaf_add_work()
1423 memcpy((char *)name_rmt->name, args->name, args->namelen); in xfs_attr3_leaf_add_work()
1428 args->rmtblkno = 1; in xfs_attr3_leaf_add_work()
1429 args->rmtblkcnt = xfs_attr3_rmt_blocks(mp, args->valuelen); in xfs_attr3_leaf_add_work()
1430 args->rmtvaluelen = args->valuelen; in xfs_attr3_leaf_add_work()
1432 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_add_work()
1433 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_add_work()
1434 xfs_attr_leaf_entsize(leaf, args->index))); in xfs_attr3_leaf_add_work()
1453 ichdr->usedbytes += xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_add_work()
1462 struct xfs_da_args *args, in xfs_attr3_leaf_compact() argument
1469 struct xfs_trans *trans = args->trans; in xfs_attr3_leaf_compact()
1472 trace_xfs_attr_leaf_compact(args); in xfs_attr3_leaf_compact()
1474 tmpbuffer = kmem_alloc(args->geo->blksize, 0); in xfs_attr3_leaf_compact()
1475 memcpy(tmpbuffer, bp->b_addr, args->geo->blksize); in xfs_attr3_leaf_compact()
1476 memset(bp->b_addr, 0, args->geo->blksize); in xfs_attr3_leaf_compact()
1489 ichdr_dst->firstused = args->geo->blksize; in xfs_attr3_leaf_compact()
1498 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf_dst, ichdr_dst); in xfs_attr3_leaf_compact()
1504 xfs_attr3_leaf_moveents(args, leaf_src, &ichdr_src, 0, in xfs_attr3_leaf_compact()
1510 xfs_trans_log_buf(trans, bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_compact()
1573 struct xfs_da_args *args; in xfs_attr3_leaf_rebalance() local
1593 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_rebalance()
1594 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_rebalance()
1596 args = state->args; in xfs_attr3_leaf_rebalance()
1598 trace_xfs_attr_leaf_rebalance(args); in xfs_attr3_leaf_rebalance()
1650 xfs_attr3_leaf_compact(args, &ichdr2, blk2->bp); in xfs_attr3_leaf_rebalance()
1655 xfs_attr3_leaf_moveents(args, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1679 xfs_attr3_leaf_compact(args, &ichdr1, blk1->bp); in xfs_attr3_leaf_rebalance()
1684 xfs_attr3_leaf_moveents(args, leaf2, &ichdr2, 0, leaf1, &ichdr1, in xfs_attr3_leaf_rebalance()
1688 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf1, &ichdr1); in xfs_attr3_leaf_rebalance()
1689 xfs_attr3_leaf_hdr_to_disk(state->args->geo, leaf2, &ichdr2); in xfs_attr3_leaf_rebalance()
1690 xfs_trans_log_buf(args->trans, blk1->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1691 xfs_trans_log_buf(args->trans, blk2->bp, 0, args->geo->blksize - 1); in xfs_attr3_leaf_rebalance()
1716 args->index = args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1717 args->blkno = args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1720 args->index = blk1->index; in xfs_attr3_leaf_rebalance()
1721 args->blkno = blk1->blkno; in xfs_attr3_leaf_rebalance()
1722 args->index2 = 0; in xfs_attr3_leaf_rebalance()
1723 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1731 args->index = blk2->index; in xfs_attr3_leaf_rebalance()
1732 args->blkno = blk2->blkno; in xfs_attr3_leaf_rebalance()
1739 args->index2 = blk2->index; in xfs_attr3_leaf_rebalance()
1740 args->blkno2 = blk2->blkno; in xfs_attr3_leaf_rebalance()
1745 args->index = args->index2 = blk1->index; in xfs_attr3_leaf_rebalance()
1746 args->blkno = args->blkno2 = blk1->blkno; in xfs_attr3_leaf_rebalance()
1786 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1788 lastdelta = state->args->geo->blksize; in xfs_attr3_leaf_figure_balance()
1798 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1834 xfs_attr_leaf_newentsize(state->args, NULL); in xfs_attr3_leaf_figure_balance()
1873 trace_xfs_attr_leaf_toosmall(state->args); in xfs_attr3_leaf_toosmall()
1882 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr, leaf); in xfs_attr3_leaf_toosmall()
1886 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_attr3_leaf_toosmall()
1933 error = xfs_attr3_leaf_read(state->args->trans, state->args->dp, in xfs_attr3_leaf_toosmall()
1938 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &ichdr2, bp->b_addr); in xfs_attr3_leaf_toosmall()
1940 bytes = state->args->geo->blksize - in xfs_attr3_leaf_toosmall()
1941 (state->args->geo->blksize >> 2) - in xfs_attr3_leaf_toosmall()
1947 xfs_trans_brelse(state->args->trans, bp); in xfs_attr3_leaf_toosmall()
1987 struct xfs_da_args *args) in xfs_attr3_leaf_remove() argument
2000 trace_xfs_attr_leaf_remove(args); in xfs_attr3_leaf_remove()
2003 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_remove()
2005 ASSERT(ichdr.count > 0 && ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_remove()
2006 ASSERT(args->index >= 0 && args->index < ichdr.count); in xfs_attr3_leaf_remove()
2010 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_remove()
2013 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
2026 entsize = xfs_attr_leaf_entsize(leaf, args->index); in xfs_attr3_leaf_remove()
2028 ASSERT(ichdr.freemap[i].base < args->geo->blksize); in xfs_attr3_leaf_remove()
2029 ASSERT(ichdr.freemap[i].size < args->geo->blksize); in xfs_attr3_leaf_remove()
2084 memset(xfs_attr3_leaf_name(leaf, args->index), 0, entsize); in xfs_attr3_leaf_remove()
2086 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
2087 XFS_DA_LOGRANGE(leaf, xfs_attr3_leaf_name(leaf, args->index), in xfs_attr3_leaf_remove()
2090 tmp = (ichdr.count - args->index) * sizeof(xfs_attr_leaf_entry_t); in xfs_attr3_leaf_remove()
2093 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
2106 tmp = args->geo->blksize; in xfs_attr3_leaf_remove()
2110 ASSERT(be16_to_cpu(entry->nameidx) < args->geo->blksize); in xfs_attr3_leaf_remove()
2120 xfs_attr3_leaf_hdr_to_disk(args->geo, leaf, &ichdr); in xfs_attr3_leaf_remove()
2121 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_remove()
2132 return tmp < args->geo->magicpct; /* leaf is < 37% full */ in xfs_attr3_leaf_remove()
2150 trace_xfs_attr_leaf_unbalance(state->args); in xfs_attr3_leaf_unbalance()
2154 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &drophdr, drop_leaf); in xfs_attr3_leaf_unbalance()
2155 xfs_attr3_leaf_hdr_from_disk(state->args->geo, &savehdr, save_leaf); in xfs_attr3_leaf_unbalance()
2175 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2180 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2193 tmp_leaf = kmem_zalloc(state->args->geo->blksize, 0); in xfs_attr3_leaf_unbalance()
2206 tmphdr.firstused = state->args->geo->blksize; in xfs_attr3_leaf_unbalance()
2209 xfs_attr3_leaf_hdr_to_disk(state->args->geo, tmp_leaf, &tmphdr); in xfs_attr3_leaf_unbalance()
2213 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2217 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2222 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2226 xfs_attr3_leaf_moveents(state->args, in xfs_attr3_leaf_unbalance()
2231 memcpy(save_leaf, tmp_leaf, state->args->geo->blksize); in xfs_attr3_leaf_unbalance()
2236 xfs_attr3_leaf_hdr_to_disk(state->args->geo, save_leaf, &savehdr); in xfs_attr3_leaf_unbalance()
2237 xfs_trans_log_buf(state->args->trans, save_blk->bp, 0, in xfs_attr3_leaf_unbalance()
2238 state->args->geo->blksize - 1); in xfs_attr3_leaf_unbalance()
2267 struct xfs_da_args *args) in xfs_attr3_leaf_lookup_int() argument
2279 trace_xfs_attr_leaf_lookup(args); in xfs_attr3_leaf_lookup_int()
2282 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_lookup_int()
2284 if (ichdr.count >= args->geo->blksize / 8) in xfs_attr3_leaf_lookup_int()
2290 hashval = args->hashval; in xfs_attr3_leaf_lookup_int()
2320 args->index = probe; in xfs_attr3_leaf_lookup_int()
2336 if ((args->flags & XFS_ATTR_INCOMPLETE) != in xfs_attr3_leaf_lookup_int()
2342 if (name_loc->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2344 if (memcmp(args->name, name_loc->nameval, in xfs_attr3_leaf_lookup_int()
2345 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2347 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2349 args->index = probe; in xfs_attr3_leaf_lookup_int()
2353 if (name_rmt->namelen != args->namelen) in xfs_attr3_leaf_lookup_int()
2355 if (memcmp(args->name, name_rmt->name, in xfs_attr3_leaf_lookup_int()
2356 args->namelen) != 0) in xfs_attr3_leaf_lookup_int()
2358 if (!xfs_attr_namesp_match(args->flags, entry->flags)) in xfs_attr3_leaf_lookup_int()
2360 args->index = probe; in xfs_attr3_leaf_lookup_int()
2361 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_lookup_int()
2362 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_lookup_int()
2363 args->rmtblkcnt = xfs_attr3_rmt_blocks( in xfs_attr3_leaf_lookup_int()
2364 args->dp->i_mount, in xfs_attr3_leaf_lookup_int()
2365 args->rmtvaluelen); in xfs_attr3_leaf_lookup_int()
2369 args->index = probe; in xfs_attr3_leaf_lookup_int()
2384 struct xfs_da_args *args) in xfs_attr3_leaf_getvalue() argument
2393 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_getvalue()
2394 ASSERT(ichdr.count < args->geo->blksize / 8); in xfs_attr3_leaf_getvalue()
2395 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_getvalue()
2397 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_getvalue()
2399 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_getvalue()
2400 ASSERT(name_loc->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2401 ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2402 return xfs_attr_copy_value(args, in xfs_attr3_leaf_getvalue()
2403 &name_loc->nameval[args->namelen], in xfs_attr3_leaf_getvalue()
2407 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_getvalue()
2408 ASSERT(name_rmt->namelen == args->namelen); in xfs_attr3_leaf_getvalue()
2409 ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0); in xfs_attr3_leaf_getvalue()
2410 args->rmtvaluelen = be32_to_cpu(name_rmt->valuelen); in xfs_attr3_leaf_getvalue()
2411 args->rmtblkno = be32_to_cpu(name_rmt->valueblk); in xfs_attr3_leaf_getvalue()
2412 args->rmtblkcnt = xfs_attr3_rmt_blocks(args->dp->i_mount, in xfs_attr3_leaf_getvalue()
2413 args->rmtvaluelen); in xfs_attr3_leaf_getvalue()
2414 return xfs_attr_copy_value(args, NULL, args->rmtvaluelen); in xfs_attr3_leaf_getvalue()
2428 struct xfs_da_args *args, in xfs_attr3_leaf_moveents() argument
2455 ASSERT(ichdr_s->count > 0 && ichdr_s->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2458 ASSERT(ichdr_d->count < args->geo->blksize / 8); in xfs_attr3_leaf_moveents()
2510 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2514 <= args->geo->blksize); in xfs_attr3_leaf_moveents()
2535 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2550 ((char *)leaf_s + args->geo->blksize)); in xfs_attr3_leaf_moveents()
2620 struct xfs_da_args *args, in xfs_attr_leaf_newentsize() argument
2625 size = xfs_attr_leaf_entsize_local(args->namelen, args->valuelen); in xfs_attr_leaf_newentsize()
2626 if (size < xfs_attr_leaf_entsize_local_max(args->geo->blksize)) { in xfs_attr_leaf_newentsize()
2633 return xfs_attr_leaf_entsize_remote(args->namelen); in xfs_attr_leaf_newentsize()
2646 struct xfs_da_args *args) in xfs_attr3_leaf_clearflag() argument
2660 trace_xfs_attr_leaf_clearflag(args); in xfs_attr3_leaf_clearflag()
2664 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_clearflag()
2669 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_clearflag()
2673 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_clearflag()
2674 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_clearflag()
2675 ASSERT(args->index >= 0); in xfs_attr3_leaf_clearflag()
2678 name_loc = xfs_attr3_leaf_name_local(leaf, args->index); in xfs_attr3_leaf_clearflag()
2682 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2686 ASSERT(be32_to_cpu(entry->hashval) == args->hashval); in xfs_attr3_leaf_clearflag()
2687 ASSERT(namelen == args->namelen); in xfs_attr3_leaf_clearflag()
2688 ASSERT(memcmp(name, args->name, namelen) == 0); in xfs_attr3_leaf_clearflag()
2692 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2695 if (args->rmtblkno) { in xfs_attr3_leaf_clearflag()
2697 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_clearflag()
2698 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_clearflag()
2699 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_clearflag()
2700 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_clearflag()
2707 return xfs_trans_roll_inode(&args->trans, args->dp); in xfs_attr3_leaf_clearflag()
2715 struct xfs_da_args *args) in xfs_attr3_leaf_setflag() argument
2726 trace_xfs_attr_leaf_setflag(args); in xfs_attr3_leaf_setflag()
2731 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr3_leaf_setflag()
2737 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr, leaf); in xfs_attr3_leaf_setflag()
2738 ASSERT(args->index < ichdr.count); in xfs_attr3_leaf_setflag()
2739 ASSERT(args->index >= 0); in xfs_attr3_leaf_setflag()
2741 entry = &xfs_attr3_leaf_entryp(leaf)[args->index]; in xfs_attr3_leaf_setflag()
2745 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2748 name_rmt = xfs_attr3_leaf_name_remote(leaf, args->index); in xfs_attr3_leaf_setflag()
2751 xfs_trans_log_buf(args->trans, bp, in xfs_attr3_leaf_setflag()
2758 return xfs_trans_roll_inode(&args->trans, args->dp); in xfs_attr3_leaf_setflag()
2770 struct xfs_da_args *args) in xfs_attr3_leaf_flipflags() argument
2788 trace_xfs_attr_leaf_flipflags(args); in xfs_attr3_leaf_flipflags()
2793 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp1); in xfs_attr3_leaf_flipflags()
2800 if (args->blkno2 != args->blkno) { in xfs_attr3_leaf_flipflags()
2801 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno2, in xfs_attr3_leaf_flipflags()
2810 entry1 = &xfs_attr3_leaf_entryp(leaf1)[args->index]; in xfs_attr3_leaf_flipflags()
2813 entry2 = &xfs_attr3_leaf_entryp(leaf2)[args->index2]; in xfs_attr3_leaf_flipflags()
2816 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr1, leaf1); in xfs_attr3_leaf_flipflags()
2817 ASSERT(args->index < ichdr1.count); in xfs_attr3_leaf_flipflags()
2818 ASSERT(args->index >= 0); in xfs_attr3_leaf_flipflags()
2820 xfs_attr3_leaf_hdr_from_disk(args->geo, &ichdr2, leaf2); in xfs_attr3_leaf_flipflags()
2821 ASSERT(args->index2 < ichdr2.count); in xfs_attr3_leaf_flipflags()
2822 ASSERT(args->index2 >= 0); in xfs_attr3_leaf_flipflags()
2825 name_loc = xfs_attr3_leaf_name_local(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2829 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2834 name_loc = xfs_attr3_leaf_name_local(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2838 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2851 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2853 if (args->rmtblkno) { in xfs_attr3_leaf_flipflags()
2855 name_rmt = xfs_attr3_leaf_name_remote(leaf1, args->index); in xfs_attr3_leaf_flipflags()
2856 name_rmt->valueblk = cpu_to_be32(args->rmtblkno); in xfs_attr3_leaf_flipflags()
2857 name_rmt->valuelen = cpu_to_be32(args->rmtvaluelen); in xfs_attr3_leaf_flipflags()
2858 xfs_trans_log_buf(args->trans, bp1, in xfs_attr3_leaf_flipflags()
2863 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2866 name_rmt = xfs_attr3_leaf_name_remote(leaf2, args->index2); in xfs_attr3_leaf_flipflags()
2869 xfs_trans_log_buf(args->trans, bp2, in xfs_attr3_leaf_flipflags()
2876 error = xfs_trans_roll_inode(&args->trans, args->dp); in xfs_attr3_leaf_flipflags()