Btrfs: remove csum_bytes_left
authorLiu Bo <bo.li.liu@oracle.com>
Mon, 25 May 2015 03:20:22 +0000 (11:20 +0800)
committerChris Mason <clm@fb.com>
Wed, 3 Jun 2015 11:03:06 +0000 (04:03 -0700)
After commit 8407f553268a
("Btrfs: fix data corruption after fast fsync and writeback error"),
during wait_ordered_extents(), we wait for ordered extent setting
BTRFS_ORDERED_IO_DONE or BTRFS_ORDERED_IOERR, at which point we've
already got checksum information, so we don't need to check
(csum_bytes_left == 0) in the whole logging path.

Signed-off-by: Liu Bo <bo.li.liu@oracle.com>
Signed-off-by: Chris Mason <clm@fb.com>
fs/btrfs/ordered-data.c
fs/btrfs/ordered-data.h
fs/btrfs/tree-log.c

index 760c4a5e096b4d5a403f7923ad4b65537a085886..47966cb3d4b6272be7f961c264452b0bf9dc2cf2 100644 (file)
@@ -198,9 +198,6 @@ static int __btrfs_add_ordered_extent(struct inode *inode, u64 file_offset,
        entry->file_offset = file_offset;
        entry->start = start;
        entry->len = len;
-       if (!(BTRFS_I(inode)->flags & BTRFS_INODE_NODATASUM) &&
-           !(type == BTRFS_ORDERED_NOCOW))
-               entry->csum_bytes_left = disk_len;
        entry->disk_len = disk_len;
        entry->bytes_left = len;
        entry->inode = igrab(inode);
@@ -286,10 +283,6 @@ void btrfs_add_ordered_sum(struct inode *inode,
        tree = &BTRFS_I(inode)->ordered_tree;
        spin_lock_irq(&tree->lock);
        list_add_tail(&sum->list, &entry->list);
-       WARN_ON(entry->csum_bytes_left < sum->len);
-       entry->csum_bytes_left -= sum->len;
-       if (entry->csum_bytes_left == 0)
-               wake_up(&entry->wait);
        spin_unlock_irq(&tree->lock);
 }
 
index e96cd4ccd805d9220b997518e7b7e9d85ef890d4..a82cd7535d3cf3966ad507d79528af06ba116949 100644 (file)
@@ -89,9 +89,6 @@ struct btrfs_ordered_extent {
        /* number of bytes that still need writing */
        u64 bytes_left;
 
-       /* number of bytes that still need csumming */
-       u64 csum_bytes_left;
-
        /*
         * the end of the ordered extent which is behind it but
         * didn't update disk_i_size. Please see the comment of
index d04968374e9d8bd5b118024d53ea0a5bfa6d0bd2..1ce80c1c4eb6c1a414cfe88009c5c1c0e5c14132 100644 (file)
@@ -3881,12 +3881,6 @@ static int wait_ordered_extents(struct btrfs_trans_handle *trans,
                                     &ordered->flags))
                        continue;
 
-               if (ordered->csum_bytes_left) {
-                       btrfs_start_ordered_extent(inode, ordered, 0);
-                       wait_event(ordered->wait,
-                                  ordered->csum_bytes_left == 0);
-               }
-
                list_for_each_entry(sum, &ordered->list, list) {
                        ret = btrfs_csum_file_blocks(trans, log, sum);
                        if (ret)