Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable: Btrfs: don't warn in btrfs_add_orphan Btrfs: fix free space cache when there are pinned extents and clusters V2 Btrfs: Fix uninitialized root flags for subvolumes btrfs: clear __GFP_FS flag in the space cache inode Btrfs: fix memory leak in start_transaction() Btrfs: fix memory leak in btrfs_ioctl_start_sync() Btrfs: fix subvol_sem leak in btrfs_rename() Btrfs: Fix oops for defrag with compression turned on Btrfs: fix /proc/mounts info. Btrfs: fix compiler warning in file.c
This commit is contained in:
@@ -112,6 +112,7 @@ static int btrfs_init_inode_security(struct btrfs_trans_handle *trans,
|
||||
static noinline int insert_inline_extent(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root, struct inode *inode,
|
||||
u64 start, size_t size, size_t compressed_size,
|
||||
int compress_type,
|
||||
struct page **compressed_pages)
|
||||
{
|
||||
struct btrfs_key key;
|
||||
@@ -126,12 +127,9 @@ static noinline int insert_inline_extent(struct btrfs_trans_handle *trans,
|
||||
size_t cur_size = size;
|
||||
size_t datasize;
|
||||
unsigned long offset;
|
||||
int compress_type = BTRFS_COMPRESS_NONE;
|
||||
|
||||
if (compressed_size && compressed_pages) {
|
||||
compress_type = root->fs_info->compress_type;
|
||||
if (compressed_size && compressed_pages)
|
||||
cur_size = compressed_size;
|
||||
}
|
||||
|
||||
path = btrfs_alloc_path();
|
||||
if (!path)
|
||||
@@ -221,7 +219,7 @@ fail:
|
||||
static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root,
|
||||
struct inode *inode, u64 start, u64 end,
|
||||
size_t compressed_size,
|
||||
size_t compressed_size, int compress_type,
|
||||
struct page **compressed_pages)
|
||||
{
|
||||
u64 isize = i_size_read(inode);
|
||||
@@ -254,7 +252,7 @@ static noinline int cow_file_range_inline(struct btrfs_trans_handle *trans,
|
||||
inline_len = min_t(u64, isize, actual_end);
|
||||
ret = insert_inline_extent(trans, root, inode, start,
|
||||
inline_len, compressed_size,
|
||||
compressed_pages);
|
||||
compress_type, compressed_pages);
|
||||
BUG_ON(ret);
|
||||
btrfs_delalloc_release_metadata(inode, end + 1 - start);
|
||||
btrfs_drop_extent_cache(inode, start, aligned_end - 1, 0);
|
||||
@@ -433,12 +431,13 @@ again:
|
||||
* to make an uncompressed inline extent.
|
||||
*/
|
||||
ret = cow_file_range_inline(trans, root, inode,
|
||||
start, end, 0, NULL);
|
||||
start, end, 0, 0, NULL);
|
||||
} else {
|
||||
/* try making a compressed inline extent */
|
||||
ret = cow_file_range_inline(trans, root, inode,
|
||||
start, end,
|
||||
total_compressed, pages);
|
||||
total_compressed,
|
||||
compress_type, pages);
|
||||
}
|
||||
if (ret == 0) {
|
||||
/*
|
||||
@@ -792,7 +791,7 @@ static noinline int cow_file_range(struct inode *inode,
|
||||
if (start == 0) {
|
||||
/* lets try to make an inline extent */
|
||||
ret = cow_file_range_inline(trans, root, inode,
|
||||
start, end, 0, NULL);
|
||||
start, end, 0, 0, NULL);
|
||||
if (ret == 0) {
|
||||
extent_clear_unlock_delalloc(inode,
|
||||
&BTRFS_I(inode)->io_tree,
|
||||
@@ -2222,8 +2221,6 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans, struct inode *inode)
|
||||
insert = 1;
|
||||
#endif
|
||||
insert = 1;
|
||||
} else {
|
||||
WARN_ON(!BTRFS_I(inode)->orphan_meta_reserved);
|
||||
}
|
||||
|
||||
if (!BTRFS_I(inode)->orphan_meta_reserved) {
|
||||
@@ -2537,8 +2534,6 @@ static void btrfs_read_locked_inode(struct inode *inode)
|
||||
BTRFS_I(inode)->flags = btrfs_inode_flags(leaf, inode_item);
|
||||
|
||||
alloc_group_block = btrfs_inode_block_group(leaf, inode_item);
|
||||
if (location.objectid == BTRFS_FREE_SPACE_OBJECTID)
|
||||
inode->i_mapping->flags &= ~__GFP_FS;
|
||||
|
||||
/*
|
||||
* try to precache a NULL acl entry for files that don't have
|
||||
@@ -6960,8 +6955,10 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
* should cover the worst case number of items we'll modify.
|
||||
*/
|
||||
trans = btrfs_start_transaction(root, 20);
|
||||
if (IS_ERR(trans))
|
||||
return PTR_ERR(trans);
|
||||
if (IS_ERR(trans)) {
|
||||
ret = PTR_ERR(trans);
|
||||
goto out_notrans;
|
||||
}
|
||||
|
||||
btrfs_set_trans_block_group(trans, new_dir);
|
||||
|
||||
@@ -7061,7 +7058,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
|
||||
}
|
||||
out_fail:
|
||||
btrfs_end_transaction_throttle(trans, root);
|
||||
|
||||
out_notrans:
|
||||
if (old_inode->i_ino == BTRFS_FIRST_FREE_OBJECTID)
|
||||
up_read(&root->fs_info->subvol_sem);
|
||||
|
||||
|
Reference in New Issue
Block a user