History

Merge branch 'for-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux

Pull btrfs fixes from Chris Mason: "Some fixes that Dave Sterba collected. We held off on these last week because I was focused on the memory corruption testing" * 'for-4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: btrfs: fix WARNING in btrfs_select_ref_head() Btrfs: remove some no-op casts btrfs: pass correct args to btrfs_async_run_delayed_refs() btrfs: make file clone aware of fatal signals btrfs: qgroup: Prevent qgroup->reserved from going subzero Btrfs: kill BUG_ON in do_relocation

Linus Torvalds committed 10 years ago

Commit 46d7cbb2 parents bd30fac 9d1032c5 files · +29 −9Browse files

Unified · Split

5 files
  1. fs/btrfs/extent-tree.c +3 −0
  2. fs/btrfs/extent_io.c +4 −4
  3. fs/btrfs/inode.c +9 −4
  4. fs/btrfs/ioctl.c +5 −0
  5. fs/btrfs/relocation.c +8 −1
fs/btrfs/extent-tree.c+3−0
@@ -2647,7 +2647,10 @@ static noinline int __btrfs_run_delayed_refs(struct btrfs_trans_handle *trans, · 2646 unmodified lines
2647 2647
2648 btrfs_free_delayed_extent_op(extent_op);2648 btrfs_free_delayed_extent_op(extent_op);
2649 if (ret) {2649 if (ret) {
2650 spin_lock(&delayed_refs->lock);
2650 locked_ref->processing = 0;2651 locked_ref->processing = 0;
2652 delayed_refs->num_heads_ready++;
2653 spin_unlock(&delayed_refs->lock);
2651 btrfs_delayed_ref_unlock(locked_ref);2654 btrfs_delayed_ref_unlock(locked_ref);
2652 btrfs_put_delayed_ref(ref);2655 btrfs_put_delayed_ref(ref);
2653 btrfs_debug(fs_info, "run_one_delayed_ref returned %d",2656 btrfs_debug(fs_info, "run_one_delayed_ref returned %d",
fs/btrfs/extent_io.c+4−4
@@ -5569,7 +5569,7 @@ void le_bitmap_set(u8 *map, unsigned int start, int len) · 5568 unmodified lines
5569 *p |= mask_to_set;5569 *p |= mask_to_set;
5570 len -= bits_to_set;5570 len -= bits_to_set;
5571 bits_to_set = BITS_PER_BYTE;5571 bits_to_set = BITS_PER_BYTE;
5572 mask_to_set = ~(u8)0;5572 mask_to_set = ~0;
5573 p++;5573 p++;
5574 }5574 }
5575 if (len) {5575 if (len) {
@@ -5589,7 +5589,7 @@ void le_bitmap_clear(u8 *map, unsigned int start, int len) · 13 unmodified lines
5589 *p &= ~mask_to_clear;5589 *p &= ~mask_to_clear;
5590 len -= bits_to_clear;5590 len -= bits_to_clear;
5591 bits_to_clear = BITS_PER_BYTE;5591 bits_to_clear = BITS_PER_BYTE;
5592 mask_to_clear = ~(u8)0;5592 mask_to_clear = ~0;
5593 p++;5593 p++;
5594 }5594 }
5595 if (len) {5595 if (len) {
@@ -5679,7 +5679,7 @@ void extent_buffer_bitmap_set(struct extent_buffer *eb, unsigned long start, · 83 unmodified lines
5679 kaddr[offset] |= mask_to_set;5679 kaddr[offset] |= mask_to_set;
5680 len -= bits_to_set;5680 len -= bits_to_set;
5681 bits_to_set = BITS_PER_BYTE;5681 bits_to_set = BITS_PER_BYTE;
5682 mask_to_set = ~(u8)0;5682 mask_to_set = ~0;
5683 if (++offset >= PAGE_SIZE && len > 0) {5683 if (++offset >= PAGE_SIZE && len > 0) {
5684 offset = 0;5684 offset = 0;
5685 page = eb->pages[++i];5685 page = eb->pages[++i];
@@ -5721,7 +5721,7 @@ void extent_buffer_bitmap_clear(struct extent_buffer *eb, unsigned long start, · 35 unmodified lines
5721 kaddr[offset] &= ~mask_to_clear;5721 kaddr[offset] &= ~mask_to_clear;
5722 len -= bits_to_clear;5722 len -= bits_to_clear;
5723 bits_to_clear = BITS_PER_BYTE;5723 bits_to_clear = BITS_PER_BYTE;
5724 mask_to_clear = ~(u8)0;5724 mask_to_clear = ~0;
5725 if (++offset >= PAGE_SIZE && len > 0) {5725 if (++offset >= PAGE_SIZE && len > 0) {
5726 offset = 0;5726 offset = 0;
5727 page = eb->pages[++i];5727 page = eb->pages[++i];
fs/btrfs/inode.c+9−4
@@ -4605,8 +4605,8 @@ delete: · 4604 unmodified lines
4605 BUG_ON(ret);4605 BUG_ON(ret);
4606 if (btrfs_should_throttle_delayed_refs(trans, root))4606 if (btrfs_should_throttle_delayed_refs(trans, root))
4607 btrfs_async_run_delayed_refs(root,4607 btrfs_async_run_delayed_refs(root,
4608 trans->transid,4608 trans->delayed_ref_updates * 2,
4609 trans->delayed_ref_updates * 2, 0);4609 trans->transid, 0);
4610 if (be_nice) {4610 if (be_nice) {
4611 if (truncate_space_check(trans, root,4611 if (truncate_space_check(trans, root,
4612 extent_num_bytes)) {4612 extent_num_bytes)) {
@@ -8931,9 +8931,14 @@ again: · 4318 unmodified lines
8931 * So even we call qgroup_free_data(), it won't decrease reserved8931 * So even we call qgroup_free_data(), it won't decrease reserved
8932 * space.8932 * space.
8933 * 2) Not written to disk8933 * 2) Not written to disk
8934 * This means the reserved space should be freed here.8934 * This means the reserved space should be freed here. However,
8935 * if a truncate invalidates the page (by clearing PageDirty)
8936 * and the page is accounted for while allocating extent
8937 * in btrfs_check_data_free_space() we let delayed_ref to
8938 * free the entire extent.
8935 */8939 */
8936 btrfs_qgroup_free_data(inode, page_start, PAGE_SIZE);8940 if (PageDirty(page))
8941 btrfs_qgroup_free_data(inode, page_start, PAGE_SIZE);
8937 if (!inode_evicting) {8942 if (!inode_evicting) {
8938 clear_extent_bit(tree, page_start, page_end,8943 clear_extent_bit(tree, page_start, page_end,
8939 EXTENT_LOCKED | EXTENT_DIRTY |8944 EXTENT_LOCKED | EXTENT_DIRTY |
fs/btrfs/ioctl.c+5−0
@@ -3814,6 +3814,11 @@ process_slot: · 3813 unmodified lines
3814 }3814 }
3815 btrfs_release_path(path);3815 btrfs_release_path(path);
3816 key.offset = next_key_min_offset;3816 key.offset = next_key_min_offset;
3817
3818 if (fatal_signal_pending(current)) {
3819 ret = -EINTR;
3820 goto out;
3821 }
3817 }3822 }
3818 ret = 0;3823 ret = 0;
3819 3824
fs/btrfs/relocation.c+8−1
@@ -2728,7 +2728,14 @@ static int do_relocation(struct btrfs_trans_handle *trans, · 2727 unmodified lines
2728 2728
2729 bytenr = btrfs_node_blockptr(upper->eb, slot);2729 bytenr = btrfs_node_blockptr(upper->eb, slot);
2730 if (lowest) {2730 if (lowest) {
2731 BUG_ON(bytenr != node->bytenr);2731 if (bytenr != node->bytenr) {
2732 btrfs_err(root->fs_info,
2733 "lowest leaf/node mismatch: bytenr %llu node->bytenr %llu slot %d upper %llu",
2734 bytenr, node->bytenr, slot,
2735 upper->eb->start);
2736 err = -EIO;
2737 goto next;
2738 }
2732 } else {2739 } else {
2733 if (node->eb->start == bytenr)2740 if (node->eb->start == bytenr)
2734 goto next;2741 goto next;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t