mirror of
https://git.proxmox.com/git/mirror_zfs.git
synced 2026-05-22 10:37:35 +03:00
During pool export flush the ARC asynchronously
This also includes removing L2 vdevs asynchronously. This commit also guarantees that spa_load_guid is unique. The zpool reguid feature introduced the spa_load_guid, which is a transient value used for runtime identification purposes in the ARC. This value is not the same as the spa's persistent pool guid. However, the value is seeded from spa_generate_load_guid() which does not check for uniqueness against the spa_load_guid from other pools. Although extremely rare, you can end up with two different pools sharing the same spa_load_guid value! So we guarantee that the value is always unique and additionally not still in use by an async arc flush task. Sponsored-by: Klara, Inc. Sponsored-by: Wasabi Technology, Inc. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Alexander Motin <mav@FreeBSD.org> Reviewed-by: Allan Jude <allan@klarasystems.com> Signed-off-by: Don Brady <don.brady@klarasystems.com> Closes #16215
This commit is contained in:
@@ -378,8 +378,8 @@ typedef struct l2arc_lb_ptr_buf {
|
||||
* L2ARC Internals
|
||||
*/
|
||||
typedef struct l2arc_dev {
|
||||
vdev_t *l2ad_vdev; /* vdev */
|
||||
spa_t *l2ad_spa; /* spa */
|
||||
vdev_t *l2ad_vdev; /* can be NULL during remove */
|
||||
spa_t *l2ad_spa; /* can be NULL during remove */
|
||||
uint64_t l2ad_hand; /* next write location */
|
||||
uint64_t l2ad_start; /* first addr on device */
|
||||
uint64_t l2ad_end; /* last addr on device */
|
||||
@@ -475,8 +475,8 @@ struct arc_buf_hdr {
|
||||
|
||||
arc_buf_contents_t b_type;
|
||||
uint8_t b_complevel;
|
||||
uint8_t b_reserved1; /* used for 4 byte alignment */
|
||||
uint16_t b_reserved2; /* used for 4 byte alignment */
|
||||
uint8_t b_reserved1; /* used for 4 byte alignment */
|
||||
uint16_t b_l2size; /* alignment or L2-only size */
|
||||
arc_buf_hdr_t *b_hash_next;
|
||||
arc_flags_t b_flags;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user