LCOV - code coverage report
Current view: top level - fs/xfs - xfs_inode_item.h (source / functions) Hit Total Coverage
Test: fstests of 6.5.0-rc4-xfsa @ Mon Jul 31 20:08:27 PDT 2023 Lines: 1 1 100.0 %
Date: 2023-07-31 20:08:27 Functions: 0 0 -

          Line data    Source code
       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             : 
      11             : struct xfs_buf;
      12             : struct xfs_bmbt_rec;
      13             : struct xfs_inode;
      14             : struct xfs_mount;
      15             : 
      16             : struct 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             :         unsigned int            ili_dirty_flags;   /* dirty in current tx */
      21             :         /*
      22             :          * The ili_lock protects the interactions between the dirty state and
      23             :          * the flush state of the inode log item. This allows us to do atomic
      24             :          * modifications of multiple state fields without having to hold a
      25             :          * specific inode lock to serialise them.
      26             :          *
      27             :          * We need atomic changes between inode dirtying, inode flushing and
      28             :          * inode completion, but these all hold different combinations of
      29             :          * ILOCK and IFLUSHING and hence we need some other method of
      30             :          * serialising updates to the flush state.
      31             :          */
      32             :         spinlock_t              ili_lock;          /* flush state lock */
      33             :         unsigned int            ili_last_fields;   /* fields when flushed */
      34             :         unsigned int            ili_fields;        /* fields to be logged */
      35             :         unsigned int            ili_fsync_fields;  /* logged since last fsync */
      36             :         xfs_lsn_t               ili_flush_lsn;     /* lsn at last flush */
      37             :         xfs_csn_t               ili_commit_seq;    /* last transaction commit */
      38             : };
      39             : 
      40             : static inline int xfs_inode_clean(struct xfs_inode *ip)
      41             : {
      42  1004164697 :         return !ip->i_itemp || !(ip->i_itemp->ili_fields & XFS_ILOG_ALL);
      43             : }
      44             : 
      45             : extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *);
      46             : extern void xfs_inode_item_destroy(struct xfs_inode *);
      47             : extern void xfs_iflush_abort(struct xfs_inode *);
      48             : extern void xfs_iflush_shutdown_abort(struct xfs_inode *);
      49             : extern int xfs_inode_item_format_convert(xfs_log_iovec_t *,
      50             :                                          struct xfs_inode_log_format *);
      51             : 
      52             : extern struct kmem_cache        *xfs_ili_cache;
      53             : 
      54             : #endif  /* __XFS_INODE_ITEM_H__ */

Generated by: LCOV version 1.14