Print this page
OS-5343 dockerinit gets stuck in zfd_ready, zfd devices not showing up after > 1 hour
Reviewed by: Patrick Mooney <patrick.mooney@joyent.com>
        
*** 20,30 ****
   */
  /*
   * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
   */
  /*
!  * Copyright (c) 2013, Joyent, Inc.  All rights reserved.
   */
  
  /*
   * vnode ops for the /dev filesystem
   *
--- 20,30 ----
   */
  /*
   * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
   */
  /*
!  * Copyright 2016, Joyent, Inc.
   */
  
  /*
   * vnode ops for the /dev filesystem
   *
*** 862,871 ****
--- 862,874 ----
                              "disk %s\n", nm, parent->sdev_path));
                          error = 0;
                  }
          }
  
+         if (error == 0)
+                 i_ddi_di_cache_invalidate();
+ 
          return (error);
  }
  
  /*
   * Some restrictions for this file system:
*** 1186,1195 ****
--- 1189,1199 ----
          sdev_update_timestamps(SDEVTOV(self), kcred,
              AT_CTIME|AT_MTIME|AT_ATIME);
          sdev_update_timestamps(dvp, kcred, AT_MTIME|AT_ATIME);
          if (SDEV_IS_GLOBAL(parent))
                  atomic_inc_ulong(&parent->sdev_gdir_gen);
+         i_ddi_di_cache_invalidate();
  
          /* wake up other threads blocked on looking up this node */
          mutex_enter(&self->sdev_lookup_lock);
          SDEV_UNBLOCK_OTHERS(self, SDEV_LOOKUP);
          mutex_exit(&self->sdev_lookup_lock);
*** 1258,1267 ****
--- 1262,1272 ----
          sdev_update_timestamps(SDEVTOV(self), kcred,
              AT_CTIME|AT_MTIME|AT_ATIME);
          sdev_update_timestamps(dvp, kcred, AT_MTIME|AT_ATIME);
          if (SDEV_IS_GLOBAL(parent))
                  atomic_inc_ulong(&parent->sdev_gdir_gen);
+         i_ddi_di_cache_invalidate();
  
          /* wake up other threads blocked on looking up this node */
          mutex_enter(&self->sdev_lookup_lock);
          SDEV_UNBLOCK_OTHERS(self, SDEV_LOOKUP);
          mutex_exit(&self->sdev_lookup_lock);
*** 1373,1382 ****
--- 1378,1390 ----
                  if (error == EBUSY)
                          error = 0;
  
          }
  
+         if (error == 0)
+                 i_ddi_di_cache_invalidate();
+ 
          return (error);
  }
  
  /*
   * read the contents of a symbolic link