Lines Matching refs:args
41 static int xfs_dir2_leafn_add(struct xfs_buf *bp, xfs_da_args_t *args,
46 static int xfs_dir2_leafn_remove(xfs_da_args_t *args, struct xfs_buf *bp,
49 static int xfs_dir2_node_addname_int(xfs_da_args_t *args,
200 xfs_da_args_t *args, in xfs_dir3_free_get_buf() argument
204 struct xfs_trans *tp = args->trans; in xfs_dir3_free_get_buf()
205 struct xfs_inode *dp = args->dp; in xfs_dir3_free_get_buf()
211 error = xfs_da_get_buf(tp, dp, xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir3_free_get_buf()
246 struct xfs_da_args *args, in xfs_dir2_free_log_bests() argument
255 bests = args->dp->d_ops->free_bests_p(free); in xfs_dir2_free_log_bests()
258 xfs_trans_log_buf(args->trans, bp, in xfs_dir2_free_log_bests()
269 struct xfs_da_args *args, in xfs_dir2_free_log_header() argument
279 xfs_trans_log_buf(args->trans, bp, 0, in xfs_dir2_free_log_header()
280 args->dp->d_ops->free_hdr_size - 1); in xfs_dir2_free_log_header()
290 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leaf_to_node() argument
308 trace_xfs_dir2_leaf_to_node(args); in xfs_dir2_leaf_to_node()
310 dp = args->dp; in xfs_dir2_leaf_to_node()
311 tp = args->trans; in xfs_dir2_leaf_to_node()
315 if ((error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, &fdb))) { in xfs_dir2_leaf_to_node()
318 ASSERT(fdb == xfs_dir2_byte_to_db(args->geo, XFS_DIR2_FREE_OFFSET)); in xfs_dir2_leaf_to_node()
322 error = xfs_dir3_free_get_buf(args, fdb, &fbp); in xfs_dir2_leaf_to_node()
329 ltp = xfs_dir2_leaf_tail_p(args->geo, leaf); in xfs_dir2_leaf_to_node()
331 (uint)dp->i_d.di_size / args->geo->blksize); in xfs_dir2_leaf_to_node()
352 xfs_dir2_free_log_bests(args, fbp, 0, freehdr.nvalid - 1); in xfs_dir2_leaf_to_node()
353 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_leaf_to_node()
367 xfs_dir3_leaf_log_header(args, lbp); in xfs_dir2_leaf_to_node()
379 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_add() argument
393 trace_xfs_dir2_leafn_add(args, index); in xfs_dir2_leafn_add()
395 dp = args->dp; in xfs_dir2_leafn_add()
414 if (leafhdr.count == dp->d_ops->leaf_max_ents(args->geo)) { in xfs_dir2_leafn_add()
420 ASSERT(index == 0 || be32_to_cpu(ents[index - 1].hashval) <= args->hashval); in xfs_dir2_leafn_add()
422 be32_to_cpu(ents[index].hashval) >= args->hashval); in xfs_dir2_leafn_add()
424 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_leafn_add()
448 lep->hashval = cpu_to_be32(args->hashval); in xfs_dir2_leafn_add()
449 lep->address = cpu_to_be32(xfs_dir2_db_off_to_dataptr(args->geo, in xfs_dir2_leafn_add()
450 args->blkno, args->index)); in xfs_dir2_leafn_add()
453 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_add()
454 xfs_dir3_leaf_log_ents(args, bp, lfloglow, lfloghigh); in xfs_dir2_leafn_add()
514 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_addname() argument
536 dp = args->dp; in xfs_dir2_leafn_lookup_for_addname()
537 tp = args->trans; in xfs_dir2_leafn_lookup_for_addname()
549 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_addname()
561 length = dp->d_ops->data_entsize(args->namelen); in xfs_dir2_leafn_lookup_for_addname()
566 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_addname()
576 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_addname()
594 newfdb = dp->d_ops->db_to_fdb(args->geo, newdb); in xfs_dir2_leafn_lookup_for_addname()
606 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_addname()
618 fi = dp->d_ops->db_to_fdindex(args->geo, curdb); in xfs_dir2_leafn_lookup_for_addname()
638 ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); in xfs_dir2_leafn_lookup_for_addname()
669 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_for_entry() argument
688 dp = args->dp; in xfs_dir2_leafn_lookup_for_entry()
689 tp = args->trans; in xfs_dir2_leafn_lookup_for_entry()
701 index = xfs_dir2_leaf_search_hash(args, bp); in xfs_dir2_leafn_lookup_for_entry()
713 index < leafhdr.count && be32_to_cpu(lep->hashval) == args->hashval; in xfs_dir2_leafn_lookup_for_entry()
723 newdb = xfs_dir2_dataptr_to_db(args->geo, in xfs_dir2_leafn_lookup_for_entry()
736 if (curbp && (args->cmpresult == XFS_CMP_DIFFERENT || in xfs_dir2_leafn_lookup_for_entry()
743 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
749 xfs_dir2_db_to_da(args->geo, in xfs_dir2_leafn_lookup_for_entry()
762 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_leafn_lookup_for_entry()
769 cmp = mp->m_dirnameops->compname(args, dep->name, dep->namelen); in xfs_dir2_leafn_lookup_for_entry()
770 if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { in xfs_dir2_leafn_lookup_for_entry()
772 if (args->cmpresult != XFS_CMP_DIFFERENT && in xfs_dir2_leafn_lookup_for_entry()
775 args->cmpresult = cmp; in xfs_dir2_leafn_lookup_for_entry()
776 args->inumber = be64_to_cpu(dep->inumber); in xfs_dir2_leafn_lookup_for_entry()
777 args->filetype = dp->d_ops->data_get_ftype(dep); in xfs_dir2_leafn_lookup_for_entry()
791 ASSERT(index == leafhdr.count || (args->op_flags & XFS_DA_OP_OKNOENT)); in xfs_dir2_leafn_lookup_for_entry()
793 if (args->cmpresult == XFS_CMP_DIFFERENT) { in xfs_dir2_leafn_lookup_for_entry()
822 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_lookup_int() argument
826 if (args->op_flags & XFS_DA_OP_ADDNAME) in xfs_dir2_leafn_lookup_int()
827 return xfs_dir2_leafn_lookup_for_addname(bp, args, indexp, in xfs_dir2_leafn_lookup_int()
829 return xfs_dir2_leafn_lookup_for_entry(bp, args, indexp, state); in xfs_dir2_leafn_lookup_int()
838 xfs_da_args_t *args, /* operation arguments */ in xfs_dir3_leafn_moveents() argument
851 trace_xfs_dir2_leafn_moveents(args, start_s, start_d, count); in xfs_dir3_leafn_moveents()
867 xfs_dir3_leaf_log_ents(args, bp_d, start_d + count, in xfs_dir3_leafn_moveents()
889 xfs_dir3_leaf_log_ents(args, bp_d, start_d, start_d + count - 1); in xfs_dir3_leafn_moveents()
898 xfs_dir3_leaf_log_ents(args, bp_s, start_s, start_s + count - 1); in xfs_dir3_leafn_moveents()
953 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_rebalance() local
968 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_rebalance()
970 args = state->args; in xfs_dir2_leafn_rebalance()
1005 isleft = args->hashval <= midhash; in xfs_dir2_leafn_rebalance()
1020 xfs_dir3_leafn_moveents(args, blk1->bp, &hdr1, ents1, in xfs_dir2_leafn_rebalance()
1024 xfs_dir3_leafn_moveents(args, blk2->bp, &hdr2, ents2, 0, in xfs_dir2_leafn_rebalance()
1034 xfs_dir3_leaf_log_header(args, blk1->bp); in xfs_dir2_leafn_rebalance()
1035 xfs_dir3_leaf_log_header(args, blk2->bp); in xfs_dir2_leafn_rebalance()
1070 xfs_da_args_t *args, in xfs_dir3_data_block_free() argument
1081 struct xfs_inode *dp = args->dp; in xfs_dir3_data_block_free()
1091 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir3_data_block_free()
1119 xfs_dir2_free_log_header(args, fbp); in xfs_dir3_data_block_free()
1128 error = xfs_dir2_shrink_inode(args, fdb, fbp); in xfs_dir3_data_block_free()
1132 } else if (error != -ENOSPC || args->total != 0) in xfs_dir3_data_block_free()
1143 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir3_data_block_free()
1154 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_leafn_remove() argument
1176 trace_xfs_dir2_leafn_remove(args, index); in xfs_dir2_leafn_remove()
1178 dp = args->dp; in xfs_dir2_leafn_remove()
1179 tp = args->trans; in xfs_dir2_leafn_remove()
1192 db = xfs_dir2_dataptr_to_db(args->geo, be32_to_cpu(lep->address)); in xfs_dir2_leafn_remove()
1194 off = xfs_dir2_dataptr_to_off(args->geo, be32_to_cpu(lep->address)); in xfs_dir2_leafn_remove()
1203 xfs_dir3_leaf_log_header(args, bp); in xfs_dir2_leafn_remove()
1206 xfs_dir3_leaf_log_ents(args, bp, index, index); in xfs_dir2_leafn_remove()
1218 xfs_dir2_data_make_free(args, dbp, off, in xfs_dir2_leafn_remove()
1227 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_leafn_remove()
1244 fdb = dp->d_ops->db_to_fdb(args->geo, db); in xfs_dir2_leafn_remove()
1246 xfs_dir2_db_to_da(args->geo, fdb), in xfs_dir2_leafn_remove()
1255 ASSERT(freehdr.firstdb == dp->d_ops->free_max_bests(args->geo) * in xfs_dir2_leafn_remove()
1256 (fdb - xfs_dir2_byte_to_db(args->geo, in xfs_dir2_leafn_remove()
1263 findex = dp->d_ops->db_to_fdindex(args->geo, db); in xfs_dir2_leafn_remove()
1269 if (longest == args->geo->blksize - in xfs_dir2_leafn_remove()
1274 error = xfs_dir2_shrink_inode(args, db, dbp); in xfs_dir2_leafn_remove()
1284 else if (!(error == -ENOSPC && args->total == 0)) in xfs_dir2_leafn_remove()
1291 error = xfs_dir3_data_block_free(args, hdr, free, in xfs_dir2_leafn_remove()
1304 args->geo->magicpct; in xfs_dir2_leafn_remove()
1317 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_split() local
1325 args = state->args; in xfs_dir2_leafn_split()
1326 dp = args->dp; in xfs_dir2_leafn_split()
1328 error = xfs_da_grow_inode(args, &blkno); in xfs_dir2_leafn_split()
1335 error = xfs_dir3_leaf_get_buf(args, xfs_dir2_da_to_db(args->geo, blkno), in xfs_dir2_leafn_split()
1355 error = xfs_dir2_leafn_add(oldblk->bp, args, oldblk->index); in xfs_dir2_leafn_split()
1357 error = xfs_dir2_leafn_add(newblk->bp, args, newblk->index); in xfs_dir2_leafn_split()
1394 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_toosmall()
1409 if (bytes > (state->args->geo->blksize >> 1)) { in xfs_dir2_leafn_toosmall()
1453 error = xfs_dir3_leafn_read(state->args->trans, dp, in xfs_dir2_leafn_toosmall()
1462 bytes = state->args->geo->blksize - in xfs_dir2_leafn_toosmall()
1463 (state->args->geo->blksize >> 2); in xfs_dir2_leafn_toosmall()
1476 xfs_trans_brelse(state->args->trans, bp); in xfs_dir2_leafn_toosmall()
1514 xfs_da_args_t *args; /* operation arguments */ in xfs_dir2_leafn_unbalance() local
1521 struct xfs_inode *dp = state->args->dp; in xfs_dir2_leafn_unbalance()
1523 args = state->args; in xfs_dir2_leafn_unbalance()
1539 xfs_dir3_leaf_compact(args, &drophdr, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1541 xfs_dir3_leaf_compact(args, &savehdr, save_blk->bp); in xfs_dir2_leafn_unbalance()
1548 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1552 xfs_dir3_leafn_moveents(args, drop_blk->bp, &drophdr, dents, 0, in xfs_dir2_leafn_unbalance()
1560 xfs_dir3_leaf_log_header(args, save_blk->bp); in xfs_dir2_leafn_unbalance()
1561 xfs_dir3_leaf_log_header(args, drop_blk->bp); in xfs_dir2_leafn_unbalance()
1572 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_addname() argument
1579 trace_xfs_dir2_node_addname(args); in xfs_dir2_node_addname()
1585 state->args = args; in xfs_dir2_node_addname()
1586 state->mp = args->dp->i_mount; in xfs_dir2_node_addname()
1601 rval = xfs_dir2_node_addname_int(args, in xfs_dir2_node_addname()
1611 rval = xfs_dir2_leafn_add(blk->bp, args, blk->index); in xfs_dir2_node_addname()
1616 if (!(args->op_flags & XFS_DA_OP_JUSTCHECK)) in xfs_dir2_node_addname()
1622 if (args->total == 0) { in xfs_dir2_node_addname()
1643 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_node_addname_int() argument
1670 dp = args->dp; in xfs_dir2_node_addname_int()
1672 tp = args->trans; in xfs_dir2_node_addname_int()
1673 length = dp->d_ops->data_entsize(args->namelen); in xfs_dir2_node_addname_int()
1727 lastfbno = xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo); in xfs_dir2_node_addname_int()
1745 fbno = xfs_dir2_byte_to_db(args->geo, in xfs_dir2_node_addname_int()
1764 xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir2_node_addname_int()
1809 if ((args->op_flags & XFS_DA_OP_JUSTCHECK) || args->total == 0) in xfs_dir2_node_addname_int()
1815 if (unlikely((error = xfs_dir2_grow_inode(args, in xfs_dir2_node_addname_int()
1818 (error = xfs_dir3_data_init(args, dbno, &dbp)))) in xfs_dir2_node_addname_int()
1833 fbno = dp->d_ops->db_to_fdb(args->geo, dbno); in xfs_dir2_node_addname_int()
1835 xfs_dir2_db_to_da(args->geo, fbno), in xfs_dir2_node_addname_int()
1845 error = xfs_dir2_grow_inode(args, XFS_DIR2_FREE_SPACE, in xfs_dir2_node_addname_int()
1850 if (dp->d_ops->db_to_fdb(args->geo, dbno) != fbno) { in xfs_dir2_node_addname_int()
1855 args->geo, dbno), in xfs_dir2_node_addname_int()
1876 error = xfs_dir3_free_get_buf(args, fbno, &fbp); in xfs_dir2_node_addname_int()
1887 (fbno - xfs_dir2_byte_to_db(args->geo, in xfs_dir2_node_addname_int()
1889 dp->d_ops->free_max_bests(args->geo); in xfs_dir2_node_addname_int()
1899 findex = dp->d_ops->db_to_fdindex(args->geo, dbno); in xfs_dir2_node_addname_int()
1905 ASSERT(findex < dp->d_ops->free_max_bests(args->geo)); in xfs_dir2_node_addname_int()
1919 xfs_dir2_free_log_header(args, fbp); in xfs_dir2_node_addname_int()
1938 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_node_addname_int()
1945 xfs_dir2_db_to_da(args->geo, dbno), in xfs_dir2_node_addname_int()
1963 xfs_dir2_data_use_free(args, dbp, dup, in xfs_dir2_node_addname_int()
1970 dep->inumber = cpu_to_be64(args->inumber); in xfs_dir2_node_addname_int()
1971 dep->namelen = args->namelen; in xfs_dir2_node_addname_int()
1972 memcpy(dep->name, args->name, dep->namelen); in xfs_dir2_node_addname_int()
1973 dp->d_ops->data_put_ftype(dep, args->filetype); in xfs_dir2_node_addname_int()
1976 xfs_dir2_data_log_entry(args, dbp, dep); in xfs_dir2_node_addname_int()
1986 xfs_dir2_data_log_header(args, dbp); in xfs_dir2_node_addname_int()
1999 xfs_dir2_free_log_bests(args, fbp, findex, findex); in xfs_dir2_node_addname_int()
2003 args->blkno = (xfs_dablk_t)dbno; in xfs_dir2_node_addname_int()
2004 args->index = be16_to_cpu(*tagp); in xfs_dir2_node_addname_int()
2015 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_lookup() argument
2022 trace_xfs_dir2_node_lookup(args); in xfs_dir2_node_lookup()
2028 state->args = args; in xfs_dir2_node_lookup()
2029 state->mp = args->dp->i_mount; in xfs_dir2_node_lookup()
2036 else if (rval == -ENOENT && args->cmpresult == XFS_CMP_CASE) { in xfs_dir2_node_lookup()
2043 rval = xfs_dir_cilookup_result(args, dep->name, dep->namelen); in xfs_dir2_node_lookup()
2049 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_lookup()
2056 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_lookup()
2068 struct xfs_da_args *args) /* operation arguments */ in xfs_dir2_node_removename() argument
2075 trace_xfs_dir2_node_removename(args); in xfs_dir2_node_removename()
2081 state->args = args; in xfs_dir2_node_removename()
2082 state->mp = args->dp->i_mount; in xfs_dir2_node_removename()
2102 error = xfs_dir2_leafn_remove(args, blk->bp, blk->index, in xfs_dir2_node_removename()
2130 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_node_replace() argument
2144 trace_xfs_dir2_node_replace(args); in xfs_dir2_node_replace()
2150 state->args = args; in xfs_dir2_node_replace()
2151 state->mp = args->dp->i_mount; in xfs_dir2_node_replace()
2157 inum = args->inumber; in xfs_dir2_node_replace()
2158 ftype = args->filetype; in xfs_dir2_node_replace()
2179 ents = args->dp->d_ops->leaf_ents_p(leaf); in xfs_dir2_node_replace()
2190 xfs_dir2_dataptr_to_off(args->geo, in xfs_dir2_node_replace()
2197 args->dp->d_ops->data_put_ftype(dep, ftype); in xfs_dir2_node_replace()
2198 xfs_dir2_data_log_entry(args, state->extrablk.bp, dep); in xfs_dir2_node_replace()
2205 xfs_trans_brelse(args->trans, state->extrablk.bp); in xfs_dir2_node_replace()
2212 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_dir2_node_replace()
2225 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_node_trim_free() argument
2236 dp = args->dp; in xfs_dir2_node_trim_free()
2237 tp = args->trans; in xfs_dir2_node_trim_free()
2264 error = xfs_dir2_shrink_inode(args, in xfs_dir2_node_trim_free()
2265 xfs_dir2_da_to_db(args->geo, (xfs_dablk_t)fo), bp); in xfs_dir2_node_trim_free()