diff options
author | Christoph Hellwig <hch@infradead.org> | 2012-02-29 04:53:54 -0500 |
---|---|---|
committer | Ben Myers <bpm@sgi.com> | 2012-03-13 18:08:17 -0400 |
commit | f5d8d5c4bf29c9f7754d9cbe5e27c785106ba872 (patch) | |
tree | edb30eef42b3a26e5e9c33448e85a812971cbc30 /fs/xfs/xfs_dfrag.c | |
parent | 339a5f5dd9d3ac3d68a594d81507e1eab77ed223 (diff) |
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>
Diffstat (limited to 'fs/xfs/xfs_dfrag.c')
-rw-r--r-- | fs/xfs/xfs_dfrag.c | 24 |
1 files changed, 11 insertions, 13 deletions
diff --git a/fs/xfs/xfs_dfrag.c b/fs/xfs/xfs_dfrag.c index dd974a55c77d..1137bbc5eccb 100644 --- a/fs/xfs/xfs_dfrag.c +++ b/fs/xfs/xfs_dfrag.c | |||
@@ -215,7 +215,7 @@ xfs_swap_extents( | |||
215 | xfs_trans_t *tp; | 215 | xfs_trans_t *tp; |
216 | xfs_bstat_t *sbp = &sxp->sx_stat; | 216 | xfs_bstat_t *sbp = &sxp->sx_stat; |
217 | xfs_ifork_t *tempifp, *ifp, *tifp; | 217 | xfs_ifork_t *tempifp, *ifp, *tifp; |
218 | int ilf_fields, tilf_fields; | 218 | int src_log_flags, target_log_flags; |
219 | int error = 0; | 219 | int error = 0; |
220 | int aforkblks = 0; | 220 | int aforkblks = 0; |
221 | int taforkblks = 0; | 221 | int taforkblks = 0; |
@@ -385,9 +385,8 @@ xfs_swap_extents( | |||
385 | tip->i_delayed_blks = ip->i_delayed_blks; | 385 | tip->i_delayed_blks = ip->i_delayed_blks; |
386 | ip->i_delayed_blks = 0; | 386 | ip->i_delayed_blks = 0; |
387 | 387 | ||
388 | ilf_fields = XFS_ILOG_CORE; | 388 | src_log_flags = XFS_ILOG_CORE; |
389 | 389 | switch (ip->i_d.di_format) { | |
390 | switch(ip->i_d.di_format) { | ||
391 | case XFS_DINODE_FMT_EXTENTS: | 390 | case XFS_DINODE_FMT_EXTENTS: |
392 | /* If the extents fit in the inode, fix the | 391 | /* If the extents fit in the inode, fix the |
393 | * pointer. Otherwise it's already NULL or | 392 | * pointer. Otherwise it's already NULL or |
@@ -397,16 +396,15 @@ xfs_swap_extents( | |||
397 | ifp->if_u1.if_extents = | 396 | ifp->if_u1.if_extents = |
398 | ifp->if_u2.if_inline_ext; | 397 | ifp->if_u2.if_inline_ext; |
399 | } | 398 | } |
400 | ilf_fields |= XFS_ILOG_DEXT; | 399 | src_log_flags |= XFS_ILOG_DEXT; |
401 | break; | 400 | break; |
402 | case XFS_DINODE_FMT_BTREE: | 401 | case XFS_DINODE_FMT_BTREE: |
403 | ilf_fields |= XFS_ILOG_DBROOT; | 402 | src_log_flags |= XFS_ILOG_DBROOT; |
404 | break; | 403 | break; |
405 | } | 404 | } |
406 | 405 | ||
407 | tilf_fields = XFS_ILOG_CORE; | 406 | target_log_flags = XFS_ILOG_CORE; |
408 | 407 | switch (tip->i_d.di_format) { | |
409 | switch(tip->i_d.di_format) { | ||
410 | case XFS_DINODE_FMT_EXTENTS: | 408 | case XFS_DINODE_FMT_EXTENTS: |
411 | /* If the extents fit in the inode, fix the | 409 | /* If the extents fit in the inode, fix the |
412 | * pointer. Otherwise it's already NULL or | 410 | * pointer. Otherwise it's already NULL or |
@@ -416,10 +414,10 @@ xfs_swap_extents( | |||
416 | tifp->if_u1.if_extents = | 414 | tifp->if_u1.if_extents = |
417 | tifp->if_u2.if_inline_ext; | 415 | tifp->if_u2.if_inline_ext; |
418 | } | 416 | } |
419 | tilf_fields |= XFS_ILOG_DEXT; | 417 | target_log_flags |= XFS_ILOG_DEXT; |
420 | break; | 418 | break; |
421 | case XFS_DINODE_FMT_BTREE: | 419 | case XFS_DINODE_FMT_BTREE: |
422 | tilf_fields |= XFS_ILOG_DBROOT; | 420 | target_log_flags |= XFS_ILOG_DBROOT; |
423 | break; | 421 | break; |
424 | } | 422 | } |
425 | 423 | ||
@@ -427,8 +425,8 @@ xfs_swap_extents( | |||
427 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | 425 | xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); |
428 | xfs_trans_ijoin(tp, tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); | 426 | xfs_trans_ijoin(tp, tip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); |
429 | 427 | ||
430 | xfs_trans_log_inode(tp, ip, ilf_fields); | 428 | xfs_trans_log_inode(tp, ip, src_log_flags); |
431 | xfs_trans_log_inode(tp, tip, tilf_fields); | 429 | xfs_trans_log_inode(tp, tip, target_log_flags); |
432 | 430 | ||
433 | /* | 431 | /* |
434 | * If this is a synchronous mount, make sure that the | 432 | * If this is a synchronous mount, make sure that the |