for-4.17-rc3-tag
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEE8rQSAMVO+zA4DBdWxWXV+ddtWDsFAlrsbkEACgkQxWXV+ddt WDvm6Q/+KdFKJ7T8hBOc6o5EeULXCDF3FmMA7HvDC696WXKsckXJFKk52awvrSb6 3wnIzfWmI3K+rwX3cKqLRKe6tMXtBrTjVWXyezfvx1SMcCO4hSQ+nWLqK08htaNf h7m3OC3y0xO8QHcFSkvHUov6KRWG3rH+4p46JsJjN7GTBtWmR6tsiyQQ9JMC3gNR 8Jnl1YaQq/JDLFm8GmFfPqIK+MLnNJ+GOJC1pm2vJQFtjnDw9dic+dI2hGX2oh9M SSRAoJu7jUvTWSmQN9aJfbBUr4atzoKKGYsyAgx5qgXbzOnbUGTIhtyAZirRWWBy 0pT2b/8XuqsIabwR5dR4UbL4Ke1h5DS4c6GFydwO4DeddTovHtDzbN0cPuPQABL1 rwFzlnHhcM/qRu9SKXx1jRy7w4Vju8fVX9D4lyjLcyk24flkEAn1NlJCWEqSzPYR ikTTm71r/1/62XqE6AcOyugS8E6EYtYHo3PjrfFXr3fQCbctTLEaUKoegFkTezbX EZLRPy9KNGfuyUyh3eiSypNHZZ9WiT+W42BaLIcpbHJLnqB+A14Z0oZx6aHVhY0T VFLL91O//OmUvjpsZ7I99LyswvrzsmU0jKS41GXOQlLsLTxtGhcZbvRt4uX4UUie UOQrNCgO0Y2slGfv+uoDCLhH0tTCRziuEvmgu8bjPcfZE7tph+s= =Jdmp -----END PGP SIGNATURE----- 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
This commit is contained in:
commit
4148d3884a
|
@ -3142,7 +3142,11 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
|
|||
struct rb_node *node;
|
||||
int ret = 0;
|
||||
|
||||
spin_lock(&root->fs_info->trans_lock);
|
||||
cur_trans = root->fs_info->running_transaction;
|
||||
if (cur_trans)
|
||||
refcount_inc(&cur_trans->use_count);
|
||||
spin_unlock(&root->fs_info->trans_lock);
|
||||
if (!cur_trans)
|
||||
return 0;
|
||||
|
||||
|
@ -3151,6 +3155,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
|
|||
head = btrfs_find_delayed_ref_head(delayed_refs, bytenr);
|
||||
if (!head) {
|
||||
spin_unlock(&delayed_refs->lock);
|
||||
btrfs_put_transaction(cur_trans);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -3167,6 +3172,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
|
|||
mutex_lock(&head->mutex);
|
||||
mutex_unlock(&head->mutex);
|
||||
btrfs_put_delayed_ref_head(head);
|
||||
btrfs_put_transaction(cur_trans);
|
||||
return -EAGAIN;
|
||||
}
|
||||
spin_unlock(&delayed_refs->lock);
|
||||
|
@ -3199,6 +3205,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
|
|||
}
|
||||
spin_unlock(&head->lock);
|
||||
mutex_unlock(&head->mutex);
|
||||
btrfs_put_transaction(cur_trans);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -1841,7 +1841,7 @@ int replace_path(struct btrfs_trans_handle *trans,
|
|||
old_bytenr = btrfs_node_blockptr(parent, slot);
|
||||
blocksize = fs_info->nodesize;
|
||||
old_ptr_gen = btrfs_node_ptr_generation(parent, slot);
|
||||
btrfs_node_key_to_cpu(parent, &key, slot);
|
||||
btrfs_node_key_to_cpu(parent, &first_key, slot);
|
||||
|
||||
if (level <= max_level) {
|
||||
eb = path->nodes[level];
|
||||
|
|
|
@ -5236,6 +5236,10 @@ static int send_write_or_clone(struct send_ctx *sctx,
|
|||
len = btrfs_file_extent_num_bytes(path->nodes[0], ei);
|
||||
}
|
||||
|
||||
if (offset >= sctx->cur_inode_size) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
if (offset + len > sctx->cur_inode_size)
|
||||
len = sctx->cur_inode_size - offset;
|
||||
if (len == 0) {
|
||||
|
|
Loading…
Reference in New Issue
Block a user