~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/fs/xfs/libxfs/xfs_attr_leaf.h

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0 */
  2 /*
  3  * Copyright (c) 2000,2002-2003,2005 Silicon Graphics, Inc.
  4  * Copyright (c) 2013 Red Hat, Inc.
  5  * All Rights Reserved.
  6  */
  7 #ifndef __XFS_ATTR_LEAF_H__
  8 #define __XFS_ATTR_LEAF_H__
  9 
 10 struct attrlist;
 11 struct xfs_attr_list_context;
 12 struct xfs_da_args;
 13 struct xfs_da_state;
 14 struct xfs_da_state_blk;
 15 struct xfs_inode;
 16 struct xfs_trans;
 17 
 18 /*
 19  * Incore version of the attribute leaf header.
 20  */
 21 struct xfs_attr3_icleaf_hdr {
 22         uint32_t        forw;
 23         uint32_t        back;
 24         uint16_t        magic;
 25         uint16_t        count;
 26         uint16_t        usedbytes;
 27         /*
 28          * Firstused is 32-bit here instead of 16-bit like the on-disk variant
 29          * to support maximum fsb size of 64k without overflow issues throughout
 30          * the attr code. Instead, the overflow condition is handled on
 31          * conversion to/from disk.
 32          */
 33         uint32_t        firstused;
 34         __u8            holes;
 35         struct {
 36                 uint16_t        base;
 37                 uint16_t        size;
 38         } freemap[XFS_ATTR_LEAF_MAPSIZE];
 39 };
 40 
 41 /*========================================================================
 42  * Function prototypes for the kernel.
 43  *========================================================================*/
 44 
 45 /*
 46  * Internal routines when attribute fork size < XFS_LITINO(mp).
 47  */
 48 void    xfs_attr_shortform_create(struct xfs_da_args *args);
 49 void    xfs_attr_shortform_add(struct xfs_da_args *args, int forkoff);
 50 int     xfs_attr_shortform_getvalue(struct xfs_da_args *args);
 51 int     xfs_attr_shortform_to_leaf(struct xfs_da_args *args);
 52 int     xfs_attr_sf_removename(struct xfs_da_args *args);
 53 struct xfs_attr_sf_entry *xfs_attr_sf_findname(struct xfs_da_args *args);
 54 int     xfs_attr_shortform_allfit(struct xfs_buf *bp, struct xfs_inode *dp);
 55 int     xfs_attr_shortform_bytesfit(struct xfs_inode *dp, int bytes);
 56 xfs_failaddr_t xfs_attr_shortform_verify(struct xfs_attr_sf_hdr *sfp,
 57                 size_t size);
 58 void    xfs_attr_fork_remove(struct xfs_inode *ip, struct xfs_trans *tp);
 59 
 60 /*
 61  * Internal routines when attribute fork size == XFS_LBSIZE(mp).
 62  */
 63 int     xfs_attr3_leaf_to_node(struct xfs_da_args *args);
 64 int     xfs_attr3_leaf_to_shortform(struct xfs_buf *bp,
 65                                    struct xfs_da_args *args, int forkoff);
 66 int     xfs_attr3_leaf_clearflag(struct xfs_da_args *args);
 67 int     xfs_attr3_leaf_setflag(struct xfs_da_args *args);
 68 int     xfs_attr3_leaf_flipflags(struct xfs_da_args *args);
 69 
 70 /*
 71  * Routines used for growing the Btree.
 72  */
 73 int     xfs_attr3_leaf_split(struct xfs_da_state *state,
 74                                    struct xfs_da_state_blk *oldblk,
 75                                    struct xfs_da_state_blk *newblk);
 76 int     xfs_attr3_leaf_lookup_int(struct xfs_buf *leaf,
 77                                         struct xfs_da_args *args);
 78 int     xfs_attr3_leaf_getvalue(struct xfs_buf *bp, struct xfs_da_args *args);
 79 int     xfs_attr3_leaf_add(struct xfs_buf *leaf_buffer,
 80                                  struct xfs_da_args *args);
 81 int     xfs_attr3_leaf_remove(struct xfs_buf *leaf_buffer,
 82                                     struct xfs_da_args *args);
 83 int     xfs_attr3_leaf_list_int(struct xfs_buf *bp,
 84                                 struct xfs_attr_list_context *context);
 85 
 86 /*
 87  * Routines used for shrinking the Btree.
 88  */
 89 int     xfs_attr3_leaf_toosmall(struct xfs_da_state *state, int *retval);
 90 void    xfs_attr3_leaf_unbalance(struct xfs_da_state *state,
 91                                        struct xfs_da_state_blk *drop_blk,
 92                                        struct xfs_da_state_blk *save_blk);
 93 /*
 94  * Utility routines.
 95  */
 96 xfs_dahash_t    xfs_attr_leaf_lasthash(struct xfs_buf *bp, int *count);
 97 int     xfs_attr_leaf_order(struct xfs_buf *leaf1_bp,
 98                                    struct xfs_buf *leaf2_bp);
 99 int     xfs_attr_leaf_newentsize(struct xfs_da_args *args, int *local);
100 int     xfs_attr3_leaf_read(struct xfs_trans *tp, struct xfs_inode *dp,
101                         xfs_ino_t owner, xfs_dablk_t bno, struct xfs_buf **bpp);
102 void    xfs_attr3_leaf_hdr_from_disk(struct xfs_da_geometry *geo,
103                                      struct xfs_attr3_icleaf_hdr *to,
104                                      struct xfs_attr_leafblock *from);
105 void    xfs_attr3_leaf_hdr_to_disk(struct xfs_da_geometry *geo,
106                                    struct xfs_attr_leafblock *to,
107                                    struct xfs_attr3_icleaf_hdr *from);
108 xfs_failaddr_t xfs_attr3_leaf_header_check(struct xfs_buf *bp,
109                 xfs_ino_t owner);
110 
111 #endif  /* __XFS_ATTR_LEAF_H__ */
112 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php