root/fs/xfs/xfs_buf_item.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 // SPDX-License-Identifier: GPL-2.0
   2 /*
   3  * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
   4  * All Rights Reserved.
   5  */
   6 #ifndef __XFS_BUF_ITEM_H__
   7 #define __XFS_BUF_ITEM_H__
   8 
   9 /* kernel only definitions */
  10 
  11 /* buf log item flags */
  12 #define XFS_BLI_HOLD            0x01
  13 #define XFS_BLI_DIRTY           0x02
  14 #define XFS_BLI_STALE           0x04
  15 #define XFS_BLI_LOGGED          0x08
  16 #define XFS_BLI_INODE_ALLOC_BUF 0x10
  17 #define XFS_BLI_STALE_INODE     0x20
  18 #define XFS_BLI_INODE_BUF       0x40
  19 #define XFS_BLI_ORDERED         0x80
  20 
  21 #define XFS_BLI_FLAGS \
  22         { XFS_BLI_HOLD,         "HOLD" }, \
  23         { XFS_BLI_DIRTY,        "DIRTY" }, \
  24         { XFS_BLI_STALE,        "STALE" }, \
  25         { XFS_BLI_LOGGED,       "LOGGED" }, \
  26         { XFS_BLI_INODE_ALLOC_BUF, "INODE_ALLOC" }, \
  27         { XFS_BLI_STALE_INODE,  "STALE_INODE" }, \
  28         { XFS_BLI_INODE_BUF,    "INODE_BUF" }, \
  29         { XFS_BLI_ORDERED,      "ORDERED" }
  30 
  31 
  32 struct xfs_buf;
  33 struct xfs_mount;
  34 struct xfs_buf_log_item;
  35 
  36 /*
  37  * This is the in core log item structure used to track information
  38  * needed to log buffers.  It tracks how many times the lock has been
  39  * locked, and which 128 byte chunks of the buffer are dirty.
  40  */
  41 struct xfs_buf_log_item {
  42         struct xfs_log_item     bli_item;       /* common item structure */
  43         struct xfs_buf          *bli_buf;       /* real buffer pointer */
  44         unsigned int            bli_flags;      /* misc flags */
  45         unsigned int            bli_recur;      /* lock recursion count */
  46         atomic_t                bli_refcount;   /* cnt of tp refs */
  47         int                     bli_format_count;       /* count of headers */
  48         struct xfs_buf_log_format *bli_formats; /* array of in-log header ptrs */
  49         struct xfs_buf_log_format __bli_format; /* embedded in-log header */
  50 };
  51 
  52 int     xfs_buf_item_init(struct xfs_buf *, struct xfs_mount *);
  53 void    xfs_buf_item_relse(struct xfs_buf *);
  54 bool    xfs_buf_item_put(struct xfs_buf_log_item *);
  55 void    xfs_buf_item_log(struct xfs_buf_log_item *, uint, uint);
  56 bool    xfs_buf_item_dirty_format(struct xfs_buf_log_item *);
  57 void    xfs_buf_attach_iodone(struct xfs_buf *,
  58                               void(*)(struct xfs_buf *, struct xfs_log_item *),
  59                               struct xfs_log_item *);
  60 void    xfs_buf_iodone_callbacks(struct xfs_buf *);
  61 void    xfs_buf_iodone(struct xfs_buf *, struct xfs_log_item *);
  62 bool    xfs_buf_resubmit_failed_buffers(struct xfs_buf *,
  63                                         struct list_head *);
  64 
  65 extern kmem_zone_t      *xfs_buf_item_zone;
  66 
  67 #endif  /* __XFS_BUF_ITEM_H__ */

/* [<][>][^][v][top][bottom][index][help] */