mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
Teach zpool scrub to scrub only blocks in error log
Added a flag '-e' in zpool scrub to scrub only blocks in error log. A user can pause, resume and cancel the error scrub by passing additional command line arguments -p -s just like a regular scrub. This involves adding a new flag, creating new libzfs interfaces, a new ioctl, and the actual iteration and read-issuing logic. Error scrubbing is executed in multiple txg to make sure pool performance is not affected. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tony Hutter <hutter2@llnl.gov> Co-authored-by: TulsiJain tulsi.jain@delphix.com Signed-off-by: George Amanakis <gamanakis@gmail.com> Closes #8995 Closes #12355
This commit is contained in:
committed by
Brian Behlendorf
parent
e34e15ed6d
commit
482eeef804
@@ -1155,6 +1155,7 @@ extern void zfs_post_state_change(spa_t *spa, vdev_t *vd, uint64_t laststate);
|
||||
extern void zfs_post_autoreplace(spa_t *spa, vdev_t *vd);
|
||||
extern uint64_t spa_approx_errlog_size(spa_t *spa);
|
||||
extern int spa_get_errlog(spa_t *spa, void *uaddr, uint64_t *count);
|
||||
extern uint64_t spa_get_last_errlog_size(spa_t *spa);
|
||||
extern void spa_errlog_rotate(spa_t *spa);
|
||||
extern void spa_errlog_drain(spa_t *spa);
|
||||
extern void spa_errlog_sync(spa_t *spa, uint64_t txg);
|
||||
@@ -1165,6 +1166,13 @@ extern void spa_swap_errlog(spa_t *spa, uint64_t new_head_ds,
|
||||
extern void sync_error_list(spa_t *spa, avl_tree_t *t, uint64_t *obj,
|
||||
dmu_tx_t *tx);
|
||||
extern void spa_upgrade_errlog(spa_t *spa, dmu_tx_t *tx);
|
||||
extern int find_top_affected_fs(spa_t *spa, uint64_t head_ds,
|
||||
zbookmark_err_phys_t *zep, uint64_t *top_affected_fs);
|
||||
extern int find_birth_txg(struct dsl_dataset *ds, zbookmark_err_phys_t *zep,
|
||||
uint64_t *birth_txg);
|
||||
extern void zep_to_zb(uint64_t dataset, zbookmark_err_phys_t *zep,
|
||||
zbookmark_phys_t *zb);
|
||||
extern void name_to_errphys(char *buf, zbookmark_err_phys_t *zep);
|
||||
|
||||
/* vdev cache */
|
||||
extern void vdev_cache_stat_init(void);
|
||||
|
||||
Reference in New Issue
Block a user