Btrfs: Compression corner fixes
authorChris Mason <chris.mason@oracle.com>
Fri, 31 Oct 2008 16:46:39 +0000 (12:46 -0400)
committerChris Mason <chris.mason@oracle.com>
Fri, 31 Oct 2008 16:46:39 +0000 (12:46 -0400)
commit70b99e6959a4c28ae1b314985eca731f3db72f1d
tree81578759fe422f7b17a734b8bf16b042aa02a046
parentd899e05215178fed903ad0e7fc1cb4d8e0cc0a88
Btrfs: Compression corner fixes

Make sure we keep page->mapping NULL on the pages we're getting
via alloc_page.  It gets set so a few of the callbacks can do the right
thing, but in general these pages don't have a mapping.

Don't try to truncate compressed inline items in btrfs_drop_extents.
The whole compressed item must be preserved.

Don't try to create multipage inline compressed items.  When we try to
overwrite just the first page of the file, we would have to read in and recow
all the pages after it in the same compressed inline items.  For now, only
create single page inline items.

Make sure we lock pages in the correct order during delalloc.  The
search into the state tree for delalloc bytes can return bytes before
the page we already have locked.

Signed-off-by: Chris Mason <chris.mason@oracle.com>
fs/btrfs/compression.c
fs/btrfs/extent_io.c
fs/btrfs/file.c
fs/btrfs/inode.c