Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 May 2010 11:56:42 +0000 (UTC)
From:      Pawel Jakub Dawidek <pjd@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs vdev_geom.c
Message-ID:  <201005161156.o4GBupmi008077@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
pjd         2010-05-16 11:56:42 UTC

  FreeBSD src repository

  Modified files:
    sys/cddl/contrib/opensolaris/uts/common/fs/zfs vdev_geom.c 
  Log:
  SVN rev 208142 on 2010-05-16 11:56:42Z by pjd
  
  The whole point of having dedicated worker thread for each leaf VDEV was to
  avoid calling zio_interrupt() from geom_up thread context. It turns out that
  when provider is forcibly removed from the system and we kill worker thread
  there can still be some ZIOs pending. To complete pending ZIOs when there is
  no worker thread anymore we still have to call zio_interrupt() from geom_up
  context. To avoid this race just remove use of worker threads altogether.
  This should be more or less fine, because I also thought that zio_interrupt()
  does more work, but it only makes small UMA allocation with M_WAITOK.
  It also saves one context switch per I/O request.
  
  PR:             kern/145339
  Reported by:    Alex Bakhtin <Alex.Bakhtin@gmail.com>
  MFC after:      1 week
  
  Revision  Changes    Path
  1.21      +21 -104   src/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201005161156.o4GBupmi008077>