Print this page
3740 Poor ZFS send / receive performance due to snapshot hold / release processing
Submitted by: Steven Hartland <steven.hartland@multiplay.co.uk>
Reviewed by: Matthew Ahrens <mahrens@delphix.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/ztest/ztest.c
          +++ new/usr/src/cmd/ztest/ztest.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  /*
  22   22   * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
  23   23   * Copyright (c) 2012 by Delphix. All rights reserved.
  24   24   * Copyright 2011 Nexenta Systems, Inc.  All rights reserved.
       25 + * Copyright (c) 2013 Steven Hartland. All rights reserved.
  25   26   */
  26   27  
  27   28  /*
  28   29   * The objective of this program is to provide a DMU/ZAP/SPA stress test
  29   30   * that runs entirely in userland, is easy to use, and easy to extend.
  30   31   *
  31   32   * The overall design of the ztest program is as follows:
  32   33   *
  33   34   * (1) For each major functional area (e.g. adding vdevs to a pool,
  34   35   *     creating and destroying datasets, reading and writing objects, etc)
↓ open down ↓ 4669 lines elided ↑ open up ↑
4704 4705          }
4705 4706  
4706 4707          error = dsl_destroy_snapshot(fullname, B_TRUE);
4707 4708          if (error) {
4708 4709                  fatal(0, "dsl_destroy_snapshot(%s, B_TRUE) = %d",
4709 4710                      fullname, error);
4710 4711          }
4711 4712  
4712 4713          error = user_release_one(fullname, tag);
4713 4714          if (error)
4714      -                fatal(0, "user_release_one(%s)", fullname, tag);
     4715 +                fatal(0, "user_release_one(%s, %s) = %d", fullname, tag, error);
4715 4716  
4716 4717          VERIFY3U(dmu_objset_hold(fullname, FTAG, &origin), ==, ENOENT);
4717 4718  
4718 4719  out:
4719 4720          (void) rw_unlock(&ztest_name_lock);
4720 4721  }
4721 4722  
4722 4723  /*
4723 4724   * Inject random faults into the on-disk data.
4724 4725   */
↓ open down ↓ 1497 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX