]> xenbits.xensource.com Git - libvirt.git/commitdiff
Revert "virthread: Introduce virRWLockInitPreferWriter"
authorMichal Privoznik <mprivozn@redhat.com>
Tue, 25 Jul 2017 08:31:54 +0000 (10:31 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Tue, 25 Jul 2017 08:56:03 +0000 (10:56 +0200)
This reverts commit 328bd24443d2a345a5832ee48ebba0208f8036ea.

As it turns out, this is not portable and very Linux & glibc
specific. Worse, this may lead to not starving writers on Linux
but everywhere else. Revert this and if the starvation occurs
resolve it.

Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Daniel P. Berrange <berrange@redhat.com>
src/libvirt_private.syms
src/util/virobject.c
src/util/virthread.c
src/util/virthread.h

index 3cc6f4c6e2b84b99eda9b96e91c20fa7ce6c3a79..d98417678708bbf5042e268e796a07242cbd8f4f 100644 (file)
@@ -2733,7 +2733,6 @@ virMutexUnlock;
 virOnce;
 virRWLockDestroy;
 virRWLockInit;
-virRWLockInitPreferWriter;
 virRWLockRead;
 virRWLockUnlock;
 virRWLockWrite;
index 4236abfef7ff99ef6d29223a112388f2ca1cc3bc..b1bb378b461043184200f4ebf8b5b1b837da02dc 100644 (file)
@@ -275,7 +275,7 @@ virObjectRWLockableNew(virClassPtr klass)
     if (!(obj = virObjectNew(klass)))
         return NULL;
 
-    if (virRWLockInitPreferWriter(&obj->lock) < 0) {
+    if (virRWLockInit(&obj->lock) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("Unable to initialize RW lock"));
         virObjectUnref(obj);
index a8dd72f8ba164ac08e91f4fa48297cc686c47300..6c495158f5665804585715abba3c414a87dc329f 100644 (file)
@@ -95,15 +95,6 @@ void virMutexUnlock(virMutexPtr m)
 }
 
 
-/**
- * virRWLockInit:
- * @m: rwlock to init
- *
- * Initializes RW lock using pthread default attributes (which
- * is PTHREAD_RWLOCK_PREFER_READER_NP).
- *
- * Returns 0 on success, -1 otherwise.
- */
 int virRWLockInit(virRWLockPtr m)
 {
     int ret;
@@ -115,32 +106,6 @@ int virRWLockInit(virRWLockPtr m)
     return 0;
 }
 
-
-/**
- * virRWLockInitPreferWriter:
- * @m: rwlock to init
- *
- * Initializes RW lock which prefers writers over readers.
- *
- * Returns 0 on success, -1 otherwise.
- */
-int virRWLockInitPreferWriter(virRWLockPtr m)
-{
-    int ret;
-    pthread_rwlockattr_t attr;
-
-    pthread_rwlockattr_init(&attr);
-    pthread_rwlockattr_setkind_np(&attr, PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP);
-    ret = pthread_rwlock_init(&m->lock, &attr);
-    pthread_rwlockattr_destroy(&attr);
-    if (ret != 0) {
-        errno = ret;
-        return -1;
-    }
-    return 0;
-}
-
-
 void virRWLockDestroy(virRWLockPtr m)
 {
     pthread_rwlock_destroy(&m->lock);
index 18b785af23e21fe2c2b58a851e77a248107556f8..e466d9bf01843a4f4563c05b5d82f4f7663f47d0 100644 (file)
@@ -136,7 +136,6 @@ void virMutexUnlock(virMutexPtr m);
 
 
 int virRWLockInit(virRWLockPtr m) ATTRIBUTE_RETURN_CHECK;
-int virRWLockInitPreferWriter(virRWLockPtr m) ATTRIBUTE_RETURN_CHECK;
 void virRWLockDestroy(virRWLockPtr m);
 
 void virRWLockRead(virRWLockPtr m);