Lines Matching +full:flip +full:- +full:y
1 /* SPDX-License-Identifier: GPL-2.0 */
3 * Copyright (c) 2000,2002-2003,2005 Silicon Graphics, Inc.
32 * Kernel-internal version of the attrlist cursor.
37 __u32 offset; /* offset in list of equal-hashvals */
38 __u16 pad1; /* padding to match user-level */
39 __u8 pad2; /* padding to match user-level */
61 * Abort attribute list iteration if non-zero. Can be used to pass
86 * states indicate places where the function would return -EAGAIN, and then
98 * y
101 * are we short form? ──y──> xfs_attr_shortform_remove ──> done
106 * are we leaf form? ──y──> xfs_attr_leaf_removename ──> done
113 * n y
120 * │ y the remote blocks.
126 * Have remote blks to remove? ───y─────┐
131 * │ re-enter with │
132 * │ one less blk to y
151 * y │
180 * to propagate the -EAGAIN back up the call stack. Upon reentry, it is
181 * committed to re-calling that subroutine until it returns something other than
182 * -EAGAIN. Once that subroutine signals completion (by returning anything other
183 * than -EAGAIN), the calling function can resume using the state machine.
188 * ┌─y─ has an attr fork?
200 * │ y
209 * │ had enough ──y──> done
221 * │ return -EAGAIN
222 * │ Re-enter in
232 * │ y
238 * │ had enough ──────────────y─────────────┐
244 * │ return -EAGAIN │
245 * │ re-enter in │
264 * y │ y n │
268 * hashvals └── return -EAGAIN needed │
275 * ┌─y── or flip flag? │
291 * │ │ y
303 * │ │ y │
307 * │ │ return -EAGAIN ──┘
308 * │ │ re-enter with one
319 * │ y │
322 * │ flip incomplete │
332 * │ y │
341 * │ └──y── more to │
365 * │ y
377 * │ └──y── need to alloc
389 * y │
392 * flip incomplete │
402 * y │
411 * └──────y── more to │
432 * they were before they returned -EAGAIN. A return code of -EAGAIN signals the
523 * Attr operation being performed - XFS_ATTRI_OP_FLAGS_*
536 return attr->xattri_op_flags & XFS_ATTRI_OP_FLAGS_TYPE_MASK; in xfs_attr_intent_op()
571 * Check to see if the attr should be upgraded from non-existent or shortform to
572 * single-leaf-block attribute list.
578 return ip->i_af.if_format == XFS_DINODE_FMT_LOCAL || in xfs_attr_is_shortform()
579 (ip->i_af.if_format == XFS_DINODE_FMT_EXTENTS && in xfs_attr_is_shortform()
580 ip->i_af.if_nextents == 0); in xfs_attr_is_shortform()
594 if (!xfs_inode_has_attr_fork(args->dp)) in xfs_attr_init_add_state()
597 args->op_flags |= XFS_DA_OP_ADDNAME; in xfs_attr_init_add_state()
598 if (xfs_attr_is_shortform(args->dp)) in xfs_attr_init_add_state()
600 if (xfs_attr_is_leaf(args->dp)) in xfs_attr_init_add_state()
608 if (xfs_attr_is_shortform(args->dp)) in xfs_attr_init_remove_state()
610 if (xfs_attr_is_leaf(args->dp)) in xfs_attr_init_remove_state()
625 args->op_flags |= XFS_DA_OP_ADDNAME | XFS_DA_OP_REPLACE; in xfs_attr_init_replace_state()
626 if (args->op_flags & XFS_DA_OP_LOGGED) in xfs_attr_init_replace_state()
640 args->hashval = xfs_attr_hashval(args->dp->i_mount, args->attr_filter, in xfs_attr_sethash()
641 args->name, args->namelen, in xfs_attr_sethash()
642 args->value, args->valuelen); in xfs_attr_sethash()