]> git.baikalelectronics.ru Git - kernel.git/commitdiff
btrfs: move btrfs_readpage to extent_io.c
authorChristoph Hellwig <hch@lst.de>
Fri, 15 Apr 2022 14:33:24 +0000 (16:33 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 16 May 2022 15:03:14 +0000 (17:03 +0200)
Keep btrfs_readpage next to btrfs_do_readpage and the other address
space operations.  This allows to keep submit_one_bio and
struct btrfs_bio_ctrl file local in extent_io.c.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h
fs/btrfs/extent_io.c
fs/btrfs/extent_io.h
fs/btrfs/inode.c

index 580a392d7c379ffdc6bb57803b0066cb05cca656..5b7e948ea6516452f87b52eabfa384d753af016c 100644 (file)
@@ -3313,7 +3313,6 @@ void btrfs_split_delalloc_extent(struct inode *inode,
                                 struct extent_state *orig, u64 split);
 void btrfs_set_range_writeback(struct btrfs_inode *inode, u64 start, u64 end);
 vm_fault_t btrfs_page_mkwrite(struct vm_fault *vmf);
-int btrfs_readpage(struct file *file, struct page *page);
 void btrfs_evict_inode(struct inode *inode);
 int btrfs_write_inode(struct inode *inode, struct writeback_control *wbc);
 struct inode *btrfs_alloc_inode(struct super_block *sb);
index 779123e68d7b63084ae30009240100aac1f08696..74e40cf2d2d08f368e1f66dfb010eb4c4bb7e762 100644 (file)
@@ -137,6 +137,17 @@ struct tree_entry {
        struct rb_node rb_node;
 };
 
+/*
+ * Structure to record info about the bio being assembled, and other info like
+ * how many bytes are there before stripe/ordered extent boundary.
+ */
+struct btrfs_bio_ctrl {
+       struct bio *bio;
+       unsigned long bio_flags;
+       u32 len_to_stripe_boundary;
+       u32 len_to_oe_boundary;
+};
+
 struct extent_page_data {
        struct btrfs_bio_ctrl bio_ctrl;
        /* tells writepage not to lock the state bits for this range
@@ -166,7 +177,7 @@ static int add_extent_changeset(struct extent_state *state, u32 bits,
        return ret;
 }
 
-void submit_one_bio(struct bio *bio, int mirror_num, unsigned long bio_flags)
+static void submit_one_bio(struct bio *bio, int mirror_num, unsigned long bio_flags)
 {
        struct extent_io_tree *tree = bio->bi_private;
 
@@ -3604,7 +3615,7 @@ __get_extent_map(struct inode *inode, struct page *page, size_t pg_offset,
  * XXX JDM: This needs looking at to ensure proper page locking
  * return 0 on success, otherwise return error
  */
-int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
+static int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
                      struct btrfs_bio_ctrl *bio_ctrl,
                      unsigned int read_flags, u64 *prev_em_start)
 {
@@ -3793,6 +3804,26 @@ out:
        return ret;
 }
 
+int btrfs_readpage(struct file *file, struct page *page)
+{
+       struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
+       u64 start = page_offset(page);
+       u64 end = start + PAGE_SIZE - 1;
+       struct btrfs_bio_ctrl bio_ctrl = { 0 };
+       int ret;
+
+       btrfs_lock_and_flush_ordered_range(inode, start, end, NULL);
+
+       ret = btrfs_do_readpage(page, NULL, &bio_ctrl, 0, NULL);
+       /*
+        * If btrfs_do_readpage() failed we will want to submit the assembled
+        * bio to do the cleanup.
+        */
+       if (bio_ctrl.bio)
+               submit_one_bio(bio_ctrl.bio, 0, bio_ctrl.bio_flags);
+       return ret;
+}
+
 static inline void contiguous_readpages(struct page *pages[], int nr_pages,
                                        u64 start, u64 end,
                                        struct extent_map **em_cached,
index 9a283b2358b832736261bd947d04f19d2c5cedbb..c94df8e2ab9d6b29b052836873a0d0c3ccbdc0ce 100644 (file)
@@ -102,17 +102,6 @@ struct extent_buffer {
 #endif
 };
 
-/*
- * Structure to record info about the bio being assembled, and other info like
- * how many bytes are there before stripe/ordered extent boundary.
- */
-struct btrfs_bio_ctrl {
-       struct bio *bio;
-       unsigned long bio_flags;
-       u32 len_to_stripe_boundary;
-       u32 len_to_oe_boundary;
-};
-
 /*
  * Structure to record how many bytes and which ranges are set/cleared
  */
@@ -178,10 +167,7 @@ typedef struct extent_map *(get_extent_t)(struct btrfs_inode *inode,
 int try_release_extent_mapping(struct page *page, gfp_t mask);
 int try_release_extent_buffer(struct page *page);
 
-void submit_one_bio(struct bio *bio, int mirror_num, unsigned long bio_flags);
-int btrfs_do_readpage(struct page *page, struct extent_map **em_cached,
-                     struct btrfs_bio_ctrl *bio_ctrl,
-                     unsigned int read_flags, u64 *prev_em_start);
+int btrfs_readpage(struct file *file, struct page *page);
 int extent_write_full_page(struct page *page, struct writeback_control *wbc);
 int extent_write_locked_range(struct inode *inode, u64 start, u64 end);
 int extent_writepages(struct address_space *mapping,
index 44b7c9a7c84db7cb0c3c74264ec171311bb18b37..0b87fdeb7079d754a053c64cdb748c50dfd21932 100644 (file)
@@ -8136,26 +8136,6 @@ static int btrfs_fiemap(struct inode *inode, struct fiemap_extent_info *fieinfo,
        return extent_fiemap(BTRFS_I(inode), fieinfo, start, len);
 }
 
-int btrfs_readpage(struct file *file, struct page *page)
-{
-       struct btrfs_inode *inode = BTRFS_I(page->mapping->host);
-       u64 start = page_offset(page);
-       u64 end = start + PAGE_SIZE - 1;
-       struct btrfs_bio_ctrl bio_ctrl = { 0 };
-       int ret;
-
-       btrfs_lock_and_flush_ordered_range(inode, start, end, NULL);
-
-       ret = btrfs_do_readpage(page, NULL, &bio_ctrl, 0, NULL);
-       /*
-        * If btrfs_do_readpage() failed we will want to submit the assembled
-        * bio to do the cleanup.
-        */
-       if (bio_ctrl.bio)
-               submit_one_bio(bio_ctrl.bio, 0, bio_ctrl.bio_flags);
-       return ret;
-}
-
 static int btrfs_writepage(struct page *page, struct writeback_control *wbc)
 {
        struct inode *inode = page->mapping->host;