Print this page
2882 implement libzfs_core
2883 changing "canmount" property to "on" should not always remount dataset
2900 "zfs snapshot" should be able to create multiple, arbitrary snapshots at once
Reviewed by: George Wilson <george.wilson@delphix.com>
Reviewed by: Chris Siden <christopher.siden@delphix.com>
Reviewed by: Garrett D'Amore <garrett@damore.org>
Reviewed by: Bill Pijewski <wdp@joyent.com>
Reviewed by: Dan Kruchinin <dan.kruchinin@gmail.com>

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/fs/zfs/rrwlock.c
          +++ new/usr/src/uts/common/fs/zfs/rrwlock.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 2009 Sun Microsystems, Inc.  All rights reserved.
  23   23   * Use is subject to license terms.
  24   24   */
       25 +/*
       26 + * Copyright (c) 2012 by Delphix. All rights reserved.
       27 + */
  25   28  
  26   29  #include <sys/refcount.h>
  27   30  #include <sys/rrwlock.h>
  28   31  
  29   32  /*
  30   33   * This file contains the implementation of a re-entrant read
  31   34   * reader/writer lock (aka "rrwlock").
  32   35   *
  33   36   * This is a normal reader/writer lock with the additional feature
  34   37   * of allowing threads who have already obtained a read lock to
↓ open down ↓ 220 lines elided ↑ open up ↑
 255  258          if (rw == RW_WRITER) {
 256  259                  held = (rrl->rr_writer == curthread);
 257  260          } else {
 258  261                  held = (!refcount_is_zero(&rrl->rr_anon_rcount) ||
 259  262                      !refcount_is_zero(&rrl->rr_linked_rcount));
 260  263          }
 261  264          mutex_exit(&rrl->rr_lock);
 262  265  
 263  266          return (held);
 264  267  }
      268 +
      269 +void
      270 +rrw_tsd_destroy(void *arg)
      271 +{
      272 +        rrw_node_t *rn = arg;
      273 +        if (rn != NULL) {
      274 +                panic("thread %p terminating with rrw lock %p held",
      275 +                    (void *)curthread, (void *)rn->rn_rrl);
      276 +        }
      277 +}
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX