]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit - contrib/groff/src/roff/troff/node.cpp
MFV r318927: 8025 dbuf_read() creates unnecessary zio_root() for bonus buf
authorAndriy Gapon <avg@FreeBSD.org>
Fri, 26 May 2017 11:30:55 +0000 (11:30 +0000)
committerAndriy Gapon <avg@FreeBSD.org>
Fri, 26 May 2017 11:30:55 +0000 (11:30 +0000)
commit9c2a3c861fc2cd6372d911d62e1fedd298f4cd03
treeb76223f499af6c78e1020e70bd706121d890703f
parentebaf416f9518ac02adbd54a517ea96b74a9b932c
parent1c42c71f38d4748c7ad459b304c1f2f761527891
MFV r318927: 8025 dbuf_read() creates unnecessary zio_root() for bonus buf

illumos/illumos-gate@def4fac5882b4ca67bd0f4a53509b6d1fa8ae14e
https://github.com/illumos/illumos-gate/commit/def4fac5882b4ca67bd0f4a53509b6d1fa8ae14e

https://www.illumos.org/issues/8025
  dbuf_read() creates a zio_root() to track and wait for all the zio's
  that may happen as part of this call. However, if the blkptr_t for
  this buffer is NULL or a hole, we will not create any more zio's, so
  this zio_root() is unnecessary. This is always the case when calling
  dbuf_read() on a bonus buffer, because it has no blkptr (it's part of
  the containing dnode). For workloads that read a lot of bonus buffers
  (e.g. file creation and removal), creating and destroying these
  unnecessary zio's can decrease performance by around 3%.

Reviewed by: Dan Kimmel <dan.kimmel@delphix.com>
Reviewed by: Pavel Zakharov <pavel.zakharov@delphix.com>
Reviewed by: Prashanth Sreenivasa <pks@delphix.com>
Approved by: Robert Mustacchi <rm@joyent.com>
Author: Matthew Ahrens <mahrens@delphix.com>
sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c