cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

xfs_attr_leaf.h (3879B)


      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
     10struct attrlist;
     11struct xfs_attr_list_context;
     12struct xfs_da_args;
     13struct xfs_da_state;
     14struct xfs_da_state_blk;
     15struct xfs_inode;
     16struct xfs_trans;
     17
     18/*
     19 * Incore version of the attribute leaf header.
     20 */
     21struct 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 */
     48void	xfs_attr_shortform_create(struct xfs_da_args *args);
     49void	xfs_attr_shortform_add(struct xfs_da_args *args, int forkoff);
     50int	xfs_attr_shortform_lookup(struct xfs_da_args *args);
     51int	xfs_attr_shortform_getvalue(struct xfs_da_args *args);
     52int	xfs_attr_shortform_to_leaf(struct xfs_da_args *args);
     53int	xfs_attr_sf_removename(struct xfs_da_args *args);
     54int	xfs_attr_sf_findname(struct xfs_da_args *args,
     55			     struct xfs_attr_sf_entry **sfep,
     56			     unsigned int *basep);
     57int	xfs_attr_shortform_allfit(struct xfs_buf *bp, struct xfs_inode *dp);
     58int	xfs_attr_shortform_bytesfit(struct xfs_inode *dp, int bytes);
     59xfs_failaddr_t xfs_attr_shortform_verify(struct xfs_inode *ip);
     60void	xfs_attr_fork_remove(struct xfs_inode *ip, struct xfs_trans *tp);
     61
     62/*
     63 * Internal routines when attribute fork size == XFS_LBSIZE(mp).
     64 */
     65int	xfs_attr3_leaf_to_node(struct xfs_da_args *args);
     66int	xfs_attr3_leaf_to_shortform(struct xfs_buf *bp,
     67				   struct xfs_da_args *args, int forkoff);
     68int	xfs_attr3_leaf_clearflag(struct xfs_da_args *args);
     69int	xfs_attr3_leaf_setflag(struct xfs_da_args *args);
     70int	xfs_attr3_leaf_flipflags(struct xfs_da_args *args);
     71
     72/*
     73 * Routines used for growing the Btree.
     74 */
     75int	xfs_attr3_leaf_split(struct xfs_da_state *state,
     76				   struct xfs_da_state_blk *oldblk,
     77				   struct xfs_da_state_blk *newblk);
     78int	xfs_attr3_leaf_lookup_int(struct xfs_buf *leaf,
     79					struct xfs_da_args *args);
     80int	xfs_attr3_leaf_getvalue(struct xfs_buf *bp, struct xfs_da_args *args);
     81int	xfs_attr3_leaf_add(struct xfs_buf *leaf_buffer,
     82				 struct xfs_da_args *args);
     83int	xfs_attr3_leaf_remove(struct xfs_buf *leaf_buffer,
     84				    struct xfs_da_args *args);
     85int	xfs_attr3_leaf_list_int(struct xfs_buf *bp,
     86				struct xfs_attr_list_context *context);
     87
     88/*
     89 * Routines used for shrinking the Btree.
     90 */
     91int	xfs_attr3_leaf_toosmall(struct xfs_da_state *state, int *retval);
     92void	xfs_attr3_leaf_unbalance(struct xfs_da_state *state,
     93				       struct xfs_da_state_blk *drop_blk,
     94				       struct xfs_da_state_blk *save_blk);
     95/*
     96 * Utility routines.
     97 */
     98xfs_dahash_t	xfs_attr_leaf_lasthash(struct xfs_buf *bp, int *count);
     99int	xfs_attr_leaf_order(struct xfs_buf *leaf1_bp,
    100				   struct xfs_buf *leaf2_bp);
    101int	xfs_attr_leaf_newentsize(struct xfs_da_args *args, int *local);
    102int	xfs_attr3_leaf_read(struct xfs_trans *tp, struct xfs_inode *dp,
    103			xfs_dablk_t bno, struct xfs_buf **bpp);
    104void	xfs_attr3_leaf_hdr_from_disk(struct xfs_da_geometry *geo,
    105				     struct xfs_attr3_icleaf_hdr *to,
    106				     struct xfs_attr_leafblock *from);
    107void	xfs_attr3_leaf_hdr_to_disk(struct xfs_da_geometry *geo,
    108				   struct xfs_attr_leafblock *to,
    109				   struct xfs_attr3_icleaf_hdr *from);
    110
    111#endif	/* __XFS_ATTR_LEAF_H__ */