Lines Matching refs:args

57 STATIC int xfs_attr_shortform_addname(xfs_da_args_t *args);
62 STATIC int xfs_attr_leaf_get(xfs_da_args_t *args);
63 STATIC int xfs_attr_leaf_addname(xfs_da_args_t *args);
64 STATIC int xfs_attr_leaf_removename(xfs_da_args_t *args);
69 STATIC int xfs_attr_node_get(xfs_da_args_t *args);
70 STATIC int xfs_attr_node_addname(xfs_da_args_t *args);
71 STATIC int xfs_attr_node_removename(xfs_da_args_t *args);
78 struct xfs_da_args *args, in xfs_attr_args_init() argument
87 memset(args, 0, sizeof(*args)); in xfs_attr_args_init()
88 args->geo = dp->i_mount->m_attr_geo; in xfs_attr_args_init()
89 args->whichfork = XFS_ATTR_FORK; in xfs_attr_args_init()
90 args->dp = dp; in xfs_attr_args_init()
91 args->flags = flags; in xfs_attr_args_init()
92 args->name = name; in xfs_attr_args_init()
93 args->namelen = strlen((const char *)name); in xfs_attr_args_init()
94 if (args->namelen >= MAXNAMELEN) in xfs_attr_args_init()
97 args->hashval = xfs_da_hashname(args->name, args->namelen); in xfs_attr_args_init()
124 struct xfs_da_args args; in xfs_attr_get() local
136 error = xfs_attr_args_init(&args, ip, name, flags); in xfs_attr_get()
140 args.value = value; in xfs_attr_get()
141 args.valuelen = *valuelenp; in xfs_attr_get()
147 error = xfs_attr_shortform_getvalue(&args); in xfs_attr_get()
149 error = xfs_attr_leaf_get(&args); in xfs_attr_get()
151 error = xfs_attr_node_get(&args); in xfs_attr_get()
154 *valuelenp = args.valuelen; in xfs_attr_get()
163 struct xfs_da_args *args, in xfs_attr_calc_size() argument
166 struct xfs_mount *mp = args->dp->i_mount; in xfs_attr_calc_size()
174 size = xfs_attr_leaf_newentsize(args, local); in xfs_attr_calc_size()
177 if (size > (args->geo->blksize / 2)) { in xfs_attr_calc_size()
186 uint dblocks = xfs_attr3_rmt_blocks(mp, args->valuelen); in xfs_attr_calc_size()
203 struct xfs_da_args args; in xfs_attr_set() local
215 error = xfs_attr_args_init(&args, dp, name, flags); in xfs_attr_set()
219 args.value = value; in xfs_attr_set()
220 args.valuelen = valuelen; in xfs_attr_set()
221 args.firstblock = &firstblock; in xfs_attr_set()
222 args.flist = &flist; in xfs_attr_set()
223 args.op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; in xfs_attr_set()
224 args.total = xfs_attr_calc_size(&args, &local); in xfs_attr_set()
236 XFS_ATTR_SF_ENTSIZE_BYNAME(args.namelen, valuelen); in xfs_attr_set()
253 args.trans = xfs_trans_alloc(mp, XFS_TRANS_ATTR_SET); in xfs_attr_set()
261 args.trans->t_flags |= XFS_TRANS_RESERVE; in xfs_attr_set()
264 M_RES(mp)->tr_attrsetrt.tr_logres * args.total; in xfs_attr_set()
267 error = xfs_trans_reserve(args.trans, &tres, args.total, 0); in xfs_attr_set()
269 xfs_trans_cancel(args.trans, 0); in xfs_attr_set()
274 error = xfs_trans_reserve_quota_nblks(args.trans, dp, args.total, 0, in xfs_attr_set()
279 xfs_trans_cancel(args.trans, XFS_TRANS_RELEASE_LOG_RES); in xfs_attr_set()
283 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_set()
297 xfs_attr_shortform_create(&args); in xfs_attr_set()
303 error = xfs_attr_shortform_addname(&args); in xfs_attr_set()
309 ASSERT(args.trans != NULL); in xfs_attr_set()
317 xfs_trans_set_sync(args.trans); in xfs_attr_set()
320 xfs_trans_ichgtime(args.trans, dp, in xfs_attr_set()
323 err2 = xfs_trans_commit(args.trans, in xfs_attr_set()
334 xfs_bmap_init(args.flist, args.firstblock); in xfs_attr_set()
335 error = xfs_attr_shortform_to_leaf(&args); in xfs_attr_set()
337 error = xfs_bmap_finish(&args.trans, args.flist, in xfs_attr_set()
342 args.trans = NULL; in xfs_attr_set()
352 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_set()
359 error = xfs_trans_roll(&args.trans, dp); in xfs_attr_set()
366 error = xfs_attr_leaf_addname(&args); in xfs_attr_set()
368 error = xfs_attr_node_addname(&args); in xfs_attr_set()
377 xfs_trans_set_sync(args.trans); in xfs_attr_set()
380 xfs_trans_ichgtime(args.trans, dp, XFS_ICHGTIME_CHG); in xfs_attr_set()
385 xfs_trans_log_inode(args.trans, dp, XFS_ILOG_CORE); in xfs_attr_set()
386 error = xfs_trans_commit(args.trans, XFS_TRANS_RELEASE_LOG_RES); in xfs_attr_set()
392 if (args.trans) { in xfs_attr_set()
393 xfs_trans_cancel(args.trans, in xfs_attr_set()
411 struct xfs_da_args args; in xfs_attr_remove() local
424 error = xfs_attr_args_init(&args, dp, name, flags); in xfs_attr_remove()
428 args.firstblock = &firstblock; in xfs_attr_remove()
429 args.flist = &flist; in xfs_attr_remove()
436 args.op_flags = XFS_DA_OP_OKNOENT; in xfs_attr_remove()
452 args.trans = xfs_trans_alloc(mp, XFS_TRANS_ATTR_RM); in xfs_attr_remove()
460 args.trans->t_flags |= XFS_TRANS_RESERVE; in xfs_attr_remove()
462 error = xfs_trans_reserve(args.trans, &M_RES(mp)->tr_attrrm, in xfs_attr_remove()
465 xfs_trans_cancel(args.trans, 0); in xfs_attr_remove()
474 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_remove()
480 error = xfs_attr_shortform_remove(&args); in xfs_attr_remove()
482 error = xfs_attr_leaf_removename(&args); in xfs_attr_remove()
484 error = xfs_attr_node_removename(&args); in xfs_attr_remove()
495 xfs_trans_set_sync(args.trans); in xfs_attr_remove()
498 xfs_trans_ichgtime(args.trans, dp, XFS_ICHGTIME_CHG); in xfs_attr_remove()
503 xfs_trans_log_inode(args.trans, dp, XFS_ILOG_CORE); in xfs_attr_remove()
504 error = xfs_trans_commit(args.trans, XFS_TRANS_RELEASE_LOG_RES); in xfs_attr_remove()
510 if (args.trans) { in xfs_attr_remove()
511 xfs_trans_cancel(args.trans, in xfs_attr_remove()
527 xfs_attr_shortform_addname(xfs_da_args_t *args) in xfs_attr_shortform_addname() argument
531 trace_xfs_attr_sf_addname(args); in xfs_attr_shortform_addname()
533 retval = xfs_attr_shortform_lookup(args); in xfs_attr_shortform_addname()
534 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_shortform_addname()
537 if (args->flags & ATTR_CREATE) in xfs_attr_shortform_addname()
539 retval = xfs_attr_shortform_remove(args); in xfs_attr_shortform_addname()
543 if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX || in xfs_attr_shortform_addname()
544 args->valuelen >= XFS_ATTR_SF_ENTSIZE_MAX) in xfs_attr_shortform_addname()
547 newsize = XFS_ATTR_SF_TOTSIZE(args->dp); in xfs_attr_shortform_addname()
548 newsize += XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen); in xfs_attr_shortform_addname()
550 forkoff = xfs_attr_shortform_bytesfit(args->dp, newsize); in xfs_attr_shortform_addname()
554 xfs_attr_shortform_add(args, forkoff); in xfs_attr_shortform_addname()
570 xfs_attr_leaf_addname(xfs_da_args_t *args) in xfs_attr_leaf_addname() argument
576 trace_xfs_attr_leaf_addname(args); in xfs_attr_leaf_addname()
581 dp = args->dp; in xfs_attr_leaf_addname()
582 args->blkno = 0; in xfs_attr_leaf_addname()
583 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_addname()
591 retval = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_addname()
592 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_leaf_addname()
593 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_addname()
596 if (args->flags & ATTR_CREATE) { /* pure create op */ in xfs_attr_leaf_addname()
597 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_addname()
601 trace_xfs_attr_leaf_replace(args); in xfs_attr_leaf_addname()
604 args->op_flags |= XFS_DA_OP_RENAME; /* an atomic rename */ in xfs_attr_leaf_addname()
605 args->blkno2 = args->blkno; /* set 2nd entry info*/ in xfs_attr_leaf_addname()
606 args->index2 = args->index; in xfs_attr_leaf_addname()
607 args->rmtblkno2 = args->rmtblkno; in xfs_attr_leaf_addname()
608 args->rmtblkcnt2 = args->rmtblkcnt; in xfs_attr_leaf_addname()
609 args->rmtvaluelen2 = args->rmtvaluelen; in xfs_attr_leaf_addname()
616 args->rmtblkno = 0; in xfs_attr_leaf_addname()
617 args->rmtblkcnt = 0; in xfs_attr_leaf_addname()
618 args->rmtvaluelen = 0; in xfs_attr_leaf_addname()
625 retval = xfs_attr3_leaf_add(bp, args); in xfs_attr_leaf_addname()
632 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_addname()
633 error = xfs_attr3_leaf_to_node(args); in xfs_attr_leaf_addname()
635 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_leaf_addname()
640 args->trans = NULL; in xfs_attr_leaf_addname()
641 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_addname()
650 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_addname()
656 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
663 error = xfs_attr_node_addname(args); in xfs_attr_leaf_addname()
671 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
681 if (args->rmtblkno > 0) { in xfs_attr_leaf_addname()
682 error = xfs_attr_rmtval_set(args); in xfs_attr_leaf_addname()
693 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr_leaf_addname()
698 error = xfs_attr3_leaf_flipflags(args); in xfs_attr_leaf_addname()
706 args->index = args->index2; in xfs_attr_leaf_addname()
707 args->blkno = args->blkno2; in xfs_attr_leaf_addname()
708 args->rmtblkno = args->rmtblkno2; in xfs_attr_leaf_addname()
709 args->rmtblkcnt = args->rmtblkcnt2; in xfs_attr_leaf_addname()
710 args->rmtvaluelen = args->rmtvaluelen2; in xfs_attr_leaf_addname()
711 if (args->rmtblkno) { in xfs_attr_leaf_addname()
712 error = xfs_attr_rmtval_remove(args); in xfs_attr_leaf_addname()
721 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, in xfs_attr_leaf_addname()
726 xfs_attr3_leaf_remove(bp, args); in xfs_attr_leaf_addname()
732 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_addname()
733 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_leaf_addname()
736 error = xfs_bmap_finish(&args->trans, in xfs_attr_leaf_addname()
737 args->flist, in xfs_attr_leaf_addname()
742 args->trans = NULL; in xfs_attr_leaf_addname()
743 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_addname()
753 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_addname()
759 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
761 } else if (args->rmtblkno > 0) { in xfs_attr_leaf_addname()
765 error = xfs_attr3_leaf_clearflag(args); in xfs_attr_leaf_addname()
777 xfs_attr_leaf_removename(xfs_da_args_t *args) in xfs_attr_leaf_removename() argument
783 trace_xfs_attr_leaf_removename(args); in xfs_attr_leaf_removename()
788 dp = args->dp; in xfs_attr_leaf_removename()
789 args->blkno = 0; in xfs_attr_leaf_removename()
790 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_removename()
794 error = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_removename()
796 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_removename()
800 xfs_attr3_leaf_remove(bp, args); in xfs_attr_leaf_removename()
806 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_removename()
807 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_leaf_removename()
810 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_leaf_removename()
815 args->trans = NULL; in xfs_attr_leaf_removename()
816 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_removename()
825 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_removename()
837 xfs_attr_leaf_get(xfs_da_args_t *args) in xfs_attr_leaf_get() argument
842 trace_xfs_attr_leaf_get(args); in xfs_attr_leaf_get()
844 args->blkno = 0; in xfs_attr_leaf_get()
845 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_get()
849 error = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_get()
851 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_get()
854 error = xfs_attr3_leaf_getvalue(bp, args); in xfs_attr_leaf_get()
855 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_get()
856 if (!error && (args->rmtblkno > 0) && !(args->flags & ATTR_KERNOVAL)) { in xfs_attr_leaf_get()
857 error = xfs_attr_rmtval_get(args); in xfs_attr_leaf_get()
877 xfs_attr_node_addname(xfs_da_args_t *args) in xfs_attr_node_addname() argument
885 trace_xfs_attr_node_addname(args); in xfs_attr_node_addname()
890 dp = args->dp; in xfs_attr_node_addname()
894 state->args = args; in xfs_attr_node_addname()
906 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_node_addname()
909 if (args->flags & ATTR_CREATE) in xfs_attr_node_addname()
912 trace_xfs_attr_node_replace(args); in xfs_attr_node_addname()
915 args->op_flags |= XFS_DA_OP_RENAME; /* atomic rename op */ in xfs_attr_node_addname()
916 args->blkno2 = args->blkno; /* set 2nd entry info*/ in xfs_attr_node_addname()
917 args->index2 = args->index; in xfs_attr_node_addname()
918 args->rmtblkno2 = args->rmtblkno; in xfs_attr_node_addname()
919 args->rmtblkcnt2 = args->rmtblkcnt; in xfs_attr_node_addname()
920 args->rmtvaluelen2 = args->rmtvaluelen; in xfs_attr_node_addname()
927 args->rmtblkno = 0; in xfs_attr_node_addname()
928 args->rmtblkcnt = 0; in xfs_attr_node_addname()
929 args->rmtvaluelen = 0; in xfs_attr_node_addname()
932 retval = xfs_attr3_leaf_add(blk->bp, state->args); in xfs_attr_node_addname()
942 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
943 error = xfs_attr3_leaf_to_node(args); in xfs_attr_node_addname()
945 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_addname()
946 args->flist, in xfs_attr_node_addname()
951 args->trans = NULL; in xfs_attr_node_addname()
952 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
962 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
968 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
981 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
984 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_node_addname()
989 args->trans = NULL; in xfs_attr_node_addname()
990 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
999 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
1018 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
1028 if (args->rmtblkno > 0) { in xfs_attr_node_addname()
1029 error = xfs_attr_rmtval_set(args); in xfs_attr_node_addname()
1040 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr_node_addname()
1045 error = xfs_attr3_leaf_flipflags(args); in xfs_attr_node_addname()
1053 args->index = args->index2; in xfs_attr_node_addname()
1054 args->blkno = args->blkno2; in xfs_attr_node_addname()
1055 args->rmtblkno = args->rmtblkno2; in xfs_attr_node_addname()
1056 args->rmtblkcnt = args->rmtblkcnt2; in xfs_attr_node_addname()
1057 args->rmtvaluelen = args->rmtvaluelen2; in xfs_attr_node_addname()
1058 if (args->rmtblkno) { in xfs_attr_node_addname()
1059 error = xfs_attr_rmtval_remove(args); in xfs_attr_node_addname()
1069 args->flags |= XFS_ATTR_INCOMPLETE; in xfs_attr_node_addname()
1071 state->args = args; in xfs_attr_node_addname()
1083 error = xfs_attr3_leaf_remove(blk->bp, args); in xfs_attr_node_addname()
1090 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
1093 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_addname()
1094 args->flist, in xfs_attr_node_addname()
1099 args->trans = NULL; in xfs_attr_node_addname()
1100 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
1110 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
1116 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
1120 } else if (args->rmtblkno > 0) { in xfs_attr_node_addname()
1124 error = xfs_attr3_leaf_clearflag(args); in xfs_attr_node_addname()
1146 xfs_attr_node_removename(xfs_da_args_t *args) in xfs_attr_node_removename() argument
1154 trace_xfs_attr_node_removename(args); in xfs_attr_node_removename()
1159 dp = args->dp; in xfs_attr_node_removename()
1161 state->args = args; in xfs_attr_node_removename()
1182 if (args->rmtblkno > 0) { in xfs_attr_node_removename()
1196 error = xfs_attr3_leaf_setflag(args); in xfs_attr_node_removename()
1199 error = xfs_attr_rmtval_remove(args); in xfs_attr_node_removename()
1217 retval = xfs_attr3_leaf_remove(blk->bp, args); in xfs_attr_node_removename()
1224 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_removename()
1227 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_node_removename()
1232 args->trans = NULL; in xfs_attr_node_removename()
1233 xfs_bmap_cancel(args->flist); in xfs_attr_node_removename()
1242 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_removename()
1247 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_removename()
1263 error = xfs_attr3_leaf_read(args->trans, args->dp, 0, -1, &bp); in xfs_attr_node_removename()
1268 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_removename()
1269 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_node_removename()
1272 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_removename()
1273 args->flist, in xfs_attr_node_removename()
1278 args->trans = NULL; in xfs_attr_node_removename()
1279 xfs_bmap_cancel(args->flist); in xfs_attr_node_removename()
1289 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_removename()
1291 xfs_trans_brelse(args->trans, bp); in xfs_attr_node_removename()
1313 trace_xfs_attr_fillstate(state->args); in xfs_attr_fillstate()
1361 trace_xfs_attr_refillstate(state->args); in xfs_attr_refillstate()
1371 error = xfs_da3_node_read(state->args->trans, in xfs_attr_refillstate()
1372 state->args->dp, in xfs_attr_refillstate()
1390 error = xfs_da3_node_read(state->args->trans, in xfs_attr_refillstate()
1391 state->args->dp, in xfs_attr_refillstate()
1412 xfs_attr_node_get(xfs_da_args_t *args) in xfs_attr_node_get() argument
1419 trace_xfs_attr_node_get(args); in xfs_attr_node_get()
1422 state->args = args; in xfs_attr_node_get()
1423 state->mp = args->dp->i_mount; in xfs_attr_node_get()
1439 retval = xfs_attr3_leaf_getvalue(blk->bp, args); in xfs_attr_node_get()
1440 if (!retval && (args->rmtblkno > 0) in xfs_attr_node_get()
1441 && !(args->flags & ATTR_KERNOVAL)) { in xfs_attr_node_get()
1442 retval = xfs_attr_rmtval_get(args); in xfs_attr_node_get()
1450 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_attr_node_get()