diff options
Diffstat (limited to 'fs/xfs/xfs_inode_item.h')
-rw-r--r-- | fs/xfs/xfs_inode_item.h | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/fs/xfs/xfs_inode_item.h b/fs/xfs/xfs_inode_item.h index d3dee61e6d91..41d61c3b7a36 100644 --- a/fs/xfs/xfs_inode_item.h +++ b/fs/xfs/xfs_inode_item.h | |||
@@ -86,6 +86,15 @@ typedef struct xfs_inode_log_format_64 { | |||
86 | #define XFS_ILOG_AEXT 0x080 /* log i_af.if_extents */ | 86 | #define XFS_ILOG_AEXT 0x080 /* log i_af.if_extents */ |
87 | #define XFS_ILOG_ABROOT 0x100 /* log i_af.i_broot */ | 87 | #define XFS_ILOG_ABROOT 0x100 /* log i_af.i_broot */ |
88 | 88 | ||
89 | |||
90 | /* | ||
91 | * The timestamps are dirty, but not necessarily anything else in the inode | ||
92 | * core. Unlike the other fields above this one must never make it to disk | ||
93 | * in the ilf_fields of the inode_log_format, but is purely store in-memory in | ||
94 | * ili_fields in the inode_log_item. | ||
95 | */ | ||
96 | #define XFS_ILOG_TIMESTAMP 0x4000 | ||
97 | |||
89 | #define XFS_ILOG_NONCORE (XFS_ILOG_DDATA | XFS_ILOG_DEXT | \ | 98 | #define XFS_ILOG_NONCORE (XFS_ILOG_DDATA | XFS_ILOG_DEXT | \ |
90 | XFS_ILOG_DBROOT | XFS_ILOG_DEV | \ | 99 | XFS_ILOG_DBROOT | XFS_ILOG_DEV | \ |
91 | XFS_ILOG_UUID | XFS_ILOG_ADATA | \ | 100 | XFS_ILOG_UUID | XFS_ILOG_ADATA | \ |
@@ -101,7 +110,7 @@ typedef struct xfs_inode_log_format_64 { | |||
101 | XFS_ILOG_DEXT | XFS_ILOG_DBROOT | \ | 110 | XFS_ILOG_DEXT | XFS_ILOG_DBROOT | \ |
102 | XFS_ILOG_DEV | XFS_ILOG_UUID | \ | 111 | XFS_ILOG_DEV | XFS_ILOG_UUID | \ |
103 | XFS_ILOG_ADATA | XFS_ILOG_AEXT | \ | 112 | XFS_ILOG_ADATA | XFS_ILOG_AEXT | \ |
104 | XFS_ILOG_ABROOT) | 113 | XFS_ILOG_ABROOT | XFS_ILOG_TIMESTAMP) |
105 | 114 | ||
106 | static inline int xfs_ilog_fbroot(int w) | 115 | static inline int xfs_ilog_fbroot(int w) |
107 | { | 116 | { |
@@ -134,6 +143,7 @@ typedef struct xfs_inode_log_item { | |||
134 | unsigned short ili_lock_flags; /* lock flags */ | 143 | unsigned short ili_lock_flags; /* lock flags */ |
135 | unsigned short ili_logged; /* flushed logged data */ | 144 | unsigned short ili_logged; /* flushed logged data */ |
136 | unsigned int ili_last_fields; /* fields when flushed */ | 145 | unsigned int ili_last_fields; /* fields when flushed */ |
146 | unsigned int ili_fields; /* fields to be logged */ | ||
137 | struct xfs_bmbt_rec *ili_extents_buf; /* array of logged | 147 | struct xfs_bmbt_rec *ili_extents_buf; /* array of logged |
138 | data exts */ | 148 | data exts */ |
139 | struct xfs_bmbt_rec *ili_aextents_buf; /* array of logged | 149 | struct xfs_bmbt_rec *ili_aextents_buf; /* array of logged |
@@ -148,9 +158,7 @@ typedef struct xfs_inode_log_item { | |||
148 | 158 | ||
149 | static inline int xfs_inode_clean(xfs_inode_t *ip) | 159 | static inline int xfs_inode_clean(xfs_inode_t *ip) |
150 | { | 160 | { |
151 | return (!ip->i_itemp || | 161 | return !ip->i_itemp || !(ip->i_itemp->ili_fields & XFS_ILOG_ALL); |
152 | !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL)) && | ||
153 | !ip->i_update_core; | ||
154 | } | 162 | } |
155 | 163 | ||
156 | extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *); | 164 | extern void xfs_inode_item_init(struct xfs_inode *, struct xfs_mount *); |