btrfs: remove unused raid56 functions which were dedicated for scrub
authorQu Wenruo <wqu@suse.com>
Wed, 12 Apr 2023 06:47:50 +0000 (14:47 +0800)
committerDavid Sterba <dsterba@suse.com>
Mon, 17 Apr 2023 17:52:18 +0000 (19:52 +0200)
Since the scrub rework, the following RAID56 functions are no longer
called:

- raid56_add_scrub_pages()
- raid56_alloc_missing_rbio()
- raid56_submit_missing_rbio()

Those functions are all utilized by scrub to handle missing device cases
for RAID56.

However the new scrub code handle them in a completely different way:

- If it's data stripe, go recovery path through btrfs_submit_bio()
- If it's P/Q stripe, it would be handled through
  raid56_parity_submit_scrub_rbio()
  And that function would handle dev-replace and repair properly.

Thus we can safely remove those functions.

Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/raid56.c
fs/btrfs/raid56.h

index ed6343f..2fab37f 100644 (file)
@@ -2376,23 +2376,6 @@ struct btrfs_raid_bio *raid56_parity_alloc_scrub_rbio(struct bio *bio,
        return rbio;
 }
 
-/* Used for both parity scrub and missing. */
-void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page,
-                           unsigned int pgoff, u64 logical)
-{
-       const u32 sectorsize = rbio->bioc->fs_info->sectorsize;
-       int stripe_offset;
-       int index;
-
-       ASSERT(logical >= rbio->bioc->full_stripe_logical);
-       ASSERT(logical + sectorsize <= rbio->bioc->full_stripe_logical +
-                                      BTRFS_STRIPE_LEN * rbio->nr_data);
-       stripe_offset = (int)(logical - rbio->bioc->full_stripe_logical);
-       index = stripe_offset / sectorsize;
-       rbio->bio_sectors[index].page = page;
-       rbio->bio_sectors[index].pgoff = pgoff;
-}
-
 /*
  * We just scrub the parity that we have correct data on the same horizontal,
  * so we needn't allocate all pages for all the stripes.
@@ -2764,33 +2747,3 @@ void raid56_parity_submit_scrub_rbio(struct btrfs_raid_bio *rbio)
        if (!lock_stripe_add(rbio))
                start_async_work(rbio, scrub_rbio_work_locked);
 }
-
-/* The following code is used for dev replace of a missing RAID 5/6 device. */
-
-struct btrfs_raid_bio *
-raid56_alloc_missing_rbio(struct bio *bio, struct btrfs_io_context *bioc)
-{
-       struct btrfs_fs_info *fs_info = bioc->fs_info;
-       struct btrfs_raid_bio *rbio;
-
-       rbio = alloc_rbio(fs_info, bioc);
-       if (IS_ERR(rbio))
-               return NULL;
-
-       rbio->operation = BTRFS_RBIO_REBUILD_MISSING;
-       bio_list_add(&rbio->bio_list, bio);
-       /*
-        * This is a special bio which is used to hold the completion handler
-        * and make the scrub rbio is similar to the other types
-        */
-       ASSERT(!bio->bi_iter.bi_size);
-
-       set_rbio_range_error(rbio, bio);
-
-       return rbio;
-}
-
-void raid56_submit_missing_rbio(struct btrfs_raid_bio *rbio)
-{
-       start_async_work(rbio, recover_rbio_work);
-}
index 6583c22..0f7f31c 100644 (file)
@@ -187,19 +187,12 @@ void raid56_parity_recover(struct bio *bio, struct btrfs_io_context *bioc,
                           int mirror_num);
 void raid56_parity_write(struct bio *bio, struct btrfs_io_context *bioc);
 
-void raid56_add_scrub_pages(struct btrfs_raid_bio *rbio, struct page *page,
-                           unsigned int pgoff, u64 logical);
-
 struct btrfs_raid_bio *raid56_parity_alloc_scrub_rbio(struct bio *bio,
                                struct btrfs_io_context *bioc,
                                struct btrfs_device *scrub_dev,
                                unsigned long *dbitmap, int stripe_nsectors);
 void raid56_parity_submit_scrub_rbio(struct btrfs_raid_bio *rbio);
 
-struct btrfs_raid_bio *
-raid56_alloc_missing_rbio(struct bio *bio, struct btrfs_io_context *bioc);
-void raid56_submit_missing_rbio(struct btrfs_raid_bio *rbio);
-
 int btrfs_alloc_stripe_hash_table(struct btrfs_fs_info *info);
 void btrfs_free_stripe_hash_table(struct btrfs_fs_info *info);