]> git.ipfire.org Git - thirdparty/xfsprogs-dev.git/commitdiff
xfs: don't log dirty ranges for ordered buffers
authorBrian Foster <bfoster@redhat.com>
Wed, 18 Oct 2017 18:38:49 +0000 (13:38 -0500)
committerEric Sandeen <sandeen@redhat.com>
Wed, 18 Oct 2017 18:38:49 +0000 (13:38 -0500)
Source kernel commit: 8dc518dfa7dbd079581269e51074b3c55a65a880

Ordered buffers are attached to transactions and pushed through the
logging infrastructure just like normal buffers with the exception
that they are not actually written to the log. Therefore, we don't
need to log dirty ranges of ordered buffers. xfs_trans_log_buf() is
called on ordered buffers to set up all of the dirty state on the
transaction, buffer and log item and prepare the buffer for I/O.

Now that xfs_trans_dirty_buf() is available, call it from
xfs_trans_ordered_buf() so the latter is now mutually exclusive with
xfs_trans_log_buf(). This reflects the implementation of ordered
buffers and helps eliminate confusion over the need to log ranges of
ordered buffers just to set up internal log state.

Signed-off-by: Brian Foster <bfoster@redhat.com>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Darrick J. Wong <darrick.wong@oracle.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: Eric Sandeen <sandeen@sandeen.net>
libxfs/xfs_btree.c
libxfs/xfs_ialloc.c

index 0ceba82a883cd6a5c6cd3607b6e80f3676550326..4f7474d250945d33f5cb493790d0e927ce2ee65d 100644 (file)
@@ -4464,12 +4464,10 @@ xfs_btree_block_change_owner(
         * though, so everything is consistent in memory.
         */
        if (bp) {
-               if (cur->bc_tp) {
+               if (cur->bc_tp)
                        xfs_trans_ordered_buf(cur->bc_tp, bp);
-                       xfs_btree_log_block(cur, bp, XFS_BB_OWNER);
-               } else {
+               else
                        xfs_buf_delwri_queue(bp, bbcoi->buffer_list);
-               }
        } else {
                ASSERT(cur->bc_flags & XFS_BTREE_ROOT_IN_INODE);
                ASSERT(level == cur->bc_nlevels - 1);
index bba292d428c913d3bc2adcc68aff72b39da3ad7c..ee3721cc03490603af2c85e191c42646e60f3aad 100644 (file)
@@ -372,8 +372,6 @@ xfs_ialloc_inode_init(
                                 * transaction and pin the log appropriately.
                                 */
                                xfs_trans_ordered_buf(tp, fbuf);
-                               xfs_trans_log_buf(tp, fbuf, 0,
-                                                 BBTOB(fbuf->b_length) - 1);
                        }
                } else {
                        fbuf->b_flags |= XBF_DONE;