Print this page
NEX-20218 Backport Illumos #9474 txg_kick() fails to see that we are quiescing, forcing transactions to their next stages without leaving them accumulate changes
MFV illumos-gate@fa41d87de9ec9000964c605eb01d6dc19e4a1abe
    9464 txg_kick() fails to see that we are quiescing, forcing transactions to their next stages without leaving them accumulate changes
    Reviewed by: Matt Ahrens <matt@delphix.com>
    Reviewed by: Brad Lewis <brad.lewis@delphix.com>
    Reviewed by: Andriy Gapon <avg@FreeBSD.org>
    Approved by: Dan McDonald <danmcd@joyent.com>

@@ -23,11 +23,11 @@
  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
  * Use is subject to license terms.
  */
 
 /*
- * Copyright (c) 2013 by Delphix. All rights reserved.
+ * Copyright (c) 2013, 2017 by Delphix. All rights reserved.
  */
 
 #ifndef _SYS_TXG_IMPL_H
 #define _SYS_TXG_IMPL_H
 

@@ -90,10 +90,11 @@
 typedef struct tx_state {
         tx_cpu_t        *tx_cpu;        /* protects access to tx_open_txg */
         kmutex_t        tx_sync_lock;   /* protects the rest of this struct */
 
         uint64_t        tx_open_txg;    /* currently open txg id */
+        uint64_t        tx_quiescing_txg; /* currently quiescing txg id */
         uint64_t        tx_quiesced_txg; /* quiesced txg waiting for sync */
         uint64_t        tx_syncing_txg; /* currently syncing txg id */
         uint64_t        tx_synced_txg;  /* last synced txg id */
 
         hrtime_t        tx_open_time;   /* start time of tx_open_txg */