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_inode_item.h (1871B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (c) 2000,2005 Silicon Graphics, Inc.
      4 * All Rights Reserved.
      5 */
      6#ifndef	__XFS_INODE_ITEM_H__
      7#define	__XFS_INODE_ITEM_H__
      8
      9/* kernel only definitions */
     10
     11struct xfs_buf;
     12struct xfs_bmbt_rec;
     13struct xfs_inode;
     14struct xfs_mount;
     15
     16struct xfs_inode_log_item {
     17	struct xfs_log_item	ili_item;	   /* common portion */
     18	struct xfs_inode	*ili_inode;	   /* inode ptr */
     19	unsigned short		ili_lock_flags;	   /* inode lock flags */
     20	/*
     21	 * The ili_lock protects the interactions between the dirty state and
     22	 * the flush state of the inode log item. This allows us to do atomic
     23	 * modifications of multiple state fields without having to hold a
     24	 * specific inode lock to serialise them.
     25	 *
     26	 * We need atomic changes between inode dirtying, inode flushing and
     27	 * inode completion, but these all hold different combinations of
     28	 * ILOCK and IFLUSHING and hence we need some other method of
     29	 * serialising updates to the flush state.
     30	 */
     31	spinlock_t		ili_lock;	   /* flush state lock */
     32	unsigned int		ili_last_fields;   /* fields when flushed */
     33	unsigned int		ili_fields;	   /* fields to be logged */
     34	unsigned int		ili_fsync_fields;  /* logged since last fsync */
     35	xfs_lsn_t		ili_flush_lsn;	   /* lsn at last flush */
     36	xfs_csn_t		ili_commit_seq;	   /* last transaction commit */
     37};
     38
     39static inline int xfs_inode_clean(struct xfs_inode *ip)
     40{
     41	return !ip->i_itemp || !(ip->i_itemp->ili_fields & XFS_ILOG_ALL);
     42}
     43
     44extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *);
     45extern void xfs_inode_item_destroy(struct xfs_inode *);
     46extern void xfs_iflush_abort(struct xfs_inode *);
     47extern void xfs_iflush_shutdown_abort(struct xfs_inode *);
     48extern int xfs_inode_item_format_convert(xfs_log_iovec_t *,
     49					 struct xfs_inode_log_format *);
     50
     51extern struct kmem_cache	*xfs_ili_cache;
     52
     53#endif	/* __XFS_INODE_ITEM_H__ */