]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
rx: Refactor transmit queue wakeup
authorSimon Wilkinson <sxw@your-file-system.com>
Mon, 25 Oct 2010 08:52:10 +0000 (09:52 +0100)
committerDerrick Brashear <shadow@dementia.org>
Wed, 27 Oct 2010 00:26:05 +0000 (17:26 -0700)
Refactor all of the places where we wake up the transmit queue into
a common helper function.

Reviewed-on: http://gerrit.openafs.org/3136
Reviewed-by: Jeffrey Altman <jaltman@openafs.org>
Tested-by: Derrick Brashear <shadow@dementia.org>
Reviewed-by: Derrick Brashear <shadow@dementia.org>
(cherry picked from commit 802d50bc4e220b9bf404ac1ee36720023986d98e)
Change-Id: I4db12f228e5f10f7ab4a68604828823f6b783677
Reviewed-on: http://gerrit.openafs.org/3153

src/rx/rx.c

index cb1d4a843ef2a8dadc77778ce7ca98c3a08a2874..4b1ebb9a7396bfcf72f5af7df0d04c074ee2289b 100644 (file)
@@ -1186,6 +1186,21 @@ static void rxi_WaitforTQBusy(struct rx_call *call) {
 }
 #endif
 
+static void
+rxi_WakeUpTransmitQueue(struct rx_call *call)
+{
+    if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
+       dpf(("call %"AFS_PTR_FMT" has %d waiters and flags %d\n",
+            call, call->tqWaiters, call->flags));
+#ifdef RX_ENABLE_LOCKS
+       osirx_AssertMine(&call->lock, "rxi_Start start");
+       CV_BROADCAST(&call->cv_tq);
+#else /* RX_ENABLE_LOCKS */
+       osi_rxWakeup(&call->tq);
+#endif /* RX_ENABLE_LOCKS */
+    }
+}
+
 /* Start a new rx remote procedure call, on the specified connection.
  * If wait is set to 1, wait for a free call channel; otherwise return
  * 0.  Maxtime gives the maximum number of seconds this call may take,
@@ -4678,13 +4693,7 @@ rxi_ClearTransmitQueue(struct rx_call *call, int force)
         call->tqc -=
 #endif /* RXDEBUG_PACKET */
             rxi_FreePackets(0, &call->tq);
-       if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
-#ifdef RX_ENABLE_LOCKS
-           CV_BROADCAST(&call->cv_tq);
-#else /* RX_ENABLE_LOCKS */
-           osi_rxWakeup(&call->tq);
-#endif /* RX_ENABLE_LOCKS */
-       }
+       rxi_WakeUpTransmitQueue(call);
 #ifdef AFS_GLOBAL_RXLOCK_KERNEL
        call->flags &= ~RX_CALL_TQ_CLEARME;
     }
@@ -5719,16 +5728,7 @@ rxi_Start(struct rxevent *event,
                 */
                if (call->flags & RX_CALL_FAST_RECOVER_WAIT) {
                    call->flags &= ~RX_CALL_TQ_BUSY;
-                   if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
-                       dpf(("call %"AFS_PTR_FMT" has %d waiters and flags %d\n",
-                             call, call->tqWaiters, call->flags));
-#ifdef RX_ENABLE_LOCKS
-                       osirx_AssertMine(&call->lock, "rxi_Start start");
-                       CV_BROADCAST(&call->cv_tq);
-#else /* RX_ENABLE_LOCKS */
-                       osi_rxWakeup(&call->tq);
-#endif /* RX_ENABLE_LOCKS */
-                   }
+                   rxi_WakeUpTransmitQueue(call);
                    return;
                }
                if (call->error) {
@@ -5739,16 +5739,7 @@ rxi_Start(struct rxevent *event,
                     if (rx_stats_active)
                         rx_MutexIncrement(rx_tq_debug.rxi_start_aborted, rx_stats_mutex);
                    call->flags &= ~RX_CALL_TQ_BUSY;
-                   if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
-                       dpf(("call error %d while xmit %p has %d waiters and flags %d\n",
-                             call->error, call, call->tqWaiters, call->flags));
-#ifdef RX_ENABLE_LOCKS
-                       osirx_AssertMine(&call->lock, "rxi_Start middle");
-                       CV_BROADCAST(&call->cv_tq);
-#else /* RX_ENABLE_LOCKS */
-                       osi_rxWakeup(&call->tq);
-#endif /* RX_ENABLE_LOCKS */
-                   }
+                   rxi_WakeUpTransmitQueue(call);
                    rxi_CallError(call, call->error);
                    return;
                }
@@ -5835,16 +5826,7 @@ rxi_Start(struct rxevent *event,
             * protected by the global lock.
             */
            call->flags &= ~RX_CALL_TQ_BUSY;
-           if (call->tqWaiters || (call->flags & RX_CALL_TQ_WAIT)) {
-               dpf(("call %"AFS_PTR_FMT" has %d waiters and flags %d\n",
-                      call, call->tqWaiters, call->flags));
-#ifdef RX_ENABLE_LOCKS
-               osirx_AssertMine(&call->lock, "rxi_Start end");
-               CV_BROADCAST(&call->cv_tq);
-#else /* RX_ENABLE_LOCKS */
-               osi_rxWakeup(&call->tq);
-#endif /* RX_ENABLE_LOCKS */
-           }
+           rxi_WakeUpTransmitQueue(call);
        } else {
            call->flags |= RX_CALL_NEED_START;
        }