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()
143 args.op_flags = XFS_DA_OP_OKNOENT; in xfs_attr_get()
149 error = xfs_attr_shortform_getvalue(&args); in xfs_attr_get()
151 error = xfs_attr_leaf_get(&args); in xfs_attr_get()
153 error = xfs_attr_node_get(&args); in xfs_attr_get()
156 *valuelenp = args.valuelen; in xfs_attr_get()
165 struct xfs_da_args *args, in xfs_attr_calc_size() argument
168 struct xfs_mount *mp = args->dp->i_mount; in xfs_attr_calc_size()
176 size = xfs_attr_leaf_newentsize(args, local); in xfs_attr_calc_size()
179 if (size > (args->geo->blksize / 2)) { in xfs_attr_calc_size()
188 uint dblocks = xfs_attr3_rmt_blocks(mp, args->valuelen); in xfs_attr_calc_size()
205 struct xfs_da_args args; in xfs_attr_set() local
217 error = xfs_attr_args_init(&args, dp, name, flags); in xfs_attr_set()
221 args.value = value; in xfs_attr_set()
222 args.valuelen = valuelen; in xfs_attr_set()
223 args.firstblock = &firstblock; in xfs_attr_set()
224 args.flist = &flist; in xfs_attr_set()
225 args.op_flags = XFS_DA_OP_ADDNAME | XFS_DA_OP_OKNOENT; in xfs_attr_set()
226 args.total = xfs_attr_calc_size(&args, &local); in xfs_attr_set()
238 XFS_ATTR_SF_ENTSIZE_BYNAME(args.namelen, valuelen); in xfs_attr_set()
255 args.trans = xfs_trans_alloc(mp, XFS_TRANS_ATTR_SET); in xfs_attr_set()
263 args.trans->t_flags |= XFS_TRANS_RESERVE; in xfs_attr_set()
266 M_RES(mp)->tr_attrsetrt.tr_logres * args.total; in xfs_attr_set()
269 error = xfs_trans_reserve(args.trans, &tres, args.total, 0); in xfs_attr_set()
271 xfs_trans_cancel(args.trans); in xfs_attr_set()
276 error = xfs_trans_reserve_quota_nblks(args.trans, dp, args.total, 0, in xfs_attr_set()
281 xfs_trans_cancel(args.trans); in xfs_attr_set()
285 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_set()
299 xfs_attr_shortform_create(&args); in xfs_attr_set()
305 error = xfs_attr_shortform_addname(&args); in xfs_attr_set()
311 ASSERT(args.trans != NULL); in xfs_attr_set()
319 xfs_trans_set_sync(args.trans); in xfs_attr_set()
322 xfs_trans_ichgtime(args.trans, dp, in xfs_attr_set()
325 err2 = xfs_trans_commit(args.trans); in xfs_attr_set()
335 xfs_bmap_init(args.flist, args.firstblock); in xfs_attr_set()
336 error = xfs_attr_shortform_to_leaf(&args); in xfs_attr_set()
338 error = xfs_bmap_finish(&args.trans, args.flist, in xfs_attr_set()
343 args.trans = NULL; in xfs_attr_set()
353 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_set()
360 error = xfs_trans_roll(&args.trans, dp); in xfs_attr_set()
367 error = xfs_attr_leaf_addname(&args); in xfs_attr_set()
369 error = xfs_attr_node_addname(&args); in xfs_attr_set()
378 xfs_trans_set_sync(args.trans); in xfs_attr_set()
381 xfs_trans_ichgtime(args.trans, dp, XFS_ICHGTIME_CHG); in xfs_attr_set()
386 xfs_trans_log_inode(args.trans, dp, XFS_ILOG_CORE); in xfs_attr_set()
387 error = xfs_trans_commit(args.trans); in xfs_attr_set()
393 if (args.trans) in xfs_attr_set()
394 xfs_trans_cancel(args.trans); in xfs_attr_set()
410 struct xfs_da_args args; in xfs_attr_remove() local
423 error = xfs_attr_args_init(&args, dp, name, flags); in xfs_attr_remove()
427 args.firstblock = &firstblock; in xfs_attr_remove()
428 args.flist = &flist; in xfs_attr_remove()
435 args.op_flags = XFS_DA_OP_OKNOENT; in xfs_attr_remove()
451 args.trans = xfs_trans_alloc(mp, XFS_TRANS_ATTR_RM); in xfs_attr_remove()
459 args.trans->t_flags |= XFS_TRANS_RESERVE; in xfs_attr_remove()
461 error = xfs_trans_reserve(args.trans, &M_RES(mp)->tr_attrrm, in xfs_attr_remove()
464 xfs_trans_cancel(args.trans); in xfs_attr_remove()
473 xfs_trans_ijoin(args.trans, dp, 0); in xfs_attr_remove()
479 error = xfs_attr_shortform_remove(&args); in xfs_attr_remove()
481 error = xfs_attr_leaf_removename(&args); in xfs_attr_remove()
483 error = xfs_attr_node_removename(&args); in xfs_attr_remove()
494 xfs_trans_set_sync(args.trans); in xfs_attr_remove()
497 xfs_trans_ichgtime(args.trans, dp, XFS_ICHGTIME_CHG); in xfs_attr_remove()
502 xfs_trans_log_inode(args.trans, dp, XFS_ILOG_CORE); in xfs_attr_remove()
503 error = xfs_trans_commit(args.trans); in xfs_attr_remove()
509 if (args.trans) in xfs_attr_remove()
510 xfs_trans_cancel(args.trans); in xfs_attr_remove()
524 xfs_attr_shortform_addname(xfs_da_args_t *args) in xfs_attr_shortform_addname() argument
528 trace_xfs_attr_sf_addname(args); in xfs_attr_shortform_addname()
530 retval = xfs_attr_shortform_lookup(args); in xfs_attr_shortform_addname()
531 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_shortform_addname()
534 if (args->flags & ATTR_CREATE) in xfs_attr_shortform_addname()
536 retval = xfs_attr_shortform_remove(args); in xfs_attr_shortform_addname()
540 if (args->namelen >= XFS_ATTR_SF_ENTSIZE_MAX || in xfs_attr_shortform_addname()
541 args->valuelen >= XFS_ATTR_SF_ENTSIZE_MAX) in xfs_attr_shortform_addname()
544 newsize = XFS_ATTR_SF_TOTSIZE(args->dp); in xfs_attr_shortform_addname()
545 newsize += XFS_ATTR_SF_ENTSIZE_BYNAME(args->namelen, args->valuelen); in xfs_attr_shortform_addname()
547 forkoff = xfs_attr_shortform_bytesfit(args->dp, newsize); in xfs_attr_shortform_addname()
551 xfs_attr_shortform_add(args, forkoff); in xfs_attr_shortform_addname()
567 xfs_attr_leaf_addname(xfs_da_args_t *args) in xfs_attr_leaf_addname() argument
573 trace_xfs_attr_leaf_addname(args); in xfs_attr_leaf_addname()
578 dp = args->dp; in xfs_attr_leaf_addname()
579 args->blkno = 0; in xfs_attr_leaf_addname()
580 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_addname()
588 retval = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_addname()
589 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_leaf_addname()
590 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_addname()
593 if (args->flags & ATTR_CREATE) { /* pure create op */ in xfs_attr_leaf_addname()
594 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_addname()
598 trace_xfs_attr_leaf_replace(args); in xfs_attr_leaf_addname()
601 args->op_flags |= XFS_DA_OP_RENAME; /* an atomic rename */ in xfs_attr_leaf_addname()
602 args->blkno2 = args->blkno; /* set 2nd entry info*/ in xfs_attr_leaf_addname()
603 args->index2 = args->index; in xfs_attr_leaf_addname()
604 args->rmtblkno2 = args->rmtblkno; in xfs_attr_leaf_addname()
605 args->rmtblkcnt2 = args->rmtblkcnt; in xfs_attr_leaf_addname()
606 args->rmtvaluelen2 = args->rmtvaluelen; in xfs_attr_leaf_addname()
613 args->rmtblkno = 0; in xfs_attr_leaf_addname()
614 args->rmtblkcnt = 0; in xfs_attr_leaf_addname()
615 args->rmtvaluelen = 0; in xfs_attr_leaf_addname()
622 retval = xfs_attr3_leaf_add(bp, args); in xfs_attr_leaf_addname()
629 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_addname()
630 error = xfs_attr3_leaf_to_node(args); in xfs_attr_leaf_addname()
632 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_leaf_addname()
637 args->trans = NULL; in xfs_attr_leaf_addname()
638 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_addname()
647 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_addname()
653 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
660 error = xfs_attr_node_addname(args); in xfs_attr_leaf_addname()
668 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
678 if (args->rmtblkno > 0) { in xfs_attr_leaf_addname()
679 error = xfs_attr_rmtval_set(args); in xfs_attr_leaf_addname()
690 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr_leaf_addname()
695 error = xfs_attr3_leaf_flipflags(args); in xfs_attr_leaf_addname()
703 args->index = args->index2; in xfs_attr_leaf_addname()
704 args->blkno = args->blkno2; in xfs_attr_leaf_addname()
705 args->rmtblkno = args->rmtblkno2; in xfs_attr_leaf_addname()
706 args->rmtblkcnt = args->rmtblkcnt2; in xfs_attr_leaf_addname()
707 args->rmtvaluelen = args->rmtvaluelen2; in xfs_attr_leaf_addname()
708 if (args->rmtblkno) { in xfs_attr_leaf_addname()
709 error = xfs_attr_rmtval_remove(args); in xfs_attr_leaf_addname()
718 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, in xfs_attr_leaf_addname()
723 xfs_attr3_leaf_remove(bp, args); in xfs_attr_leaf_addname()
729 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_addname()
730 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_leaf_addname()
733 error = xfs_bmap_finish(&args->trans, in xfs_attr_leaf_addname()
734 args->flist, in xfs_attr_leaf_addname()
739 args->trans = NULL; in xfs_attr_leaf_addname()
740 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_addname()
750 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_addname()
756 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_leaf_addname()
758 } else if (args->rmtblkno > 0) { in xfs_attr_leaf_addname()
762 error = xfs_attr3_leaf_clearflag(args); in xfs_attr_leaf_addname()
774 xfs_attr_leaf_removename(xfs_da_args_t *args) in xfs_attr_leaf_removename() argument
780 trace_xfs_attr_leaf_removename(args); in xfs_attr_leaf_removename()
785 dp = args->dp; in xfs_attr_leaf_removename()
786 args->blkno = 0; in xfs_attr_leaf_removename()
787 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_removename()
791 error = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_removename()
793 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_removename()
797 xfs_attr3_leaf_remove(bp, args); in xfs_attr_leaf_removename()
803 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_leaf_removename()
804 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_leaf_removename()
807 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_leaf_removename()
812 args->trans = NULL; in xfs_attr_leaf_removename()
813 xfs_bmap_cancel(args->flist); in xfs_attr_leaf_removename()
822 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_leaf_removename()
834 xfs_attr_leaf_get(xfs_da_args_t *args) in xfs_attr_leaf_get() argument
839 trace_xfs_attr_leaf_get(args); in xfs_attr_leaf_get()
841 args->blkno = 0; in xfs_attr_leaf_get()
842 error = xfs_attr3_leaf_read(args->trans, args->dp, args->blkno, -1, &bp); in xfs_attr_leaf_get()
846 error = xfs_attr3_leaf_lookup_int(bp, args); in xfs_attr_leaf_get()
848 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_get()
851 error = xfs_attr3_leaf_getvalue(bp, args); in xfs_attr_leaf_get()
852 xfs_trans_brelse(args->trans, bp); in xfs_attr_leaf_get()
853 if (!error && (args->rmtblkno > 0) && !(args->flags & ATTR_KERNOVAL)) { in xfs_attr_leaf_get()
854 error = xfs_attr_rmtval_get(args); in xfs_attr_leaf_get()
874 xfs_attr_node_addname(xfs_da_args_t *args) in xfs_attr_node_addname() argument
882 trace_xfs_attr_node_addname(args); in xfs_attr_node_addname()
887 dp = args->dp; in xfs_attr_node_addname()
891 state->args = args; in xfs_attr_node_addname()
903 if ((args->flags & ATTR_REPLACE) && (retval == -ENOATTR)) { in xfs_attr_node_addname()
906 if (args->flags & ATTR_CREATE) in xfs_attr_node_addname()
909 trace_xfs_attr_node_replace(args); in xfs_attr_node_addname()
912 args->op_flags |= XFS_DA_OP_RENAME; /* atomic rename op */ in xfs_attr_node_addname()
913 args->blkno2 = args->blkno; /* set 2nd entry info*/ in xfs_attr_node_addname()
914 args->index2 = args->index; in xfs_attr_node_addname()
915 args->rmtblkno2 = args->rmtblkno; in xfs_attr_node_addname()
916 args->rmtblkcnt2 = args->rmtblkcnt; in xfs_attr_node_addname()
917 args->rmtvaluelen2 = args->rmtvaluelen; in xfs_attr_node_addname()
924 args->rmtblkno = 0; in xfs_attr_node_addname()
925 args->rmtblkcnt = 0; in xfs_attr_node_addname()
926 args->rmtvaluelen = 0; in xfs_attr_node_addname()
929 retval = xfs_attr3_leaf_add(blk->bp, state->args); in xfs_attr_node_addname()
939 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
940 error = xfs_attr3_leaf_to_node(args); in xfs_attr_node_addname()
942 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_addname()
943 args->flist, in xfs_attr_node_addname()
948 args->trans = NULL; in xfs_attr_node_addname()
949 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
959 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
965 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
978 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
981 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_node_addname()
986 args->trans = NULL; in xfs_attr_node_addname()
987 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
996 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
1015 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
1025 if (args->rmtblkno > 0) { in xfs_attr_node_addname()
1026 error = xfs_attr_rmtval_set(args); in xfs_attr_node_addname()
1037 if (args->op_flags & XFS_DA_OP_RENAME) { in xfs_attr_node_addname()
1042 error = xfs_attr3_leaf_flipflags(args); in xfs_attr_node_addname()
1050 args->index = args->index2; in xfs_attr_node_addname()
1051 args->blkno = args->blkno2; in xfs_attr_node_addname()
1052 args->rmtblkno = args->rmtblkno2; in xfs_attr_node_addname()
1053 args->rmtblkcnt = args->rmtblkcnt2; in xfs_attr_node_addname()
1054 args->rmtvaluelen = args->rmtvaluelen2; in xfs_attr_node_addname()
1055 if (args->rmtblkno) { in xfs_attr_node_addname()
1056 error = xfs_attr_rmtval_remove(args); in xfs_attr_node_addname()
1066 args->flags |= XFS_ATTR_INCOMPLETE; in xfs_attr_node_addname()
1068 state->args = args; in xfs_attr_node_addname()
1080 error = xfs_attr3_leaf_remove(blk->bp, args); in xfs_attr_node_addname()
1087 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_addname()
1090 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_addname()
1091 args->flist, in xfs_attr_node_addname()
1096 args->trans = NULL; in xfs_attr_node_addname()
1097 xfs_bmap_cancel(args->flist); in xfs_attr_node_addname()
1107 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_addname()
1113 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_addname()
1117 } else if (args->rmtblkno > 0) { in xfs_attr_node_addname()
1121 error = xfs_attr3_leaf_clearflag(args); in xfs_attr_node_addname()
1143 xfs_attr_node_removename(xfs_da_args_t *args) in xfs_attr_node_removename() argument
1151 trace_xfs_attr_node_removename(args); in xfs_attr_node_removename()
1156 dp = args->dp; in xfs_attr_node_removename()
1158 state->args = args; in xfs_attr_node_removename()
1179 if (args->rmtblkno > 0) { in xfs_attr_node_removename()
1193 error = xfs_attr3_leaf_setflag(args); in xfs_attr_node_removename()
1196 error = xfs_attr_rmtval_remove(args); in xfs_attr_node_removename()
1214 retval = xfs_attr3_leaf_remove(blk->bp, args); in xfs_attr_node_removename()
1221 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_removename()
1224 error = xfs_bmap_finish(&args->trans, args->flist, in xfs_attr_node_removename()
1229 args->trans = NULL; in xfs_attr_node_removename()
1230 xfs_bmap_cancel(args->flist); in xfs_attr_node_removename()
1239 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_removename()
1244 error = xfs_trans_roll(&args->trans, dp); in xfs_attr_node_removename()
1260 error = xfs_attr3_leaf_read(args->trans, args->dp, 0, -1, &bp); in xfs_attr_node_removename()
1265 xfs_bmap_init(args->flist, args->firstblock); in xfs_attr_node_removename()
1266 error = xfs_attr3_leaf_to_shortform(bp, args, forkoff); in xfs_attr_node_removename()
1269 error = xfs_bmap_finish(&args->trans, in xfs_attr_node_removename()
1270 args->flist, in xfs_attr_node_removename()
1275 args->trans = NULL; in xfs_attr_node_removename()
1276 xfs_bmap_cancel(args->flist); in xfs_attr_node_removename()
1286 xfs_trans_ijoin(args->trans, dp, 0); in xfs_attr_node_removename()
1288 xfs_trans_brelse(args->trans, bp); in xfs_attr_node_removename()
1310 trace_xfs_attr_fillstate(state->args); in xfs_attr_fillstate()
1358 trace_xfs_attr_refillstate(state->args); in xfs_attr_refillstate()
1368 error = xfs_da3_node_read(state->args->trans, in xfs_attr_refillstate()
1369 state->args->dp, in xfs_attr_refillstate()
1387 error = xfs_da3_node_read(state->args->trans, in xfs_attr_refillstate()
1388 state->args->dp, in xfs_attr_refillstate()
1409 xfs_attr_node_get(xfs_da_args_t *args) in xfs_attr_node_get() argument
1416 trace_xfs_attr_node_get(args); in xfs_attr_node_get()
1419 state->args = args; in xfs_attr_node_get()
1420 state->mp = args->dp->i_mount; in xfs_attr_node_get()
1436 retval = xfs_attr3_leaf_getvalue(blk->bp, args); in xfs_attr_node_get()
1437 if (!retval && (args->rmtblkno > 0) in xfs_attr_node_get()
1438 && !(args->flags & ATTR_KERNOVAL)) { in xfs_attr_node_get()
1439 retval = xfs_attr_rmtval_get(args); in xfs_attr_node_get()
1447 xfs_trans_brelse(args->trans, state->path.blk[i].bp); in xfs_attr_node_get()