diff options
author | Josef Bacik <josef@redhat.com> | 2011-08-04 16:25:02 +0200 |
---|---|---|
committer | Josef Bacik <josef@redhat.com> | 2011-10-19 21:12:31 +0200 |
commit | 7709cde33f12db71efb377fae4ae7aab6c94ebc6 (patch) | |
tree | f60b4ff7dafa0fcf64e0d9e9445d6984739cbfe6 /fs/btrfs/btrfs_inode.h | |
parent | Btrfs: skip looking for delalloc if we don't have ->fill_delalloc (diff) | |
download | linux-7709cde33f12db71efb377fae4ae7aab6c94ebc6.tar.xz linux-7709cde33f12db71efb377fae4ae7aab6c94ebc6.zip |
Btrfs: calculate checksum space correctly
We have not been reserving enough space for checksums. We were just reserving
bytes for the checksum items themselves, we were not taking into account having
to cow the tree and such. This patch adds a csum_bytes counter to the inode for
keeping track of the number of bytes outstanding we have for checksums. Then we
calculate how many leaves would be required for the checksums we are given and
use that to reserve space. This adds a significant amount of bytes to our
reservations, but we will handle this later. Thanks,
Signed-off-by: Josef Bacik <josef@redhat.com>
Diffstat (limited to 'fs/btrfs/btrfs_inode.h')
-rw-r--r-- | fs/btrfs/btrfs_inode.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/fs/btrfs/btrfs_inode.h b/fs/btrfs/btrfs_inode.h index c70fb10a307b..5a5d325a3935 100644 --- a/fs/btrfs/btrfs_inode.h +++ b/fs/btrfs/btrfs_inode.h @@ -123,6 +123,12 @@ struct btrfs_inode { */ u64 last_unlink_trans; + /* + * Number of bytes outstanding that are going to need csums. This is + * used in ENOSPC accounting. + */ + u64 csum_bytes; + /* flags field from the on disk inode */ u32 flags; |