Lines Matching refs:args

37 static void xfs_dir2_sf_addname_easy(xfs_da_args_t *args,
41 static void xfs_dir2_sf_addname_hard(xfs_da_args_t *args, int objchange,
43 static int xfs_dir2_sf_addname_pick(xfs_da_args_t *args, int objchange,
47 static void xfs_dir2_sf_check(xfs_da_args_t *args);
49 #define xfs_dir2_sf_check(args) argument
52 static void xfs_dir2_sf_toino4(xfs_da_args_t *args);
53 static void xfs_dir2_sf_toino8(xfs_da_args_t *args);
154 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_block_to_sf() argument
173 trace_xfs_dir2_block_to_sf(args); in xfs_dir2_block_to_sf()
175 dp = args->dp; in xfs_dir2_block_to_sf()
196 btp = xfs_dir2_block_tail_p(args->geo, hdr); in xfs_dir2_block_to_sf()
248 error = xfs_dir2_shrink_inode(args, args->geo->datablk, bp); in xfs_dir2_block_to_sf()
269 xfs_dir2_sf_check(args); in xfs_dir2_block_to_sf()
271 xfs_trans_log_inode(args->trans, dp, logflags); in xfs_dir2_block_to_sf()
284 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_addname() argument
296 trace_xfs_dir2_sf_addname(args); in xfs_dir2_sf_addname()
298 ASSERT(xfs_dir2_sf_lookup(args) == -ENOENT); in xfs_dir2_sf_addname()
299 dp = args->dp; in xfs_dir2_sf_addname()
315 incr_isize = dp->d_ops->sf_entsize(sfp, args->namelen); in xfs_dir2_sf_addname()
321 if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) { in xfs_dir2_sf_addname()
339 xfs_dir2_sf_addname_pick(args, objchange, &sfep, &offset)) == 0) { in xfs_dir2_sf_addname()
343 if ((args->op_flags & XFS_DA_OP_JUSTCHECK) || args->total == 0) in xfs_dir2_sf_addname()
348 error = xfs_dir2_sf_to_block(args); in xfs_dir2_sf_addname()
351 return xfs_dir2_block_addname(args); in xfs_dir2_sf_addname()
356 if (args->op_flags & XFS_DA_OP_JUSTCHECK) in xfs_dir2_sf_addname()
362 xfs_dir2_sf_addname_easy(args, sfep, offset, new_isize); in xfs_dir2_sf_addname()
370 xfs_dir2_sf_toino8(args); in xfs_dir2_sf_addname()
371 xfs_dir2_sf_addname_hard(args, objchange, new_isize); in xfs_dir2_sf_addname()
373 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); in xfs_dir2_sf_addname()
386 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_sf_addname_easy() argument
395 dp = args->dp; in xfs_dir2_sf_addname_easy()
402 xfs_idata_realloc(dp, dp->d_ops->sf_entsize(sfp, args->namelen), in xfs_dir2_sf_addname_easy()
412 sfep->namelen = args->namelen; in xfs_dir2_sf_addname_easy()
414 memcpy(sfep->name, args->name, sfep->namelen); in xfs_dir2_sf_addname_easy()
415 dp->d_ops->sf_put_ino(sfp, sfep, args->inumber); in xfs_dir2_sf_addname_easy()
416 dp->d_ops->sf_put_ftype(sfep, args->filetype); in xfs_dir2_sf_addname_easy()
422 if (args->inumber > XFS_DIR2_MAX_SHORT_INUM) in xfs_dir2_sf_addname_easy()
425 xfs_dir2_sf_check(args); in xfs_dir2_sf_addname_easy()
439 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_sf_addname_hard() argument
459 dp = args->dp; in xfs_dir2_sf_addname_hard()
473 add_datasize = dp->d_ops->data_entsize(args->namelen), in xfs_dir2_sf_addname_hard()
503 sfep->namelen = args->namelen; in xfs_dir2_sf_addname_hard()
505 memcpy(sfep->name, args->name, sfep->namelen); in xfs_dir2_sf_addname_hard()
506 dp->d_ops->sf_put_ino(sfp, sfep, args->inumber); in xfs_dir2_sf_addname_hard()
507 dp->d_ops->sf_put_ftype(sfep, args->filetype); in xfs_dir2_sf_addname_hard()
509 if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && !objchange) in xfs_dir2_sf_addname_hard()
520 xfs_dir2_sf_check(args); in xfs_dir2_sf_addname_hard()
532 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_sf_addname_pick() argument
546 dp = args->dp; in xfs_dir2_sf_addname_pick()
549 size = dp->d_ops->data_entsize(args->namelen); in xfs_dir2_sf_addname_pick()
577 if (used + (holefit ? 0 : size) > args->geo->blksize) in xfs_dir2_sf_addname_pick()
587 if (used + size > args->geo->blksize) in xfs_dir2_sf_addname_pick()
603 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_check() argument
613 dp = args->dp; in xfs_dir2_sf_check()
635 (uint)sizeof(xfs_dir2_block_tail_t) <= args->geo->blksize); in xfs_dir2_sf_check()
644 xfs_da_args_t *args, /* operation arguments */ in xfs_dir2_sf_create() argument
652 trace_xfs_dir2_sf_create(args); in xfs_dir2_sf_create()
654 dp = args->dp; in xfs_dir2_sf_create()
665 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE); in xfs_dir2_sf_create()
687 xfs_dir2_sf_check(args); in xfs_dir2_sf_create()
688 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); in xfs_dir2_sf_create()
698 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_lookup() argument
708 trace_xfs_dir2_sf_lookup(args); in xfs_dir2_sf_lookup()
710 xfs_dir2_sf_check(args); in xfs_dir2_sf_lookup()
711 dp = args->dp; in xfs_dir2_sf_lookup()
728 if (args->namelen == 1 && args->name[0] == '.') { in xfs_dir2_sf_lookup()
729 args->inumber = dp->i_ino; in xfs_dir2_sf_lookup()
730 args->cmpresult = XFS_CMP_EXACT; in xfs_dir2_sf_lookup()
731 args->filetype = XFS_DIR3_FT_DIR; in xfs_dir2_sf_lookup()
737 if (args->namelen == 2 && in xfs_dir2_sf_lookup()
738 args->name[0] == '.' && args->name[1] == '.') { in xfs_dir2_sf_lookup()
739 args->inumber = dp->d_ops->sf_get_parent_ino(sfp); in xfs_dir2_sf_lookup()
740 args->cmpresult = XFS_CMP_EXACT; in xfs_dir2_sf_lookup()
741 args->filetype = XFS_DIR3_FT_DIR; in xfs_dir2_sf_lookup()
755 cmp = dp->i_mount->m_dirnameops->compname(args, sfep->name, in xfs_dir2_sf_lookup()
757 if (cmp != XFS_CMP_DIFFERENT && cmp != args->cmpresult) { in xfs_dir2_sf_lookup()
758 args->cmpresult = cmp; in xfs_dir2_sf_lookup()
759 args->inumber = dp->d_ops->sf_get_ino(sfp, sfep); in xfs_dir2_sf_lookup()
760 args->filetype = dp->d_ops->sf_get_ftype(sfep); in xfs_dir2_sf_lookup()
766 ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); in xfs_dir2_sf_lookup()
774 error = xfs_dir_cilookup_result(args, ci_sfep->name, ci_sfep->namelen); in xfs_dir2_sf_lookup()
783 xfs_da_args_t *args) in xfs_dir2_sf_removename() argument
794 trace_xfs_dir2_sf_removename(args); in xfs_dir2_sf_removename()
796 dp = args->dp; in xfs_dir2_sf_removename()
817 if (xfs_da_compname(args, sfep->name, sfep->namelen) == in xfs_dir2_sf_removename()
820 args->inumber); in xfs_dir2_sf_removename()
833 entsize = dp->d_ops->sf_entsize(sfp, args->namelen); in xfs_dir2_sf_removename()
854 if (args->inumber > XFS_DIR2_MAX_SHORT_INUM) { in xfs_dir2_sf_removename()
856 xfs_dir2_sf_toino4(args); in xfs_dir2_sf_removename()
860 xfs_dir2_sf_check(args); in xfs_dir2_sf_removename()
861 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); in xfs_dir2_sf_removename()
870 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_replace() argument
879 trace_xfs_dir2_sf_replace(args); in xfs_dir2_sf_replace()
881 dp = args->dp; in xfs_dir2_sf_replace()
899 if (args->inumber > XFS_DIR2_MAX_SHORT_INUM && sfp->i8count == 0) { in xfs_dir2_sf_replace()
912 error = xfs_dir2_sf_to_block(args); in xfs_dir2_sf_replace()
916 return xfs_dir2_block_replace(args); in xfs_dir2_sf_replace()
921 xfs_dir2_sf_toino8(args); in xfs_dir2_sf_replace()
927 ASSERT(args->namelen != 1 || args->name[0] != '.'); in xfs_dir2_sf_replace()
931 if (args->namelen == 2 && in xfs_dir2_sf_replace()
932 args->name[0] == '.' && args->name[1] == '.') { in xfs_dir2_sf_replace()
934 ASSERT(args->inumber != ino); in xfs_dir2_sf_replace()
935 dp->d_ops->sf_put_parent_ino(sfp, args->inumber); in xfs_dir2_sf_replace()
943 if (xfs_da_compname(args, sfep->name, sfep->namelen) == in xfs_dir2_sf_replace()
946 ASSERT(args->inumber != ino); in xfs_dir2_sf_replace()
947 dp->d_ops->sf_put_ino(sfp, sfep, args->inumber); in xfs_dir2_sf_replace()
948 dp->d_ops->sf_put_ftype(sfep, args->filetype); in xfs_dir2_sf_replace()
956 ASSERT(args->op_flags & XFS_DA_OP_OKNOENT); in xfs_dir2_sf_replace()
958 xfs_dir2_sf_toino4(args); in xfs_dir2_sf_replace()
966 args->inumber <= XFS_DIR2_MAX_SHORT_INUM) { in xfs_dir2_sf_replace()
971 xfs_dir2_sf_toino4(args); in xfs_dir2_sf_replace()
979 args->inumber > XFS_DIR2_MAX_SHORT_INUM) { in xfs_dir2_sf_replace()
988 xfs_dir2_sf_check(args); in xfs_dir2_sf_replace()
989 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_DDATA); in xfs_dir2_sf_replace()
999 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_toino4() argument
1011 trace_xfs_dir2_sf_toino4(args); in xfs_dir2_sf_toino4()
1013 dp = args->dp; in xfs_dir2_sf_toino4()
1065 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); in xfs_dir2_sf_toino4()
1075 xfs_da_args_t *args) /* operation arguments */ in xfs_dir2_sf_toino8() argument
1087 trace_xfs_dir2_sf_toino8(args); in xfs_dir2_sf_toino8()
1089 dp = args->dp; in xfs_dir2_sf_toino8()
1141 xfs_trans_log_inode(args->trans, dp, XFS_ILOG_CORE | XFS_ILOG_DDATA); in xfs_dir2_sf_toino8()