Commit 2f251293 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Dave Chinner

xfs: remove the inode log format from the inode log item

No need to keep the inode log format around all the time, we can
easily generate it at iop_format time.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reviewed-by: default avatarDave Chinner <dchinner@redhat.com>
Signed-off-by: default avatarDave Chinner <david@fromorbit.com>
parent da776503
...@@ -370,17 +370,21 @@ xfs_inode_item_format( ...@@ -370,17 +370,21 @@ xfs_inode_item_format(
struct xfs_inode_log_format *ilf; struct xfs_inode_log_format *ilf;
struct xfs_log_iovec *vecp = NULL; struct xfs_log_iovec *vecp = NULL;
ilf = xlog_copy_iovec(lv, &vecp, XLOG_REG_TYPE_IFORMAT, ilf = xlog_prepare_iovec(lv, &vecp, XLOG_REG_TYPE_IFORMAT);
&iip->ili_format, ilf->ilf_type = XFS_LI_INODE;
sizeof(struct xfs_inode_log_format)); ilf->ilf_ino = ip->i_ino;
ilf->ilf_size = 1; ilf->ilf_blkno = ip->i_imap.im_blkno;
ilf->ilf_len = ip->i_imap.im_len;
ilf->ilf_boffset = ip->i_imap.im_boffset;
ilf->ilf_fields = XFS_ILOG_CORE;
ilf->ilf_size = 2; /* format + core */
xlog_finish_iovec(lv, vecp, sizeof(struct xfs_inode_log_format));
if (ip->i_d.di_version == 1) if (ip->i_d.di_version == 1)
xfs_inode_item_format_v1_inode(ip); xfs_inode_item_format_v1_inode(ip);
xlog_copy_iovec(lv, &vecp, XLOG_REG_TYPE_ICORE, xlog_copy_iovec(lv, &vecp, XLOG_REG_TYPE_ICORE,
&ip->i_d, &ip->i_d,
xfs_icdinode_size(ip->i_d.di_version)); xfs_icdinode_size(ip->i_d.di_version));
ilf->ilf_size++;
xfs_inode_item_format_data_fork(iip, ilf, lv, &vecp); xfs_inode_item_format_data_fork(iip, ilf, lv, &vecp);
if (XFS_IFORK_Q(ip)) { if (XFS_IFORK_Q(ip)) {
...@@ -390,14 +394,8 @@ xfs_inode_item_format( ...@@ -390,14 +394,8 @@ xfs_inode_item_format(
~(XFS_ILOG_ADATA | XFS_ILOG_ABROOT | XFS_ILOG_AEXT); ~(XFS_ILOG_ADATA | XFS_ILOG_ABROOT | XFS_ILOG_AEXT);
} }
/* /* update the format with the exact fields we actually logged */
* Now update the log format that goes out to disk from the in-core ilf->ilf_fields |= (iip->ili_fields & ~XFS_ILOG_TIMESTAMP);
* values. We always write the inode core to make the arithmetic
* games in recovery easier, which isn't a big deal as just about any
* transaction would dirty it anyway.
*/
iip->ili_format.ilf_fields = XFS_ILOG_CORE |
(iip->ili_fields & ~XFS_ILOG_TIMESTAMP);
} }
/* /*
...@@ -601,11 +599,6 @@ xfs_inode_item_init( ...@@ -601,11 +599,6 @@ xfs_inode_item_init(
iip->ili_inode = ip; iip->ili_inode = ip;
xfs_log_item_init(mp, &iip->ili_item, XFS_LI_INODE, xfs_log_item_init(mp, &iip->ili_item, XFS_LI_INODE,
&xfs_inode_item_ops); &xfs_inode_item_ops);
iip->ili_format.ilf_type = XFS_LI_INODE;
iip->ili_format.ilf_ino = ip->i_ino;
iip->ili_format.ilf_blkno = ip->i_imap.im_blkno;
iip->ili_format.ilf_len = ip->i_imap.im_len;
iip->ili_format.ilf_boffset = ip->i_imap.im_boffset;
} }
/* /*
......
...@@ -34,7 +34,6 @@ typedef struct xfs_inode_log_item { ...@@ -34,7 +34,6 @@ typedef struct xfs_inode_log_item {
unsigned short ili_logged; /* flushed logged data */ unsigned short ili_logged; /* flushed logged data */
unsigned int ili_last_fields; /* fields when flushed */ unsigned int ili_last_fields; /* fields when flushed */
unsigned int ili_fields; /* fields to be logged */ unsigned int ili_fields; /* fields to be logged */
xfs_inode_log_format_t ili_format; /* logged structure */
} xfs_inode_log_item_t; } xfs_inode_log_item_t;
static inline int xfs_inode_clean(xfs_inode_t *ip) static inline int xfs_inode_clean(xfs_inode_t *ip)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment