diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-22 05:40:13 +0900 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-05-22 05:40:13 +0900 | 
| commit | 11da37b26301be772c289c5406aec347ad140bd6 (patch) | |
| tree | 383d1f644f8cdfb3653ddbd6ecc033ffb8d1107c | |
| parent | 30625569031641eba1cd1f71148cf188500861a2 (diff) | |
| parent | 51a60253a58514524b7a347c4e68553821a79d04 (diff) | |
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs
Pull two btrfs fixes from Chris Mason:
 "This has two fixes that we've been testing for 3.16, but since both
  are safe and fix real bugs, it makes sense to send for 3.15 instead"
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
  Btrfs: send, fix incorrect ref access when using extrefs
  Btrfs: fix EIO on reading file after ioctl clone works on it
| -rw-r--r-- | fs/btrfs/ioctl.c | 6 | ||||
| -rw-r--r-- | fs/btrfs/send.c | 2 | 
2 files changed, 6 insertions, 2 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index 2ad7de94efef..2f6d7b13b5bd 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -3120,6 +3120,8 @@ process_slot:  			} else if (type == BTRFS_FILE_EXTENT_INLINE) {  				u64 skip = 0;  				u64 trim = 0; +				u64 aligned_end = 0; +  				if (off > key.offset) {  					skip = off - key.offset;  					new_key.offset += skip; @@ -3136,9 +3138,11 @@ process_slot:  				size -= skip + trim;  				datal -= skip + trim; +				aligned_end = ALIGN(new_key.offset + datal, +						    root->sectorsize);  				ret = btrfs_drop_extents(trans, root, inode,  							 new_key.offset, -							 new_key.offset + datal, +							 aligned_end,  							 1);  				if (ret) {  					if (ret != -EOPNOTSUPP) diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c index eb6537a08c1b..fd38b5053479 100644 --- a/fs/btrfs/send.c +++ b/fs/btrfs/send.c @@ -1668,7 +1668,7 @@ static int get_first_ref(struct btrfs_root *root, u64 ino,  		goto out;  	} -	if (key.type == BTRFS_INODE_REF_KEY) { +	if (found_key.type == BTRFS_INODE_REF_KEY) {  		struct btrfs_inode_ref *iref;  		iref = btrfs_item_ptr(path->nodes[0], path->slots[0],  				      struct btrfs_inode_ref);  | 
