Lines Matching refs:args
40 static int xfs_dir2_leafn_add(struct xfs_buf *bp, xfs_da_args_t *args,
45 static int xfs_dir2_leafn_remove(xfs_da_args_t *args, struct xfs_buf *bp,
48 static int xfs_dir2_node_addname_int(xfs_da_args_t *args,
196 xfs_da_args_t *args, in xfs_dir3_free_get_buf() argument
200 struct xfs_trans *tp = args->trans; in xfs_dir3_free_get_buf()
201 struct xfs_inode *dp = args->dp; in xfs_dir3_free_get_buf()
207 error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir3_free_get_buf()
242 struct xfs_da_args *args, in xfs_dir2_free_log_bests() argument
251 bests = args->dp->d_ops->free_bests_p(free); in xfs_dir2_free_log_bests()
254 xfs_trans_log_buf(args->trans, bp, in xfs_dir2_free_log_bests()
265 struct xfs_da_args *args, in xfs_dir2_free_log_header() argument
275 xfs_trans_log_buf(args->trans, bp, 0, in xfs_dir2_free_log_header()
276 args->dp->d_ops->free_hdr_size - 1); in xfs_dir2_free_log_header()
286 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leaf_to_node() argument
304 trace_xfs_dir2_leaf_to_node(args); in xfs_dir2_leaf_to_node()
306 dp = args->dp; in xfs_dir2_leaf_to_node()
307 tp = args->trans; in xfs_dir2_leaf_to_node()
311 if ((error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, &fdb))) { in xfs_dir2_leaf_to_node()
314 ASSERT(fdb == xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET)); in xfs_dir2_leaf_to_node()
318 error = xfs_dir3_free_get_buf(args, fdb, &fbp); in xfs_dir2_leaf_to_node()
325 ltp = xfs_dir2_leaf_tail_p(args->geo, leaf); in xfs_dir2_leaf_to_node()
327 (uint)dp->i_d.di_size / args->geo->blksize); in xfs_dir2_leaf_to_node()
348 xfs_dir2_free_log_bests(args, fbp, 0, freehdr.nvalid - 1); in xfs_dir2_leaf_to_node()
349 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_leaf_to_node()
363 xfs_dir3_leaf_log_header(args, lbp); in xfs_dir2_leaf_to_node()
375 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_add() argument
389 trace_xfs_dir2_leafn_add(args, index); in xfs_dir2_leafn_add()
391 dp = args->dp; in xfs_dir2_leafn_add()
410 if (leafhdr.count == dp->d_ops->leaf_max_ents(args->geo)) { in xfs_dir2_leafn_add()
416 ASSERT(index == 0 || be32_to_cpu(ents[index - 1].hashval) <= args->hashval); in xfs_dir2_leafn_add()
418 be32_to_cpu(ents[index].hashval) >= args->hashval); in xfs_dir2_leafn_add()
420 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_leafn_add()
444 lep->hashval = cpu_to_be32(args->hashval); in xfs_dir2_leafn_add()
445 lep->address = cpu_to_be32(xfs_dir2_db_off_to_dataptr(args->geo, in xfs_dir2_leafn_add()
446 args->blkno, args->index)); in xfs_dir2_leafn_add()
449 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_add()
450 xfs_dir3_leaf_log_ents(args, bp, lfloglow, lfloghigh); in xfs_dir2_leafn_add()
510 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_addname() argument
532 dp = args->dp; in xfs_dir2_leafn_lookup_for_addname()
533 tp = args->trans; in xfs_dir2_leafn_lookup_for_addname()
545 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_addname()
557 length = dp->d_ops->data_entsize(args->namelen); in xfs_dir2_leafn_lookup_for_addname()
562 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_addname()
572 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_addname()
590 newfdb = dp->d_ops->db_to_fdb(args->geo, newdb); in xfs_dir2_leafn_lookup_for_addname()
602 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_addname()
614 fi = dp->d_ops->db_to_fdindex(args->geo, curdb); in xfs_dir2_leafn_lookup_for_addname()
634 ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); in xfs_dir2_leafn_lookup_for_addname()
665 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_entry() argument
684 dp = args->dp; in xfs_dir2_leafn_lookup_for_entry()
685 tp = args->trans; in xfs_dir2_leafn_lookup_for_entry()
697 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_entry()
709 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_entry()
719 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_entry()
732 if (curbp && (args->cmpresult == XFS_CMP_DIFFERENT || in xfs_dir2_leafn_lookup_for_entry()
739 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
745 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_entry()
758 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_leafn_lookup_for_entry()
765 cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); in xfs_dir2_leafn_lookup_for_entry()
766 if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { in xfs_dir2_leafn_lookup_for_entry()
768 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
771 args->cmpresult = cmp; in xfs_dir2_leafn_lookup_for_entry()
772 args->inumber = be64_to_cpu(dep->inumber); in xfs_dir2_leafn_lookup_for_entry()
773 args->filetype = dp->d_ops->data_get_ftype(dep); in xfs_dir2_leafn_lookup_for_entry()
787 ASSERT(index == leafhdr.count || (args->op_flags & XFS_DA_OP_OKNOENT)); in xfs_dir2_leafn_lookup_for_entry()
789 if (args->cmpresult == XFS_CMP_DIFFERENT) { in xfs_dir2_leafn_lookup_for_entry()
818 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_int() argument
822 if (args->op_flags & XFS_DA_OP_ADDNAME) in xfs_dir2_leafn_lookup_int()
823 return xfs_dir2_leafn_lookup_for_addname(bp, args, indexp, in xfs_dir2_leafn_lookup_int()
825 return xfs_dir2_leafn_lookup_for_entry(bp, args, indexp, state); in xfs_dir2_leafn_lookup_int()
834 xfs_da_args_t *args, /* operation arguments */ in xfs_dir3_leafn_moveents() argument
847 trace_xfs_dir2_leafn_moveents(args, start_s, start_d, count); in xfs_dir3_leafn_moveents()
863 xfs_dir3_leaf_log_ents(args, bp_d, start_d + count, in xfs_dir3_leafn_moveents()
885 xfs_dir3_leaf_log_ents(args, bp_d, start_d, start_d + count - 1); in xfs_dir3_leafn_moveents()
894 xfs_dir3_leaf_log_ents(args, bp_s, start_s, start_s + count - 1); in xfs_dir3_leafn_moveents()
949 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_rebalance() local
964 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_rebalance()
966 args = state->args; in xfs_dir2_leafn_rebalance()
1001 isleft = args->hashval <= midhash; in xfs_dir2_leafn_rebalance()
1016 xfs_dir3_leafn_moveents(args, blk1->bp, &hdr1, ents1, in xfs_dir2_leafn_rebalance()
1020 xfs_dir3_leafn_moveents(args, blk2->bp, &hdr2, ents2, 0, in xfs_dir2_leafn_rebalance()
1030 xfs_dir3_leaf_log_header(args, blk1->bp); in xfs_dir2_leafn_rebalance()
1031 xfs_dir3_leaf_log_header(args, blk2->bp); in xfs_dir2_leafn_rebalance()
1066 xfs_da_args_t *args, in xfs_dir3_data_block_free() argument
1077 struct xfs_inode *dp = args->dp; in xfs_dir3_data_block_free()
1087 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir3_data_block_free()
1115 xfs_dir2_free_log_header(args, fbp); in xfs_dir3_data_block_free()
1124 error = xfs_dir2_shrink_inode(args, fdb, fbp); in xfs_dir3_data_block_free()
1128 } else if (error != -ENOSPC || args->total != 0) in xfs_dir3_data_block_free()
1139 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir3_data_block_free()
1150 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_remove() argument
1172 trace_xfs_dir2_leafn_remove(args, index); in xfs_dir2_leafn_remove()
1174 dp = args->dp; in xfs_dir2_leafn_remove()
1175 tp = args->trans; in xfs_dir2_leafn_remove()
1188 db = xfs_dir2_dataptr_to_db(args->geo, be32_to_cpu(lep->address)); in xfs_dir2_leafn_remove()
1190 off = xfs_dir2_dataptr_to_off(args->geo, be32_to_cpu(lep->address)); in xfs_dir2_leafn_remove()
1199 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_remove()
1202 xfs_dir3_leaf_log_ents(args, bp, index, index); in xfs_dir2_leafn_remove()
1214 xfs_dir2_data_make_free(args, dbp, off, in xfs_dir2_leafn_remove()
1223 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_leafn_remove()
1240 fdb = dp->d_ops->db_to_fdb(args->geo, db); in xfs_dir2_leafn_remove()
1242 xfs_dir2_db_to_da(args->geo, fdb), in xfs_dir2_leafn_remove()
1251 ASSERT(freehdr.firstdb == dp->d_ops->free_max_bests(args->geo) * in xfs_dir2_leafn_remove()
1252 (fdb - xfs_dir2_byte_to_db(args->geo, in xfs_dir2_leafn_remove()
1259 findex = dp->d_ops->db_to_fdindex(args->geo, db); in xfs_dir2_leafn_remove()
1265 if (longest == args->geo->blksize - in xfs_dir2_leafn_remove()
1270 error = xfs_dir2_shrink_inode(args, db, dbp); in xfs_dir2_leafn_remove()
1280 else if (!(error == -ENOSPC && args->total == 0)) in xfs_dir2_leafn_remove()
1287 error = xfs_dir3_data_block_free(args, hdr, free, in xfs_dir2_leafn_remove()
1300 args->geo->magicpct; in xfs_dir2_leafn_remove()
1313 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_split() local
1321 args = state->args; in xfs_dir2_leafn_split()
1322 dp = args->dp; in xfs_dir2_leafn_split()
1324 error = xfs_da_grow_inode(args, &blkno); in xfs_dir2_leafn_split()
1331 error = xfs_dir3_leaf_get_buf(args, xfs_dir2_da_to_db(args->geo, blkno), in xfs_dir2_leafn_split()
1351 error = xfs_dir2_leafn_add(oldblk->bp, args, oldblk->index); in xfs_dir2_leafn_split()
1353 error = xfs_dir2_leafn_add(newblk->bp, args, newblk->index); in xfs_dir2_leafn_split()
1390 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_toosmall()
1405 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_dir2_leafn_toosmall()
1449 error = xfs_dir3_leafn_read(state->args->trans, dp, in xfs_dir2_leafn_toosmall()
1458 bytes = state->args->geo->blksize - in xfs_dir2_leafn_toosmall()
1459 (state->args->geo->blksize >> 2); in xfs_dir2_leafn_toosmall()
1472 xfs_trans_brelse(state->args->trans, bp); in xfs_dir2_leafn_toosmall()
1510 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_unbalance() local
1517 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_unbalance()
1519 args = state->args; in xfs_dir2_leafn_unbalance()
1535 xfs_dir3_leaf_compact(args, &drophdr, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1537 xfs_dir3_leaf_compact(args, &savehdr, save_blk->bp); in xfs_dir2_leafn_unbalance()
1544 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1548 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1556 xfs_dir3_leaf_log_header(args, save_blk->bp); in xfs_dir2_leafn_unbalance()
1557 xfs_dir3_leaf_log_header(args, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1568 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_addname() argument
1575 trace_xfs_dir2_node_addname(args); in xfs_dir2_node_addname()
1581 state->args = args; in xfs_dir2_node_addname()
1582 state->mp = args->dp->i_mount; in xfs_dir2_node_addname()
1597 rval = xfs_dir2_node_addname_int(args, in xfs_dir2_node_addname()
1607 rval = xfs_dir2_leafn_add(blk->bp, args, blk->index); in xfs_dir2_node_addname()
1612 if (!(args->op_flags & XFS_DA_OP_JUSTCHECK)) in xfs_dir2_node_addname()
1618 if (args->total == 0) { in xfs_dir2_node_addname()
1639 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_node_addname_int() argument
1666 dp = args->dp; in xfs_dir2_node_addname_int()
1668 tp = args->trans; in xfs_dir2_node_addname_int()
1669 length = dp->d_ops->data_entsize(args->namelen); in xfs_dir2_node_addname_int()
1723 lastfbno = xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo); in xfs_dir2_node_addname_int()
1741 fbno = xfs_dir2_byte_to_db(args->geo, in xfs_dir2_node_addname_int()
1760 xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir2_node_addname_int()
1805 if ((args->op_flags & XFS_DA_OP_JUSTCHECK) || args->total == 0) in xfs_dir2_node_addname_int()
1811 if (unlikely((error = xfs_dir2_grow_inode(args, in xfs_dir2_node_addname_int()
1814 (error = xfs_dir3_data_init(args, dbno, &dbp)))) in xfs_dir2_node_addname_int()
1829 fbno = dp->d_ops->db_to_fdb(args->geo, dbno); in xfs_dir2_node_addname_int()
1831 xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir2_node_addname_int()
1841 error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, in xfs_dir2_node_addname_int()
1846 if (dp->d_ops->db_to_fdb(args->geo, dbno) != fbno) { in xfs_dir2_node_addname_int()
1852 args->geo, dbno), in xfs_dir2_node_addname_int()
1873 error = xfs_dir3_free_get_buf(args, fbno, &fbp); in xfs_dir2_node_addname_int()
1884 (fbno - xfs_dir2_byte_to_db(args->geo, in xfs_dir2_node_addname_int()
1886 dp->d_ops->free_max_bests(args->geo); in xfs_dir2_node_addname_int()
1896 findex = dp->d_ops->db_to_fdindex(args->geo, dbno); in xfs_dir2_node_addname_int()
1902 ASSERT(findex < dp->d_ops->free_max_bests(args->geo)); in xfs_dir2_node_addname_int()
1916 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_node_addname_int()
1935 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_node_addname_int()
1942 xfs_dir2_db_to_da(args->geo, dbno), in xfs_dir2_node_addname_int()
1960 xfs_dir2_data_use_free(args, dbp, dup, in xfs_dir2_node_addname_int()
1967 dep->inumber = cpu_to_be64(args->inumber); in xfs_dir2_node_addname_int()
1968 dep->namelen = args->namelen; in xfs_dir2_node_addname_int()
1969 memcpy(dep->name, args->name, dep->namelen); in xfs_dir2_node_addname_int()
1970 dp->d_ops->data_put_ftype(dep, args->filetype); in xfs_dir2_node_addname_int()
1973 xfs_dir2_data_log_entry(args, dbp, dep); in xfs_dir2_node_addname_int()
1983 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_node_addname_int()
1996 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir2_node_addname_int()
2000 args->blkno = (xfs_dablk_t)dbno; in xfs_dir2_node_addname_int()
2001 args->index = be16_to_cpu(*tagp); in xfs_dir2_node_addname_int()
2012 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_lookup() argument
2019 trace_xfs_dir2_node_lookup(args); in xfs_dir2_node_lookup()
2025 state->args = args; in xfs_dir2_node_lookup()
2026 state->mp = args->dp->i_mount; in xfs_dir2_node_lookup()
2033 else if (rval == -ENOENT && args->cmpresult == XFS_CMP_CASE) { in xfs_dir2_node_lookup()
2040 rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen); in xfs_dir2_node_lookup()
2046 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_lookup()
2053 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_lookup()
2065 struct xfs_da_args *args) /* operation arguments */ in xfs_dir2_node_removename() argument
2072 trace_xfs_dir2_node_removename(args); in xfs_dir2_node_removename()
2078 state->args = args; in xfs_dir2_node_removename()
2079 state->mp = args->dp->i_mount; in xfs_dir2_node_removename()
2099 error = xfs_dir2_leafn_remove(args, blk->bp, blk->index, in xfs_dir2_node_removename()
2127 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_replace() argument
2141 trace_xfs_dir2_node_replace(args); in xfs_dir2_node_replace()
2147 state->args = args; in xfs_dir2_node_replace()
2148 state->mp = args->dp->i_mount; in xfs_dir2_node_replace()
2154 inum = args->inumber; in xfs_dir2_node_replace()
2155 ftype = args->filetype; in xfs_dir2_node_replace()
2176 ents = args->dp->d_ops->leaf_ents_p(leaf); in xfs_dir2_node_replace()
2187 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_node_replace()
2194 args->dp->d_ops->data_put_ftype(dep, ftype); in xfs_dir2_node_replace()
2195 xfs_dir2_data_log_entry(args, state->extrablk.bp, dep); in xfs_dir2_node_replace()
2202 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_replace()
2209 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_replace()
2222 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_node_trim_free() argument
2233 dp = args->dp; in xfs_dir2_node_trim_free()
2234 tp = args->trans; in xfs_dir2_node_trim_free()
2261 error = xfs_dir2_shrink_inode(args, in xfs_dir2_node_trim_free()
2262 xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo), bp); in xfs_dir2_node_trim_free()