mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
btrfs: remove no longer needed strict argument from can_nocow_extent()
All callers of can_nocow_extent() now pass a value of false for its 'strict' argument, making it redundant. So remove the argument from can_nocow_extent() as well as can_nocow_file_extent(), btrfs_cross_ref_exist() and check_committed_ref(), because this argument was used just to influence the behavior of check_committed_ref(). Also remove the 'strict' field from struct can_nocow_file_extent_args, which is now always false as well, as its value is taken from the argument to can_nocow_extent(). Reviewed-by: Qu Wenruo <wqu@suse.com> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
95418f4c79
commit
2a01169cbf
@ -526,7 +526,7 @@ bool btrfs_data_csum_ok(struct btrfs_bio *bbio, struct btrfs_device *dev,
|
||||
u32 bio_offset, struct bio_vec *bv);
|
||||
noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
|
||||
struct btrfs_file_extent *file_extent,
|
||||
bool nowait, bool strict);
|
||||
bool nowait);
|
||||
|
||||
void btrfs_del_delalloc_inode(struct btrfs_inode *inode);
|
||||
struct inode *btrfs_lookup_dentry(struct inode *dir, struct dentry *dentry);
|
||||
|
@ -248,8 +248,7 @@ static int btrfs_get_blocks_direct_write(struct extent_map **map,
|
||||
len = min(len, em->len - (start - em->start));
|
||||
block_start = extent_map_block_start(em) + (start - em->start);
|
||||
|
||||
if (can_nocow_extent(inode, start, &len,
|
||||
&file_extent, false, false) == 1) {
|
||||
if (can_nocow_extent(inode, start, &len, &file_extent, false) == 1) {
|
||||
bg = btrfs_inc_nocow_writers(fs_info, block_start);
|
||||
if (bg)
|
||||
can_nocow = true;
|
||||
|
@ -2296,8 +2296,7 @@ static noinline int check_delayed_ref(struct btrfs_root *root,
|
||||
|
||||
static noinline int check_committed_ref(struct btrfs_root *root,
|
||||
struct btrfs_path *path,
|
||||
u64 objectid, u64 offset, u64 bytenr,
|
||||
bool strict)
|
||||
u64 objectid, u64 offset, u64 bytenr)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = root->fs_info;
|
||||
struct btrfs_root *extent_root = btrfs_extent_root(fs_info, bytenr);
|
||||
@ -2361,11 +2360,10 @@ static noinline int check_committed_ref(struct btrfs_root *root,
|
||||
|
||||
/*
|
||||
* If extent created before last snapshot => it's shared unless the
|
||||
* snapshot has been deleted. Use the heuristic if strict is false.
|
||||
* snapshot has been deleted.
|
||||
*/
|
||||
if (!strict &&
|
||||
(btrfs_extent_generation(leaf, ei) <=
|
||||
btrfs_root_last_snapshot(&root->root_item)))
|
||||
if (btrfs_extent_generation(leaf, ei) <=
|
||||
btrfs_root_last_snapshot(&root->root_item))
|
||||
goto out;
|
||||
|
||||
/* If this extent has SHARED_DATA_REF then it's shared */
|
||||
@ -2387,13 +2385,12 @@ static noinline int check_committed_ref(struct btrfs_root *root,
|
||||
}
|
||||
|
||||
int btrfs_cross_ref_exist(struct btrfs_root *root, u64 objectid, u64 offset,
|
||||
u64 bytenr, bool strict, struct btrfs_path *path)
|
||||
u64 bytenr, struct btrfs_path *path)
|
||||
{
|
||||
int ret;
|
||||
|
||||
do {
|
||||
ret = check_committed_ref(root, path, objectid,
|
||||
offset, bytenr, strict);
|
||||
ret = check_committed_ref(root, path, objectid, offset, bytenr);
|
||||
if (ret && ret != -ENOENT)
|
||||
goto out;
|
||||
|
||||
|
@ -117,7 +117,7 @@ int btrfs_pin_extent_for_log_replay(struct btrfs_trans_handle *trans,
|
||||
const struct extent_buffer *eb);
|
||||
int btrfs_exclude_logged_extents(struct extent_buffer *eb);
|
||||
int btrfs_cross_ref_exist(struct btrfs_root *root,
|
||||
u64 objectid, u64 offset, u64 bytenr, bool strict,
|
||||
u64 objectid, u64 offset, u64 bytenr,
|
||||
struct btrfs_path *path);
|
||||
struct extent_buffer *btrfs_alloc_tree_block(struct btrfs_trans_handle *trans,
|
||||
struct btrfs_root *root,
|
||||
|
@ -1023,7 +1023,7 @@ int btrfs_check_nocow_lock(struct btrfs_inode *inode, loff_t pos,
|
||||
&cached_state);
|
||||
}
|
||||
ret = can_nocow_extent(&inode->vfs_inode, lockstart, &num_bytes,
|
||||
NULL, nowait, false);
|
||||
NULL, nowait);
|
||||
if (ret <= 0)
|
||||
btrfs_drew_write_unlock(&root->snapshot_lock);
|
||||
else
|
||||
|
@ -1837,7 +1837,6 @@ struct can_nocow_file_extent_args {
|
||||
/* End file offset (inclusive) of the range we want to NOCOW. */
|
||||
u64 end;
|
||||
bool writeback_path;
|
||||
bool strict;
|
||||
/*
|
||||
* Free the path passed to can_nocow_file_extent() once it's not needed
|
||||
* anymore.
|
||||
@ -1892,8 +1891,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
|
||||
* for its subvolume was created, then this implies the extent is shared,
|
||||
* hence we must COW.
|
||||
*/
|
||||
if (!args->strict &&
|
||||
btrfs_file_extent_generation(leaf, fi) <=
|
||||
if (btrfs_file_extent_generation(leaf, fi) <=
|
||||
btrfs_root_last_snapshot(&root->root_item))
|
||||
goto out;
|
||||
|
||||
@ -1924,7 +1922,7 @@ static int can_nocow_file_extent(struct btrfs_path *path,
|
||||
|
||||
ret = btrfs_cross_ref_exist(root, btrfs_ino(inode),
|
||||
key->offset - args->file_extent.offset,
|
||||
args->file_extent.disk_bytenr, args->strict, path);
|
||||
args->file_extent.disk_bytenr, path);
|
||||
WARN_ON_ONCE(ret > 0 && is_freespace_inode);
|
||||
if (ret != 0)
|
||||
goto out;
|
||||
@ -7011,8 +7009,6 @@ static bool btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr)
|
||||
* @orig_start: (optional) Return the original file offset of the file extent
|
||||
* @orig_len: (optional) Return the original on-disk length of the file extent
|
||||
* @ram_bytes: (optional) Return the ram_bytes of the file extent
|
||||
* @strict: if true, omit optimizations that might force us into unnecessary
|
||||
* cow. e.g., don't trust generation number.
|
||||
*
|
||||
* Return:
|
||||
* >0 and update @len if we can do nocow write
|
||||
@ -7024,7 +7020,7 @@ static bool btrfs_extent_readonly(struct btrfs_fs_info *fs_info, u64 bytenr)
|
||||
*/
|
||||
noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
|
||||
struct btrfs_file_extent *file_extent,
|
||||
bool nowait, bool strict)
|
||||
bool nowait)
|
||||
{
|
||||
struct btrfs_fs_info *fs_info = inode_to_fs_info(inode);
|
||||
struct can_nocow_file_extent_args nocow_args = { 0 };
|
||||
@ -7077,7 +7073,6 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len,
|
||||
|
||||
nocow_args.start = offset;
|
||||
nocow_args.end = offset + *len - 1;
|
||||
nocow_args.strict = strict;
|
||||
nocow_args.free_path = true;
|
||||
|
||||
ret = can_nocow_file_extent(path, &key, BTRFS_I(inode), &nocow_args);
|
||||
|
Loading…
Reference in New Issue
Block a user