drbd: drbd_process_done_ee(): Return 0 upon success and an error code otherwise
authorAndreas Gruenbacher <agruen@linbit.com>
Wed, 16 Mar 2011 16:16:12 +0000 (17:16 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:44:44 +0000 (16:44 +0100)
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_receiver.c

index d3e3188575e635e90e5a6f30cd2bd68352a4275f..03c21e5946301bedf94b6f79e5f61065c8d047fa 100644 (file)
@@ -409,7 +409,7 @@ static int drbd_process_done_ee(struct drbd_conf *mdev)
        LIST_HEAD(work_list);
        LIST_HEAD(reclaimed);
        struct drbd_peer_request *peer_req, *t;
-       int ok = 1;
+       int err = 0;
 
        spin_lock_irq(&mdev->tconn->req_lock);
        reclaim_net_ee(mdev, &reclaimed);
@@ -424,13 +424,17 @@ static int drbd_process_done_ee(struct drbd_conf *mdev)
         * all ignore the last argument.
         */
        list_for_each_entry_safe(peer_req, t, &work_list, w.list) {
+               int err2;
+
                /* list_del not necessary, next/prev members not touched */
-               ok = !peer_req->w.cb(&peer_req->w, !ok) && ok;
+               err2 = peer_req->w.cb(&peer_req->w, !!err);
+               if (!err)
+                       err = err2;
                drbd_free_ee(mdev, peer_req);
        }
        wake_up(&mdev->ee_wait);
 
-       return ok;
+       return err;
 }
 
 void _drbd_wait_ee_list_empty(struct drbd_conf *mdev, struct list_head *head)
@@ -4711,7 +4715,7 @@ static int tconn_process_done_ee(struct drbd_tconn *tconn)
                clear_bit(SIGNAL_ASENDER, &tconn->flags);
                flush_signals(current);
                idr_for_each_entry(&tconn->volumes, mdev, i) {
-                       if (!drbd_process_done_ee(mdev))
+                       if (drbd_process_done_ee(mdev))
                                return 1; /* error */
                }
                set_bit(SIGNAL_ASENDER, &tconn->flags);