mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00

The old scrub code has different entrance to verify the content, and since we have removed the writeback path, now we can start removing the re-check part, including: - scrub_recover structure - scrub_sector::recover member - function scrub_setup_recheck_block() - function scrub_recheck_block() - function scrub_recheck_block_checksum() - function scrub_repair_block_group_good_copy() - function scrub_repair_sector_from_good_copy() - function scrub_is_page_on_raid56() - function full_stripe_lock() - function search_full_stripe_lock() - function get_full_stripe_logical() - function insert_full_stripe_lock() - function lock_full_stripe() - function unlock_full_stripe() - btrfs_block_group::full_stripe_locks_root member - btrfs_full_stripe_locks_tree structure This infrastructure is to ensure RAID56 scrub is properly handling recovery and P/Q scrub correctly. This is no longer needed, before P/Q scrub we will wait for all the involved data stripes to be scrubbed first, and RAID56 code has internal lock to ensure no race in the same full stripe. - function scrub_print_warning() - function scrub_get_recover() - function scrub_put_recover() - function scrub_handle_errored_block() - function scrub_setup_recheck_block() - function scrub_bio_wait_endio() - function scrub_submit_raid56_bio_wait() - function scrub_recheck_block_on_raid56() - function scrub_recheck_block() - function scrub_recheck_block_checksum() - function scrub_repair_block_from_good_copy() - function scrub_repair_sector_from_good_copy() And two more functions exported temporarily for later cleanup: - alloc_scrub_sector() - alloc_scrub_block() Signed-off-by: Qu Wenruo <wqu@suse.com> Reviewed-by: David Sterba <dsterba@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
31 lines
1.2 KiB
C
31 lines
1.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
|
|
#ifndef BTRFS_SCRUB_H
|
|
#define BTRFS_SCRUB_H
|
|
|
|
int btrfs_scrub_dev(struct btrfs_fs_info *fs_info, u64 devid, u64 start,
|
|
u64 end, struct btrfs_scrub_progress *progress,
|
|
int readonly, int is_dev_replace);
|
|
void btrfs_scrub_pause(struct btrfs_fs_info *fs_info);
|
|
void btrfs_scrub_continue(struct btrfs_fs_info *fs_info);
|
|
int btrfs_scrub_cancel(struct btrfs_fs_info *info);
|
|
int btrfs_scrub_cancel_dev(struct btrfs_device *dev);
|
|
int btrfs_scrub_progress(struct btrfs_fs_info *fs_info, u64 devid,
|
|
struct btrfs_scrub_progress *progress);
|
|
|
|
/* Temporary declaration, would be deleted later. */
|
|
struct scrub_ctx;
|
|
struct scrub_sector;
|
|
struct scrub_block;
|
|
int scrub_find_csum(struct scrub_ctx *sctx, u64 logical, u8 *csum);
|
|
int scrub_add_sector_to_rd_bio(struct scrub_ctx *sctx,
|
|
struct scrub_sector *sector);
|
|
void scrub_sector_get(struct scrub_sector *sector);
|
|
struct scrub_sector *alloc_scrub_sector(struct scrub_block *sblock, u64 logical);
|
|
struct scrub_block *alloc_scrub_block(struct scrub_ctx *sctx,
|
|
struct btrfs_device *dev,
|
|
u64 logical, u64 physical,
|
|
u64 physical_for_dev_replace,
|
|
int mirror_num);
|
|
|
|
#endif
|