linux/fs/btrfs
Josef Bacik 4577b014d1 Btrfs: relocate csums properly with prealloc extents
A user reported a problem where they were getting csum errors when running a
balance and running systemd's journal.  This is because systemd is awesome and
fallocate()'s its log space and writes into it.  Unfortunately we assume that
when we read in all the csums for an extent that they are sequential starting at
the bytenr we care about.  This obviously isn't the case for prealloc extents,
where we could have written to the middle of the prealloc extent only, which
means the csum would be for the bytenr in the middle of our range and not the
front of our range.  Fix this by offsetting the new bytenr we are logging to
based on the original bytenr the csum was for.  With this patch I no longer see
the csum errors I was seeing.  Thanks,

Cc: stable@vger.kernel.org
Reported-by: Chris Murphy <lists@colorremedies.com>
Signed-off-by: Josef Bacik <jbacik@fusionio.com>
Signed-off-by: Chris Mason <chris.mason@fusionio.com>
2013-11-11 21:53:22 -05:00
..
tests Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
acl.c
async-thread.c Btrfs: eliminate races in worker stopping code 2013-10-04 16:02:13 -04:00
async-thread.h Btrfs: eliminate races in worker stopping code 2013-10-04 16:02:13 -04:00
backref.c btrfs: drop unused parameter from btrfs_item_nr 2013-11-11 21:50:48 -05:00
backref.h Btrfs: allocate prelim_ref with a slab allocater 2013-09-01 08:16:27 -04:00
btrfs_inode.h Btrfs: check roots last log commit when checking if an inode has been logged 2013-09-21 11:05:24 -04:00
check-integrity.c Btrfs: Use %z to format size_t 2013-09-01 08:16:19 -04:00
check-integrity.h
compat.h
compression.c Btrfs: Remove superfluous casts from u64 to unsigned long long 2013-09-01 08:16:08 -04:00
compression.h
ctree.c Btrfs: do a full search everytime in btrfs_search_old_slot 2013-11-11 21:51:17 -05:00
ctree.h Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
delayed-inode.c Btrfs: fix printing of non NULL terminated string 2013-09-01 08:16:20 -04:00
delayed-inode.h
delayed-ref.c Btrfs: get rid of sparse warnings 2013-09-01 08:15:50 -04:00
delayed-ref.h
dev-replace.c Merge branch 'for-linus' into for-linus-3.12 2013-10-05 10:51:32 -04:00
dev-replace.h
dir-item.c btrfs: drop unused parameter from btrfs_item_nr 2013-11-11 21:50:48 -05:00
disk-io.c Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
disk-io.h Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
export.c
export.h
extent_io.c Btrfs: export btrfs space shared info to userspace 2013-11-11 21:52:54 -05:00
extent_io.h btrfs: mark some local function as 'static' 2013-09-01 08:15:51 -04:00
extent_map.c
extent_map.h
extent-tree.c Btrfs: don't leak block group on error 2013-11-11 21:53:15 -05:00
file-item.c Btrfs: Remove superfluous casts from u64 to unsigned long long 2013-09-01 08:16:08 -04:00
file.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs 2013-09-22 14:58:49 -07:00
free-space-cache.c Btrfs: remove path arg from btrfs_truncate_free_space_cache 2013-11-11 21:51:33 -05:00
free-space-cache.h Btrfs: remove path arg from btrfs_truncate_free_space_cache 2013-11-11 21:51:33 -05:00
hash.h
inode-item.c btrfs: drop unused parameter from btrfs_item_nr 2013-11-11 21:50:48 -05:00
inode-map.c Btrfs: remove path arg from btrfs_truncate_free_space_cache 2013-11-11 21:51:33 -05:00
inode-map.h
inode.c Btrfs: fix tracking of orphan inode count 2013-11-11 21:53:01 -05:00
ioctl.c Btrfs: fix sync fs to actually wait for all data to be persisted 2013-11-11 21:53:08 -05:00
Kconfig Btrfs: add support for asserts 2013-09-01 08:16:32 -04:00
locking.c
locking.h
lzo.c
Makefile Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
math.h
ordered-data.c Btrfs: kill delay_iput arg to the wait_ordered functions 2013-09-21 11:05:27 -04:00
ordered-data.h Btrfs: kill delay_iput arg to the wait_ordered functions 2013-09-21 11:05:27 -04:00
orphan.c
print-tree.c btrfs: drop unused parameter from btrfs_item_nr 2013-11-11 21:50:48 -05:00
print-tree.h
qgroup.c Btrfs: Remove superfluous casts from u64 to unsigned long long 2013-09-01 08:16:08 -04:00
raid56.c Btrfs, raid56: fix memory leak when allocating pages for p/q stripes failed 2013-09-01 08:04:27 -04:00
raid56.h
rcu-string.h
reada.c
relocation.c Btrfs: relocate csums properly with prealloc extents 2013-11-11 21:53:22 -05:00
root-tree.c Btrfs: insert orphan roots into fs radix tree 2013-10-10 21:30:53 -04:00
scrub.c Btrfs: improve replacing nocow extents 2013-09-21 11:05:26 -04:00
send.c btrfs: drop unused parameter from btrfs_item_nr 2013-11-11 21:50:48 -05:00
send.h
struct-funcs.c
super.c Btrfs: add a sanity test for btrfs_split_item 2013-11-11 21:51:02 -05:00
sysfs.c
transaction.c Btrfs: fix transid verify errors when recovering log tree 2013-10-04 16:02:09 -04:00
transaction.h btrfs: mark some local function as 'static' 2013-09-01 08:15:51 -04:00
tree-defrag.c
tree-log.c Btrfs: drop dir i_size when adding new names on replay 2013-09-21 11:05:25 -04:00
tree-log.h
ulist.c
ulist.h
uuid-tree.c Btrfs: check UUID tree during mount if required 2013-09-01 08:15:58 -04:00
volumes.c Merge branch 'for-linus' into for-linus-3.12 2013-10-05 10:51:32 -04:00
volumes.h Btrfs: add btrfs_alloc_device and switch to it 2013-09-01 08:16:04 -04:00
xattr.c
xattr.h
zlib.c