xfs: split in-core and on-disk inode log item fields
Add a new ili_fields member to the inode log item to isolate the in-memory flags from the ones that actually go to the log. This will allow tracking timestamp-only updates for fdatasync and O_DSYNC in the next patch and prepares for divorcing the on-disk log format from the in-memory log item a little further down the road. Reviewed-by: Dave Chinner <dchinner@redhat.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Mark Tinguely <tinguely@sgi.com> Signed-off-by: Ben Myers <bpm@sgi.com>
This commit is contained in:
committed by
Ben Myers
parent
339a5f5dd9
commit
f5d8d5c4bf
@@ -215,7 +215,7 @@ xfs_swap_extents(
|
||||
xfs_trans_t *tp;
|
||||
xfs_bstat_t *sbp = &sxp->sx_stat;
|
||||
xfs_ifork_t *tempifp, *ifp, *tifp;
|
||||
int ilf_fields, tilf_fields;
|
||||
int src_log_flags, target_log_flags;
|
||||
int error = 0;
|
||||
int aforkblks = 0;
|
||||
int taforkblks = 0;
|
||||
@@ -385,9 +385,8 @@ xfs_swap_extents(
|
||||
tip->i_delayed_blks = ip->i_delayed_blks;
|
||||
ip->i_delayed_blks = 0;
|
||||
|
||||
ilf_fields = XFS_ILOG_CORE;
|
||||
|
||||
switch(ip->i_d.di_format) {
|
||||
src_log_flags = XFS_ILOG_CORE;
|
||||
switch (ip->i_d.di_format) {
|
||||
case XFS_DINODE_FMT_EXTENTS:
|
||||
/* If the extents fit in the inode, fix the
|
||||
* pointer. Otherwise it's already NULL or
|
||||
@@ -397,16 +396,15 @@ xfs_swap_extents(
|
||||
ifp->if_u1.if_extents =
|
||||
ifp->if_u2.if_inline_ext;
|
||||
}
|
||||
ilf_fields |= XFS_ILOG_DEXT;
|
||||
src_log_flags |= XFS_ILOG_DEXT;
|
||||
break;
|
||||
case XFS_DINODE_FMT_BTREE:
|
||||
ilf_fields |= XFS_ILOG_DBROOT;
|
||||
src_log_flags |= XFS_ILOG_DBROOT;
|
||||
break;
|
||||
}
|
||||
|
||||
tilf_fields = XFS_ILOG_CORE;
|
||||
|
||||
switch(tip->i_d.di_format) {
|
||||
target_log_flags = XFS_ILOG_CORE;
|
||||
switch (tip->i_d.di_format) {
|
||||
case XFS_DINODE_FMT_EXTENTS:
|
||||
/* If the extents fit in the inode, fix the
|
||||
* pointer. Otherwise it's already NULL or
|
||||
@@ -416,10 +414,10 @@ xfs_swap_extents(
|
||||
tifp->if_u1.if_extents =
|
||||
tifp->if_u2.if_inline_ext;
|
||||
}
|
||||
tilf_fields |= XFS_ILOG_DEXT;
|
||||
target_log_flags |= XFS_ILOG_DEXT;
|
||||
break;
|
||||
case XFS_DINODE_FMT_BTREE:
|
||||
tilf_fields |= XFS_ILOG_DBROOT;
|
||||
target_log_flags |= XFS_ILOG_DBROOT;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -427,8 +425,8 @@ xfs_swap_extents(
|
||||
xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
||||
xfs_trans_ijoin(tp, tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL);
|
||||
|
||||
xfs_trans_log_inode(tp, ip, ilf_fields);
|
||||
xfs_trans_log_inode(tp, tip, tilf_fields);
|
||||
xfs_trans_log_inode(tp, ip, src_log_flags);
|
||||
xfs_trans_log_inode(tp, tip, target_log_flags);
|
||||
|
||||
/*
|
||||
* If this is a synchronous mount, make sure that the
|
||||
|
Reference in New Issue
Block a user