svn commit: r258382 - vendor/illumos/dist/lib/libzpool/common
Andriy Gapon
avg at FreeBSD.org
Wed Nov 20 11:05:08 UTC 2013
Author: avg
Date: Wed Nov 20 11:05:07 2013
New Revision: 258382
URL: http://svnweb.freebsd.org/changeset/base/258382
Log:
4161 deadlock between zfs_read() and zfs_putpage()
illumos/illumos-gate at b3d32f0ceb59362ba287dcfd6de471e98bfc7fa9
Modified:
vendor/illumos/dist/lib/libzpool/common/kernel.c
Modified: vendor/illumos/dist/lib/libzpool/common/kernel.c
==============================================================================
--- vendor/illumos/dist/lib/libzpool/common/kernel.c Wed Nov 20 11:04:14 2013 (r258381)
+++ vendor/illumos/dist/lib/libzpool/common/kernel.c Wed Nov 20 11:05:07 2013 (r258382)
@@ -21,6 +21,7 @@
/*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2012 by Delphix. All rights reserved.
+ * Copyright (c) 2013, Joyent, Inc. All rights reserved.
*/
#include <assert.h>
@@ -221,10 +222,10 @@ rw_enter(krwlock_t *rwlp, krw_t rw)
ASSERT(rwlp->rw_owner != (void *)-1UL);
ASSERT(rwlp->rw_owner != curthread);
- if (rw == RW_READER)
- VERIFY(rw_rdlock(&rwlp->rw_lock) == 0);
- else
+ if (rw == RW_WRITER)
VERIFY(rw_wrlock(&rwlp->rw_lock) == 0);
+ else
+ VERIFY(rw_rdlock(&rwlp->rw_lock) == 0);
rwlp->rw_owner = curthread;
}
@@ -247,10 +248,10 @@ rw_tryenter(krwlock_t *rwlp, krw_t rw)
ASSERT(rwlp->initialized == B_TRUE);
ASSERT(rwlp->rw_owner != (void *)-1UL);
- if (rw == RW_READER)
- rv = rw_tryrdlock(&rwlp->rw_lock);
- else
+ if (rw == RW_WRITER)
rv = rw_trywrlock(&rwlp->rw_lock);
+ else
+ rv = rw_tryrdlock(&rwlp->rw_lock);
if (rv == 0) {
rwlp->rw_owner = curthread;
More information about the svn-src-vendor
mailing list