mirror of
https://git.freebsd.org/src.git
synced 2026-01-16 23:02:24 +00:00
Fix gang write late_arrival bug
When a write comes in via dmu_sync_late_arrival, its txg is equal to the open TXG. If that write gangs, and we have not yet activated the new gang header feature, and the gang header we pick can store a larger gang header, we will try to schedule the upgrade for the open TXG + 1. In debug mode, this causes an assertion to trip. This PR sets the TXG for activating the feature to be the larger of either the current open TXG or the syncing TXG + 1. Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Paul Dagnelie <paul.dagnelie@klarasystems.com> Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Closes #17824
This commit is contained in:
parent
7e7c360256
commit
8c225ff1b4
1 changed files with 2 additions and 2 deletions
|
|
@ -3318,8 +3318,8 @@ zio_write_gang_block(zio_t *pio, metaslab_class_t *mc)
|
|||
} else if (any_failed && candidate > SPA_OLD_GANGBLOCKSIZE &&
|
||||
spa_feature_is_enabled(spa, SPA_FEATURE_DYNAMIC_GANG_HEADER) &&
|
||||
!spa_feature_is_active(spa, SPA_FEATURE_DYNAMIC_GANG_HEADER)) {
|
||||
dmu_tx_t *tx =
|
||||
dmu_tx_create_assigned(spa->spa_dsl_pool, txg + 1);
|
||||
dmu_tx_t *tx = dmu_tx_create_assigned(spa->spa_dsl_pool,
|
||||
MAX(txg, spa_syncing_txg(spa) + 1));
|
||||
dsl_sync_task_nowait(spa->spa_dsl_pool,
|
||||
zio_update_feature,
|
||||
(void *)SPA_FEATURE_DYNAMIC_GANG_HEADER, tx);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue