Lines Matching refs:args

28 static int xfs_dir2_leafn_add(struct xfs_buf *bp, xfs_da_args_t *args,
33 static int xfs_dir2_leafn_remove(xfs_da_args_t *args, struct xfs_buf *bp,
324 xfs_da_args_t *args, in xfs_dir3_free_get_buf() argument
328 struct xfs_trans *tp = args->trans; in xfs_dir3_free_get_buf()
329 struct xfs_inode *dp = args->dp; in xfs_dir3_free_get_buf()
335 error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir3_free_get_buf()
356 hdr3->hdr.owner = cpu_to_be64(args->owner); in xfs_dir3_free_get_buf()
370 struct xfs_da_args *args, in xfs_dir2_free_log_bests() argument
380 xfs_trans_log_buf(args->trans, bp, in xfs_dir2_free_log_bests()
391 struct xfs_da_args *args, in xfs_dir2_free_log_header() argument
401 xfs_trans_log_buf(args->trans, bp, 0, in xfs_dir2_free_log_header()
402 args->geo->free_hdr_size - 1); in xfs_dir2_free_log_header()
412 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leaf_to_node() argument
428 trace_xfs_dir2_leaf_to_node(args); in xfs_dir2_leaf_to_node()
430 dp = args->dp; in xfs_dir2_leaf_to_node()
431 tp = args->trans; in xfs_dir2_leaf_to_node()
435 if ((error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, &fdb))) { in xfs_dir2_leaf_to_node()
438 ASSERT(fdb == xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET)); in xfs_dir2_leaf_to_node()
442 error = xfs_dir3_free_get_buf(args, fdb, &fbp); in xfs_dir2_leaf_to_node()
448 ltp = xfs_dir2_leaf_tail_p(args->geo, leaf); in xfs_dir2_leaf_to_node()
450 (uint)dp->i_disk_size / args->geo->blksize) { in xfs_dir2_leaf_to_node()
452 xfs_da_mark_sick(args); in xfs_dir2_leaf_to_node()
475 xfs_dir2_free_log_bests(args, &freehdr, fbp, 0, freehdr.nvalid - 1); in xfs_dir2_leaf_to_node()
476 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_leaf_to_node()
490 xfs_dir3_leaf_log_header(args, lbp); in xfs_dir2_leaf_to_node()
502 struct xfs_da_args *args, /* operation arguments */ in xfs_dir2_leafn_add() argument
506 struct xfs_inode *dp = args->dp; in xfs_dir2_leafn_add()
516 trace_xfs_dir2_leafn_add(args, index); in xfs_dir2_leafn_add()
527 xfs_da_mark_sick(args); in xfs_dir2_leafn_add()
538 if (leafhdr.count == args->geo->leaf_max_ents) { in xfs_dir2_leafn_add()
544 ASSERT(index == 0 || be32_to_cpu(ents[index - 1].hashval) <= args->hashval); in xfs_dir2_leafn_add()
546 be32_to_cpu(ents[index].hashval) >= args->hashval); in xfs_dir2_leafn_add()
548 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_leafn_add()
572 lep->hashval = cpu_to_be32(args->hashval); in xfs_dir2_leafn_add()
573 lep->address = cpu_to_be32(xfs_dir2_db_off_to_dataptr(args->geo, in xfs_dir2_leafn_add()
574 args->blkno, args->index)); in xfs_dir2_leafn_add()
577 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_add()
578 xfs_dir3_leaf_log_ents(args, &leafhdr, bp, lfloglow, lfloghigh); in xfs_dir2_leafn_add()
635 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_addname() argument
656 dp = args->dp; in xfs_dir2_leafn_lookup_for_addname()
657 tp = args->trans; in xfs_dir2_leafn_lookup_for_addname()
668 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_addname()
680 length = xfs_dir2_data_entsize(mp, args->namelen); in xfs_dir2_leafn_lookup_for_addname()
685 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_addname()
695 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_addname()
713 newfdb = xfs_dir2_db_to_fdb(args->geo, newdb); in xfs_dir2_leafn_lookup_for_addname()
724 error = xfs_dir2_free_read(tp, dp, args->owner, in xfs_dir2_leafn_lookup_for_addname()
725 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_addname()
737 fi = xfs_dir2_db_to_fdindex(args->geo, curdb); in xfs_dir2_leafn_lookup_for_addname()
747 xfs_da_mark_sick(args); in xfs_dir2_leafn_lookup_for_addname()
758 ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); in xfs_dir2_leafn_lookup_for_addname()
789 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_entry() argument
807 dp = args->dp; in xfs_dir2_leafn_lookup_for_entry()
808 tp = args->trans; in xfs_dir2_leafn_lookup_for_entry()
816 xfs_da_mark_sick(args); in xfs_dir2_leafn_lookup_for_entry()
823 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_entry()
835 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_entry()
845 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_entry()
858 if (curbp && (args->cmpresult == XFS_CMP_DIFFERENT || in xfs_dir2_leafn_lookup_for_entry()
865 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
870 error = xfs_dir3_data_read(tp, dp, args->owner, in xfs_dir2_leafn_lookup_for_entry()
871 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_entry()
884 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_leafn_lookup_for_entry()
891 cmp = xfs_dir2_compname(args, dep->name, dep->namelen); in xfs_dir2_leafn_lookup_for_entry()
892 if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { in xfs_dir2_leafn_lookup_for_entry()
894 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
897 args->cmpresult = cmp; in xfs_dir2_leafn_lookup_for_entry()
898 args->inumber = be64_to_cpu(dep->inumber); in xfs_dir2_leafn_lookup_for_entry()
899 args->filetype = xfs_dir2_data_get_ftype(mp, dep); in xfs_dir2_leafn_lookup_for_entry()
913 ASSERT(index == leafhdr.count || (args->op_flags & XFS_DA_OP_OKNOENT)); in xfs_dir2_leafn_lookup_for_entry()
915 if (args->cmpresult == XFS_CMP_DIFFERENT) { in xfs_dir2_leafn_lookup_for_entry()
944 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_int() argument
948 if (args->op_flags & XFS_DA_OP_ADDNAME) in xfs_dir2_leafn_lookup_int()
949 return xfs_dir2_leafn_lookup_for_addname(bp, args, indexp, in xfs_dir2_leafn_lookup_int()
951 return xfs_dir2_leafn_lookup_for_entry(bp, args, indexp, state); in xfs_dir2_leafn_lookup_int()
960 xfs_da_args_t *args, /* operation arguments */ in xfs_dir3_leafn_moveents() argument
973 trace_xfs_dir2_leafn_moveents(args, start_s, start_d, count); in xfs_dir3_leafn_moveents()
989 xfs_dir3_leaf_log_ents(args, dhdr, bp_d, start_d + count, in xfs_dir3_leafn_moveents()
1011 xfs_dir3_leaf_log_ents(args, dhdr, bp_d, start_d, start_d + count - 1); in xfs_dir3_leafn_moveents()
1020 xfs_dir3_leaf_log_ents(args, shdr, bp_s, start_s, in xfs_dir3_leafn_moveents()
1076 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_rebalance() local
1091 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_rebalance()
1093 args = state->args; in xfs_dir2_leafn_rebalance()
1125 isleft = args->hashval <= midhash; in xfs_dir2_leafn_rebalance()
1140 xfs_dir3_leafn_moveents(args, blk1->bp, &hdr1, ents1, in xfs_dir2_leafn_rebalance()
1144 xfs_dir3_leafn_moveents(args, blk2->bp, &hdr2, ents2, 0, in xfs_dir2_leafn_rebalance()
1154 xfs_dir3_leaf_log_header(args, blk1->bp); in xfs_dir2_leafn_rebalance()
1155 xfs_dir3_leaf_log_header(args, blk2->bp); in xfs_dir2_leafn_rebalance()
1190 xfs_da_args_t *args, in xfs_dir3_data_block_free() argument
1200 struct xfs_inode *dp = args->dp; in xfs_dir3_data_block_free()
1209 xfs_dir2_free_log_bests(args, &freehdr, fbp, findex, findex); in xfs_dir3_data_block_free()
1237 xfs_dir2_free_log_header(args, fbp); in xfs_dir3_data_block_free()
1246 error = xfs_dir2_shrink_inode(args, fdb, fbp); in xfs_dir3_data_block_free()
1250 } else if (error != -ENOSPC || args->total != 0) in xfs_dir3_data_block_free()
1261 xfs_dir2_free_log_bests(args, &freehdr, fbp, findex, findex); in xfs_dir3_data_block_free()
1272 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_remove() argument
1278 struct xfs_da_geometry *geo = args->geo; in xfs_dir2_leafn_remove()
1294 trace_xfs_dir2_leafn_remove(args, index); in xfs_dir2_leafn_remove()
1296 dp = args->dp; in xfs_dir2_leafn_remove()
1297 tp = args->trans; in xfs_dir2_leafn_remove()
1320 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_remove()
1323 xfs_dir3_leaf_log_ents(args, &leafhdr, bp, index, index); in xfs_dir2_leafn_remove()
1335 xfs_dir2_data_make_free(args, dbp, off, in xfs_dir2_leafn_remove()
1345 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_leafn_remove()
1363 error = xfs_dir2_free_read(tp, dp, args->owner, in xfs_dir2_leafn_remove()
1390 error = xfs_dir2_shrink_inode(args, db, dbp); in xfs_dir2_leafn_remove()
1400 else if (!(error == -ENOSPC && args->total == 0)) in xfs_dir2_leafn_remove()
1407 error = xfs_dir3_data_block_free(args, hdr, free, in xfs_dir2_leafn_remove()
1433 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_split() local
1441 args = state->args; in xfs_dir2_leafn_split()
1442 dp = args->dp; in xfs_dir2_leafn_split()
1444 error = xfs_da_grow_inode(args, &blkno); in xfs_dir2_leafn_split()
1451 error = xfs_dir3_leaf_get_buf(args, xfs_dir2_da_to_db(args->geo, blkno), in xfs_dir2_leafn_split()
1471 error = xfs_dir2_leafn_add(oldblk->bp, args, oldblk->index); in xfs_dir2_leafn_split()
1473 error = xfs_dir2_leafn_add(newblk->bp, args, newblk->index); in xfs_dir2_leafn_split()
1510 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_toosmall()
1524 bytes = state->args->geo->leaf_hdr_size + count * sizeof(ents[0]); in xfs_dir2_leafn_toosmall()
1525 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_dir2_leafn_toosmall()
1569 error = xfs_dir3_leafn_read(state->args->trans, dp, in xfs_dir2_leafn_toosmall()
1570 state->args->owner, blkno, &bp); in xfs_dir2_leafn_toosmall()
1578 bytes = state->args->geo->blksize - in xfs_dir2_leafn_toosmall()
1579 (state->args->geo->blksize >> 2); in xfs_dir2_leafn_toosmall()
1592 xfs_trans_brelse(state->args->trans, bp); in xfs_dir2_leafn_toosmall()
1630 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_unbalance() local
1637 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_unbalance()
1639 args = state->args; in xfs_dir2_leafn_unbalance()
1655 xfs_dir3_leaf_compact(args, &drophdr, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1657 xfs_dir3_leaf_compact(args, &savehdr, save_blk->bp); in xfs_dir2_leafn_unbalance()
1664 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1668 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1676 xfs_dir3_leaf_log_header(args, save_blk->bp); in xfs_dir2_leafn_unbalance()
1677 xfs_dir3_leaf_log_header(args, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1689 struct xfs_da_args *args, in xfs_dir2_node_add_datablk() argument
1697 struct xfs_inode *dp = args->dp; in xfs_dir2_node_add_datablk()
1698 struct xfs_trans *tp = args->trans; in xfs_dir2_node_add_datablk()
1707 if (args->total == 0) in xfs_dir2_node_add_datablk()
1711 error = xfs_dir2_grow_inode(args, XFS_DIR2_DATA_SPACE, dbno); in xfs_dir2_node_add_datablk()
1714 error = xfs_dir3_data_init(args, *dbno, &dbp); in xfs_dir2_node_add_datablk()
1722 fbno = xfs_dir2_db_to_fdb(args->geo, *dbno); in xfs_dir2_node_add_datablk()
1723 error = xfs_dir2_free_try_read(tp, dp, args->owner, in xfs_dir2_node_add_datablk()
1724 xfs_dir2_db_to_da(args->geo, fbno), &fbp); in xfs_dir2_node_add_datablk()
1733 error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, &fbno); in xfs_dir2_node_add_datablk()
1738 xfs_dir2_db_to_fdb(args->geo, *dbno) != in xfs_dir2_node_add_datablk()
1743 (long long)xfs_dir2_db_to_fdb(args->geo, *dbno), in xfs_dir2_node_add_datablk()
1753 xfs_da_mark_sick(args); in xfs_dir2_node_add_datablk()
1758 error = xfs_dir3_free_get_buf(args, fbno, &fbp); in xfs_dir2_node_add_datablk()
1764 hdr->firstdb = (fbno - xfs_dir2_byte_to_db(args->geo, in xfs_dir2_node_add_datablk()
1766 args->geo->free_max_bests; in xfs_dir2_node_add_datablk()
1772 *findex = xfs_dir2_db_to_fdindex(args->geo, *dbno); in xfs_dir2_node_add_datablk()
1776 ASSERT(*findex < args->geo->free_max_bests); in xfs_dir2_node_add_datablk()
1788 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_node_add_datablk()
1802 struct xfs_da_args *args, in xfs_dir2_node_find_freeblk() argument
1810 struct xfs_inode *dp = args->dp; in xfs_dir2_node_find_freeblk()
1811 struct xfs_trans *tp = args->trans; in xfs_dir2_node_find_freeblk()
1857 lastfbno = xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo); in xfs_dir2_node_find_freeblk()
1858 firstfbno = xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET); in xfs_dir2_node_find_freeblk()
1870 error = xfs_dir2_free_try_read(tp, dp, args->owner, in xfs_dir2_node_find_freeblk()
1871 xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir2_node_find_freeblk()
1907 struct xfs_da_args *args, /* operation arguments */ in xfs_dir2_node_addname_int() argument
1914 struct xfs_trans *tp = args->trans; in xfs_dir2_node_addname_int()
1915 struct xfs_inode *dp = args->dp; in xfs_dir2_node_addname_int()
1929 length = xfs_dir2_data_entsize(dp->i_mount, args->namelen); in xfs_dir2_node_addname_int()
1930 error = xfs_dir2_node_find_freeblk(args, fblk, &dbno, &fbp, &freehdr, in xfs_dir2_node_addname_int()
1939 if (args->op_flags & XFS_DA_OP_JUSTCHECK) { in xfs_dir2_node_addname_int()
1952 error = xfs_dir2_node_add_datablk(args, fblk, &dbno, &dbp, &fbp, in xfs_dir2_node_addname_int()
1956 error = xfs_dir3_data_read(tp, dp, args->owner, in xfs_dir2_node_addname_int()
1957 xfs_dir2_db_to_da(args->geo, dbno), 0, &dbp); in xfs_dir2_node_addname_int()
1973 error = xfs_dir2_data_use_free(args, dbp, dup, aoff, length, in xfs_dir2_node_addname_int()
1982 dep->inumber = cpu_to_be64(args->inumber); in xfs_dir2_node_addname_int()
1983 dep->namelen = args->namelen; in xfs_dir2_node_addname_int()
1984 memcpy(dep->name, args->name, dep->namelen); in xfs_dir2_node_addname_int()
1985 xfs_dir2_data_put_ftype(dp->i_mount, dep, args->filetype); in xfs_dir2_node_addname_int()
1988 xfs_dir2_data_log_entry(args, dbp, dep); in xfs_dir2_node_addname_int()
1994 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_node_addname_int()
2004 xfs_dir2_free_log_bests(args, &freehdr, fbp, findex, findex); in xfs_dir2_node_addname_int()
2007 args->blkno = (xfs_dablk_t)dbno; in xfs_dir2_node_addname_int()
2008 args->index = be16_to_cpu(*tagp); in xfs_dir2_node_addname_int()
2017 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_addname() argument
2024 trace_xfs_dir2_node_addname(args); in xfs_dir2_node_addname()
2029 state = xfs_da_state_alloc(args); in xfs_dir2_node_addname()
2044 rval = xfs_dir2_node_addname_int(args, in xfs_dir2_node_addname()
2054 rval = xfs_dir2_leafn_add(blk->bp, args, blk->index); in xfs_dir2_node_addname()
2059 if (!(args->op_flags & XFS_DA_OP_JUSTCHECK)) in xfs_dir2_node_addname()
2065 if (args->total == 0) { in xfs_dir2_node_addname()
2086 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_lookup() argument
2093 trace_xfs_dir2_node_lookup(args); in xfs_dir2_node_lookup()
2098 state = xfs_da_state_alloc(args); in xfs_dir2_node_lookup()
2106 else if (rval == -ENOENT && args->cmpresult == XFS_CMP_CASE) { in xfs_dir2_node_lookup()
2113 rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen); in xfs_dir2_node_lookup()
2119 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_lookup()
2126 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_lookup()
2138 struct xfs_da_args *args) /* operation arguments */ in xfs_dir2_node_removename() argument
2145 trace_xfs_dir2_node_removename(args); in xfs_dir2_node_removename()
2150 state = xfs_da_state_alloc(args); in xfs_dir2_node_removename()
2170 error = xfs_dir2_leafn_remove(args, blk->bp, blk->index, in xfs_dir2_node_removename()
2198 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_replace() argument
2210 trace_xfs_dir2_node_replace(args); in xfs_dir2_node_replace()
2215 state = xfs_da_state_alloc(args); in xfs_dir2_node_replace()
2221 inum = args->inumber; in xfs_dir2_node_replace()
2222 ftype = args->filetype; in xfs_dir2_node_replace()
2255 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_node_replace()
2263 xfs_dir2_data_log_entry(args, state->extrablk.bp, dep); in xfs_dir2_node_replace()
2270 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_replace()
2277 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_replace()
2290 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_node_trim_free() argument
2301 dp = args->dp; in xfs_dir2_node_trim_free()
2302 tp = args->trans; in xfs_dir2_node_trim_free()
2309 error = xfs_dir2_free_try_read(tp, dp, args->owner, fo, &bp); in xfs_dir2_node_trim_free()
2331 error = xfs_dir2_shrink_inode(args, in xfs_dir2_node_trim_free()
2332 xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo), bp); in xfs_dir2_node_trim_free()