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,33 ****
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
  /*
!  * Copyright (c) 2013 by Delphix. All rights reserved.
   */
  
  #ifndef _SYS_TXG_IMPL_H
  #define _SYS_TXG_IMPL_H
  
--- 23,33 ----
   * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
   * Use is subject to license terms.
   */
  
  /*
!  * Copyright (c) 2013, 2017 by Delphix. All rights reserved.
   */
  
  #ifndef _SYS_TXG_IMPL_H
  #define _SYS_TXG_IMPL_H
  
*** 90,99 ****
--- 90,100 ----
  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 */