diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-05 16:41:23 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-05 16:41:23 -0700 | 
| commit | 8c27cb3566762613a23c080e3db7d0501af9a787 (patch) | |
| tree | 32b2752e320b6cb3ecf289dd00b5145a6de947e6 /fs/btrfs/ioctl.c | |
| parent | 7114f51fcb979f167ab5f625ac74059dcb1afc28 (diff) | |
| parent | 848c23b78fafdcd3270b06a30737f8dbd70c347f (diff) | |
Merge branch 'for-4.13-part1' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux
Pull btrfs updates from David Sterba:
 "The core updates improve error handling (mostly related to bios), with
  the usual incremental work on the GFP_NOFS (mis)use removal,
  refactoring or cleanups. Except the two top patches, all have been in
  for-next for an extensive amount of time.
  User visible changes:
   - statx support
   - quota override tunable
   - improved compression thresholds
   - obsoleted mount option alloc_start
  Core updates:
   - bio-related updates:
       - faster bio cloning
       - no allocation failures
       - preallocated flush bios
   - more kvzalloc use, memalloc_nofs protections, GFP_NOFS updates
   - prep work for btree_inode removal
   - dir-item validation
   - qgoup fixes and updates
   - cleanups:
       - removed unused struct members, unused code, refactoring
       - argument refactoring (fs_info/root, caller -> callee sink)
       - SEARCH_TREE ioctl docs"
* 'for-4.13-part1' of git://git.kernel.org/pub/scm/linux/kernel/git/kdave/linux: (115 commits)
  btrfs: Remove false alert when fiemap range is smaller than on-disk extent
  btrfs: Don't clear SGID when inheriting ACLs
  btrfs: fix integer overflow in calc_reclaim_items_nr
  btrfs: scrub: fix target device intialization while setting up scrub context
  btrfs: qgroup: Fix qgroup reserved space underflow by only freeing reserved ranges
  btrfs: qgroup: Introduce extent changeset for qgroup reserve functions
  btrfs: qgroup: Fix qgroup reserved space underflow caused by buffered write and quotas being enabled
  btrfs: qgroup: Return actually freed bytes for qgroup release or free data
  btrfs: qgroup: Cleanup btrfs_qgroup_prepare_account_extents function
  btrfs: qgroup: Add quick exit for non-fs extents
  Btrfs: rework delayed ref total_bytes_pinned accounting
  Btrfs: return old and new total ref mods when adding delayed refs
  Btrfs: always account pinned bytes when dropping a tree block ref
  Btrfs: update total_bytes_pinned when pinning down extents
  Btrfs: make BUG_ON() in add_pinned_bytes() an ASSERT()
  Btrfs: make add_pinned_bytes() take an s64 num_bytes instead of u64
  btrfs: fix validation of XATTR_ITEM dir items
  btrfs: Verify dir_item in iterate_object_props
  btrfs: Check name_len before in btrfs_del_root_ref
  btrfs: Check name_len before reading btrfs_get_name
  ...
Diffstat (limited to 'fs/btrfs/ioctl.c')
| -rw-r--r-- | fs/btrfs/ioctl.c | 18 | 
1 files changed, 9 insertions, 9 deletions
diff --git a/fs/btrfs/ioctl.c b/fs/btrfs/ioctl.c index e176375f374f..fa1b78cf25f6 100644 --- a/fs/btrfs/ioctl.c +++ b/fs/btrfs/ioctl.c @@ -37,7 +37,7 @@  #include <linux/bit_spinlock.h>  #include <linux/security.h>  #include <linux/xattr.h> -#include <linux/vmalloc.h> +#include <linux/mm.h>  #include <linux/slab.h>  #include <linux/blkdev.h>  #include <linux/uuid.h> @@ -689,7 +689,7 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir,  	if (ret)  		goto dec_and_free; -	btrfs_wait_ordered_extents(root, -1, 0, (u64)-1); +	btrfs_wait_ordered_extents(root, U64_MAX, 0, (u64)-1);  	btrfs_init_block_rsv(&pending_snapshot->block_rsv,  			     BTRFS_BLOCK_RSV_TEMP); @@ -1127,6 +1127,7 @@ static int cluster_pages_for_defrag(struct inode *inode,  	struct btrfs_ordered_extent *ordered;  	struct extent_state *cached_state = NULL;  	struct extent_io_tree *tree; +	struct extent_changeset *data_reserved = NULL;  	gfp_t mask = btrfs_alloc_write_mask(inode->i_mapping);  	file_end = (isize - 1) >> PAGE_SHIFT; @@ -1135,7 +1136,7 @@ static int cluster_pages_for_defrag(struct inode *inode,  	page_cnt = min_t(u64, (u64)num_pages, (u64)file_end - start_index + 1); -	ret = btrfs_delalloc_reserve_space(inode, +	ret = btrfs_delalloc_reserve_space(inode, &data_reserved,  			start_index << PAGE_SHIFT,  			page_cnt << PAGE_SHIFT);  	if (ret) @@ -1226,7 +1227,7 @@ again:  		spin_lock(&BTRFS_I(inode)->lock);  		BTRFS_I(inode)->outstanding_extents++;  		spin_unlock(&BTRFS_I(inode)->lock); -		btrfs_delalloc_release_space(inode, +		btrfs_delalloc_release_space(inode, data_reserved,  				start_index << PAGE_SHIFT,  				(page_cnt - i_done) << PAGE_SHIFT);  	} @@ -1247,15 +1248,17 @@ again:  		unlock_page(pages[i]);  		put_page(pages[i]);  	} +	extent_changeset_free(data_reserved);  	return i_done;  out:  	for (i = 0; i < i_done; i++) {  		unlock_page(pages[i]);  		put_page(pages[i]);  	} -	btrfs_delalloc_release_space(inode, +	btrfs_delalloc_release_space(inode, data_reserved,  			start_index << PAGE_SHIFT,  			page_cnt << PAGE_SHIFT); +	extent_changeset_free(data_reserved);  	return ret;  } @@ -4588,7 +4591,7 @@ static long btrfs_ioctl_logical_to_ino(struct btrfs_fs_info *fs_info,  out:  	btrfs_free_path(path); -	vfree(inodes); +	kvfree(inodes);  	kfree(loi);  	return ret; @@ -4897,7 +4900,6 @@ static long btrfs_ioctl_qgroup_assign(struct file *file, void __user *arg)  		goto out;  	} -	/* FIXME: check if the IDs really exist */  	if (sa->assign) {  		ret = btrfs_add_qgroup_relation(trans, fs_info,  						sa->src, sa->dst); @@ -4956,7 +4958,6 @@ static long btrfs_ioctl_qgroup_create(struct file *file, void __user *arg)  		goto out;  	} -	/* FIXME: check if the IDs really exist */  	if (sa->create) {  		ret = btrfs_create_qgroup(trans, fs_info, sa->qgroupid);  	} else { @@ -5010,7 +5011,6 @@ static long btrfs_ioctl_qgroup_limit(struct file *file, void __user *arg)  		qgroupid = root->root_key.objectid;  	} -	/* FIXME: check if the IDs really exist */  	ret = btrfs_limit_qgroup(trans, fs_info, qgroupid, &sa->lim);  	err = btrfs_end_transaction(trans);  | 
