Trivial cleanups
David Sterba
maintainercover Trivial cleanups
David Sterba (4):
btrfs: fix spelling of snapshotting
btrfs: drop ancient page flag mappings
btrfs: remove trivial wrapper btrfs_force_ra
btrfs: drop chunk locks at the end of close_ctree
fs/btrfs/ctree.h | 21 +++------------------ fs/btrfs/disk-io.c | 4 +--- fs/btrfs/extent-tree.c | 22 +++++++++++----------- fs/btrfs/file.c | 10 +++++----- fs/btrfs/inode.c | 22 +++++++++++----------- fs/btrfs/ioctl.c | 14 +++++++------- fs/btrfs/send.c | 2 +- 7 files changed, 39 insertions(+), 56 deletions(-)
Signature · 1 line
2.13.0
David Sterba
maintainerPATCH 1/4 btrfs: fix spelling of snapshotting
Signed-off-by David Sterba <[email protected]>
--- fs/btrfs/ctree.h | 6 +++--- fs/btrfs/disk-io.c | 2 +- fs/btrfs/extent-tree.c | 22 +++++++++++----------- fs/btrfs/file.c | 10 +++++----- fs/btrfs/inode.c | 22 +++++++++++----------- fs/btrfs/ioctl.c | 10 +++++----- 6 files changed, 36 insertions(+), 36 deletions(-)
fs/btrfs/ctree.h +3 -3
@@ -1261,7 +1261,7 @@ struct btrfs_root {*/ int send_in_progress;struct btrfs_subvolume_writers *subv_writers; -atomic_t will_be_snapshoted; +atomic_t will_be_snapshotted;/* For qgroup metadata space reserve */ atomic64_t qgroup_meta_rsv;
@@ -2772,8 +2772,8 @@ int btrfs_init_space_info(struct btrfs_fs_info *fs_info);int btrfs_delayed_refs_qgroup_accounting (struct btrfs_trans_handle *trans,struct btrfs_fs_info *fs_info);int __get_raid_index (u64 flags); -int btrfs_start_write_no_snapshoting (struct btrfs_root *root); -void btrfs_end_write_no_snapshoting (struct btrfs_root *root); +int btrfs_start_write_no_snapshotting (struct btrfs_root *root); +void btrfs_end_write_no_snapshotting (struct btrfs_root *root);void btrfs_wait_for_snapshot_creation (struct btrfs_root *root);void check_system_chunk (struct btrfs_trans_handle *trans,struct btrfs_fs_info *fs_info,const u64 type);
fs/btrfs/disk-io.c +1 -1
@@ -1343,7 +1343,7 @@ static void __setup_root(struct btrfs_root *root, struct btrfs_fs_info *fs_info,atomic_set (&root->log_batch,0 );atomic_set (&root->orphan_inodes,0 );refcount_set (&root->refs,1 ); -atomic_set (&root->will_be_snapshoted,0 ); +atomic_set (&root->will_be_snapshotted,0 );atomic64_set (&root->qgroup_meta_rsv,0 ); root->log_transid =0 ; root->log_transid_committed =-1 ;
fs/btrfs/extent-tree.c +11 -11
@@ -11002,14 +11002,14 @@ int btrfs_trim_fs(struct btrfs_fs_info *fs_info, struct fstrim_range *range) }/* -* btrfs_{start,end}_write_no_snapshoting() are similar to +* btrfs_{start,end}_write_no_snapshotting() are similar to * mnt_{want,drop}_write(), they are used to prevent some tasks from writing * data into the page cache through nocow before the subvolume is snapshoted, * but flush the data into disk after the snapshot creation, or to prevent -* operations while snapshoting is ongoing and that cause the snapshot to be +* operations while snapshotting is ongoing and that cause the snapshot to be * inconsistent (writes followed by expanding truncates for example). */ -void btrfs_end_write_no_snapshoting (struct btrfs_root *root) +void btrfs_end_write_no_snapshotting (struct btrfs_root *root) {percpu_counter_dec (&root->subv_writers->counter);/*
@@ -11020,9 +11020,9 @@ void btrfs_end_write_no_snapshoting(struct btrfs_root *root)wake_up (&root->subv_writers->wait); } -int btrfs_start_write_no_snapshoting (struct btrfs_root *root) +int btrfs_start_write_no_snapshotting (struct btrfs_root *root) { -if (atomic_read (&root->will_be_snapshoted)) +if (atomic_read (&root->will_be_snapshotted))return 0 ;percpu_counter_inc (&root->subv_writers->counter);
@@ -11030,14 +11030,14 @@ int btrfs_start_write_no_snapshoting(struct btrfs_root *root)* Make sure counter is updated before we check for snapshot creation. */ smp_mb (); -if (atomic_read (&root->will_be_snapshoted)) { -btrfs_end_write_no_snapshoting (root); +if (atomic_read (&root->will_be_snapshotted)) { +btrfs_end_write_no_snapshotting (root);return 0 ; }return 1 ; } -static int wait_snapshoting_atomic_t (atomic_t *a) +static int wait_snapshotting_atomic_t (atomic_t *a) {schedule ();return 0 ;
@@ -11048,11 +11048,11 @@ void btrfs_wait_for_snapshot_creation(struct btrfs_root *root)while (true) {int ret; - ret =btrfs_start_write_no_snapshoting (root); + ret =btrfs_start_write_no_snapshotting (root);if (ret)break ; -wait_on_atomic_t (&root->will_be_snapshoted, - wait_snapshoting_atomic_t, +wait_on_atomic_t (&root->will_be_snapshotted, + wait_snapshotting_atomic_t,TASK_UNINTERRUPTIBLE ); } }
fs/btrfs/file.c +5 -5
@@ -1536,7 +1536,7 @@ static noinline int check_can_nocow(struct btrfs_inode *inode, loff_t pos,u64 num_bytes;int ret; - ret =btrfs_start_write_no_snapshoting (root); + ret =btrfs_start_write_no_snapshotting (root);if (!ret)return -ENOSPC ;
@@ -1561,7 +1561,7 @@ static noinline int check_can_nocow(struct btrfs_inode *inode, loff_t pos, NULL, NULL, NULL);if (ret <=0 ) { ret =0 ; -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root); }else { *write_bytes =min_t (size_t, *write_bytes , num_bytes - pos + lockstart);
@@ -1664,7 +1664,7 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file, data_reserved, pos, write_bytes); else -btrfs_end_write_no_snapshoting (root ); +btrfs_end_write_no_snapshotting (root );break ; }
@@ -1767,7 +1767,7 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file, release_bytes =0 ;if (only_release_metadata) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);if (only_release_metadata && copied >0 ) { lockstart = round_down(pos,
@@ -1797,7 +1797,7 @@ static noinline ssize_t __btrfs_buffered_write(struct file *file,if (release_bytes) {if (only_release_metadata) { -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);btrfs_delalloc_release_metadata (BTRFS_I (inode), release_bytes); }else {
fs/btrfs/inode.c +11 -11
@@ -1382,7 +1382,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,* we fall into common COW way. */ if (!nolock) { - err =btrfs_start_write_no_snapshoting (root); + err =btrfs_start_write_no_snapshotting (root);if (!err) goto out_check; }
@@ -1394,12 +1394,12 @@ static noinline int run_delalloc_nocow(struct inode *inode,if (csum_exist_in_range (fs_info, disk_bytenr, num_bytes)) {if (!nolock) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root); goto out_check; }if (!btrfs_inc_nocow_writers (fs_info, disk_bytenr)) {if (!nolock) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root); goto out_check; } nocow =1 ;
@@ -1416,7 +1416,7 @@ static noinline int run_delalloc_nocow(struct inode *inode,if (extent_end <= start) { path->slots[0 ]++;if (!nolock && nocow) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr); goto next_slot;
@@ -1439,7 +1439,7 @@ static noinline int run_delalloc_nocow(struct inode *inode, NULL);if (ret) {if (!nolock && nocow) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr);
@@ -1460,7 +1460,7 @@ static noinline int run_delalloc_nocow(struct inode *inode, BTRFS_ORDERED_PREALLOC);if (IS_ERR (em)) {if (!nolock && nocow) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);if (nocow)btrfs_dec_nocow_writers (fs_info, disk_bytenr);
@@ -1500,7 +1500,7 @@ static noinline int run_delalloc_nocow(struct inode *inode, PAGE_UNLOCK | PAGE_SET_PRIVATE2);if (!nolock && nocow) -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root); cur_offset = extent_end;/*
@@ -5056,7 +5056,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)if (newsize > oldsize) {/* -* Don't do an expanding truncate while snapshoting is ongoing. +* Don't do an expanding truncate while snapshotting is ongoing. * This is to ensure the snapshot captures a fully consistent * state of this file - if the snapshot captures this expanding * truncation, it must capture all writes that happened before
@@ -5065,13 +5065,13 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)btrfs_wait_for_snapshot_creation (root); ret =btrfs_cont_expand (inode, oldsize, newsize);if (ret) { -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);return ret; } trans =btrfs_start_transaction (root,1 );if (IS_ERR (trans)) { -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);return PTR_ERR (trans); }
@@ -5079,7 +5079,7 @@ static int btrfs_setsize(struct inode *inode, struct iattr *attr)btrfs_ordered_update_i_size (inode,i_size_read (inode),NULL );pagecache_isize_extended (inode, oldsize, newsize); ret =btrfs_update_inode (trans, root, inode); -btrfs_end_write_no_snapshoting (root); +btrfs_end_write_no_snapshotting (root);btrfs_end_transaction (trans); }else {
fs/btrfs/ioctl.c +5 -5
@@ -638,7 +638,7 @@ static noinline int create_subvol(struct inode *dir,return ret; } -static void btrfs_wait_for_no_snapshoting_writes (struct btrfs_root *root) +static void btrfs_wait_for_no_snapshotting_writes (struct btrfs_root *root) {s64 writers;DEFINE_WAIT (wait);
@@ -681,9 +681,9 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir, goto free_pending; } -atomic_inc (&root->will_be_snapshoted); +atomic_inc (&root->will_be_snapshotted);smp_mb__after_atomic (); -btrfs_wait_for_no_snapshoting_writes (root); +btrfs_wait_for_no_snapshotting_writes (root); ret =btrfs_start_delalloc_inodes (root,0 );if (ret)
@@ -754,8 +754,8 @@ static int create_snapshot(struct btrfs_root *root, struct inode *dir, fail:btrfs_subvolume_release_metadata (fs_info, &pending_snapshot->block_rsv); dec_and_free: -if (atomic_dec_and_test (&root->will_be_snapshoted)) -wake_up_atomic_t (&root->will_be_snapshoted); +if (atomic_dec_and_test (&root->will_be_snapshotted)) +wake_up_atomic_t (&root->will_be_snapshotted); free_pending:kfree (pending_snapshot->root_item);btrfs_free_path (pending_snapshot->path);
Signature · 1 line
2.13.0
David Sterba
maintainerPATCH 2/4 btrfs: drop ancient page flag mappings
In reply to David SterbaThere's no PageFsMisc. Added by patch 4881ee5a2e995 in 2008, the flag is not present in current kernels.
Signed-off-by David Sterba <[email protected]>
--- fs/btrfs/ctree.h | 7 ------- 1 file changed, 7 deletions(-)
fs/btrfs/ctree.h +0 -7
@@ -3135,13 +3135,6 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len, u64 *orig_start, u64 *orig_block_len, u64 *ram_bytes); -/* RHEL and EL kernels have a patch that renames PG_checked to FsMisc */ -#if defined(ClearPageFsMisc) && !defined(ClearPageChecked) -#define ClearPageChecked ClearPageFsMisc -#define SetPageChecked SetPageFsMisc -#define PageChecked PageFsMisc -#endif -/* This forces readahead on a given range of bytes in an inode */ static inline void btrfs_force_ra(struct address_space *mapping, struct file_ra_state *ra, struct file *file,
Signature · 1 line
2.13.0
David Sterba
maintainerPATCH 3/4 btrfs: remove trivial wrapper btrfs_force_ra
In reply to David SterbaIt's a simple call page_cache_sync_readahead, same arguments in the same order.
Signed-off-by David Sterba <[email protected]>
--- fs/btrfs/ctree.h | 8 -------- fs/btrfs/ioctl.c | 4 ++-- fs/btrfs/send.c | 2 +- 3 files changed, 3 insertions(+), 11 deletions(-)
fs/btrfs/ctree.h +0 -8
@@ -3135,14 +3135,6 @@ noinline int can_nocow_extent(struct inode *inode, u64 offset, u64 *len, u64 *orig_start, u64 *orig_block_len, u64 *ram_bytes); -/* This forces readahead on a given range of bytes in an inode */ -static inline void btrfs_force_ra (struct address_space *mapping, -struct file_ra_state *ra,struct file *file, -pgoff_t offset,unsigned long req_size) -{ -page_cache_sync_readahead (mapping, ra, file, offset, req_size); -} -struct inode *btrfs_lookup_dentry (struct inode *dir,struct dentry *dentry);int btrfs_set_inode_index (struct btrfs_inode *dir,u64 *index); int btrfs_unlink_inode(struct btrfs_trans_handle *trans,
fs/btrfs/ioctl.c +2 -2
@@ -1395,8 +1395,8 @@ int btrfs_defrag_file(struct inode *inode, struct file *file,if (i + cluster > ra_index) { ra_index =max (i, ra_index); -btrfs_force_ra (inode->i_mapping, ra, file, ra_index, - cluster); +page_cache_sync_readahead (inode->i_mapping, ra, + file, ra_index, cluster); ra_index += cluster; }
fs/btrfs/send.c +1 -1
@@ -4733,7 +4733,7 @@ static ssize_t fill_read_buf(struct send_ctx *sctx, u64 offset, u32 len)/* initial readahead */ memset (&sctx->ra,0 ,sizeof (struct file_ra_state ));file_ra_state_init (&sctx->ra, inode->i_mapping); -btrfs_force_ra (inode->i_mapping, &sctx->ra,NULL , index, +page_cache_sync_readahead (inode->i_mapping, &sctx->ra,NULL , index, last_index - index +1 );while (index <= last_index) {
Signature · 1 line
2.13.0
David Sterba
maintainerPATCH 4/4 btrfs: drop chunk locks at the end of close_ctree
In reply to David SterbaThe pinned chunks might be left over so we clean them but at this point of close_ctree, there's noone to race with, the locking can be removed.
Signed-off-by David Sterba <[email protected]>
--- fs/btrfs/disk-io.c | 2 -- 1 file changed, 2 deletions(-)
fs/btrfs/disk-io.c +0 -2
@@ -3995,7 +3995,6 @@ void close_ctree(struct btrfs_fs_info *fs_info)__btrfs_free_block_rsv (root->orphan_block_rsv); root->orphan_block_rsv =NULL ; -mutex_lock (&fs_info->chunk_mutex);while (!list_empty (&fs_info->pinned_chunks)) {struct extent_map *em;
@@ -4004,7 +4003,6 @@ void close_ctree(struct btrfs_fs_info *fs_info)list_del_init (&em->list);free_extent_map (em); } -mutex_unlock (&fs_info->chunk_mutex); } int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid,
Signature · 1 line
2.13.0