History

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

Pull btrfs fixes from David Sterba: "Two regression fixes and one fix for stable" * tag 'for-4.17-rc3-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: Btrfs: send, fix missing truncate for inode with prealloc extent past eof btrfs: Take trans lock before access running trans in check_delayed_ref btrfs: Fix wrong first_key parameter in replace_path

Linus Torvalds committed 8 years ago

Commit 4148d382 parents 625e200 a6aa10c3 files · +12 −1Browse files

Unified · Split

3 files
  1. fs/btrfs/extent-tree.c +7 −0
  2. fs/btrfs/relocation.c +1 −1
  3. fs/btrfs/send.c +4 −0
fs/btrfs/extent-tree.c+7−0
@@ -3142,7 +3142,11 @@ static noinline int check_delayed_ref(struct btrfs_root *root, · 3141 unmodified lines
3142 struct rb_node *node;3142 struct rb_node *node;
3143 int ret = 0;3143 int ret = 0;
3144 3144
3145 spin_lock(&root->fs_info->trans_lock);
3145 cur_trans = root->fs_info->running_transaction;3146 cur_trans = root->fs_info->running_transaction;
3147 if (cur_trans)
3148 refcount_inc(&cur_trans->use_count);
3149 spin_unlock(&root->fs_info->trans_lock);
3146 if (!cur_trans)3150 if (!cur_trans)
3147 return 0;3151 return 0;
3148 3152
@@ -3151,6 +3155,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root, · 2 unmodified lines
3151 head = btrfs_find_delayed_ref_head(delayed_refs, bytenr);3155 head = btrfs_find_delayed_ref_head(delayed_refs, bytenr);
3152 if (!head) {3156 if (!head) {
3153 spin_unlock(&delayed_refs->lock);3157 spin_unlock(&delayed_refs->lock);
3158 btrfs_put_transaction(cur_trans);
3154 return 0;3159 return 0;
3155 }3160 }
3156 3161
@@ -3167,6 +3172,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root, · 10 unmodified lines
3167 mutex_lock(&head->mutex);3172 mutex_lock(&head->mutex);
3168 mutex_unlock(&head->mutex);3173 mutex_unlock(&head->mutex);
3169 btrfs_put_delayed_ref_head(head);3174 btrfs_put_delayed_ref_head(head);
3175 btrfs_put_transaction(cur_trans);
3170 return -EAGAIN;3176 return -EAGAIN;
3171 }3177 }
3172 spin_unlock(&delayed_refs->lock);3178 spin_unlock(&delayed_refs->lock);
@@ -3199,6 +3205,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root, · 26 unmodified lines
3199 }3205 }
3200 spin_unlock(&head->lock);3206 spin_unlock(&head->lock);
3201 mutex_unlock(&head->mutex);3207 mutex_unlock(&head->mutex);
3208 btrfs_put_transaction(cur_trans);
3202 return ret;3209 return ret;
3203}3210}
3204 3211
fs/btrfs/relocation.c+1−1
@@ -1841,7 +1841,7 @@ again: · 1840 unmodified lines
1841 old_bytenr = btrfs_node_blockptr(parent, slot);1841 old_bytenr = btrfs_node_blockptr(parent, slot);
1842 blocksize = fs_info->nodesize;1842 blocksize = fs_info->nodesize;
1843 old_ptr_gen = btrfs_node_ptr_generation(parent, slot);1843 old_ptr_gen = btrfs_node_ptr_generation(parent, slot);
1844 btrfs_node_key_to_cpu(parent, &key, slot);1844 btrfs_node_key_to_cpu(parent, &first_key, slot);
1845 1845
1846 if (level <= max_level) {1846 if (level <= max_level) {
1847 eb = path->nodes[level];1847 eb = path->nodes[level];
fs/btrfs/send.c+4−0
@@ -5236,6 +5236,10 @@ static int send_write_or_clone(struct send_ctx *sctx, · 5235 unmodified lines
5236 len = btrfs_file_extent_num_bytes(path->nodes[0], ei);5236 len = btrfs_file_extent_num_bytes(path->nodes[0], ei);
5237 }5237 }
5238 5238
5239 if (offset >= sctx->cur_inode_size) {
5240 ret = 0;
5241 goto out;
5242 }
5239 if (offset + len > sctx->cur_inode_size)5243 if (offset + len > sctx->cur_inode_size)
5240 len = sctx->cur_inode_size - offset;5244 len = sctx->cur_inode_size - offset;
5241 if (len == 0) {5245 if (len == 0) {

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