diff options
| author | Chris Mason <chris.mason@fusionio.com> | 2013-02-05 10:04:03 -0500 | 
|---|---|---|
| committer | Chris Mason <chris.mason@fusionio.com> | 2013-02-05 10:04:03 -0500 | 
| commit | 0e4e02636611dbf89a2f36320a32054f9936d6cb (patch) | |
| tree | 18b4ecc6c3812770b29729d7abbdc673ffd73a41 /fs/btrfs/tree-log.c | |
| parent | 1f0905ec156eec8f12cd593bc564551770319720 (diff) | |
| parent | 1eafa6c73791e4f312324ddad9cbcaf6a1b6052b (diff) | |
| download | olio-linux-3.10-0e4e02636611dbf89a2f36320a32054f9936d6cb.tar.xz olio-linux-3.10-0e4e02636611dbf89a2f36320a32054f9936d6cb.zip  | |
Merge branch 'for-linus' into raid56-experimental
Conflicts:
	fs/btrfs/volumes.c
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
Diffstat (limited to 'fs/btrfs/tree-log.c')
| -rw-r--r-- | fs/btrfs/tree-log.c | 10 | 
1 files changed, 8 insertions, 2 deletions
diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 83186c7e45d..9027bb1e746 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -3357,6 +3357,11 @@ static int log_one_extent(struct btrfs_trans_handle *trans,  	if (skip_csum)  		return 0; +	if (em->compress_type) { +		csum_offset = 0; +		csum_len = block_len; +	} +  	/* block start is already adjusted for the file extent offset. */  	ret = btrfs_lookup_csums_range(log->fs_info->csum_root,  				       em->block_start + csum_offset, @@ -3410,13 +3415,13 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,  		em = list_entry(extents.next, struct extent_map, list);  		list_del_init(&em->list); -		clear_bit(EXTENT_FLAG_LOGGING, &em->flags);  		/*  		 * If we had an error we just need to delete everybody from our  		 * private list.  		 */  		if (ret) { +			clear_em_logging(tree, em);  			free_extent_map(em);  			continue;  		} @@ -3424,8 +3429,9 @@ static int btrfs_log_changed_extents(struct btrfs_trans_handle *trans,  		write_unlock(&tree->lock);  		ret = log_one_extent(trans, inode, root, em, path); -		free_extent_map(em);  		write_lock(&tree->lock); +		clear_em_logging(tree, em); +		free_extent_map(em);  	}  	WARN_ON(!list_empty(&extents));  	write_unlock(&tree->lock);  |