drbd: Moved SIGNAL_ASENDER to the per connection (tconn) flags
authorPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 7 Feb 2011 13:44:14 +0000 (14:44 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Wed, 28 Sep 2011 08:26:57 +0000 (10:26 +0200)
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_int.h
drivers/block/drbd/drbd_receiver.c

index 227c0956e802e4c184acdfae29eb2c5b52cae319..33882c82b1acf51633f00d3642562d7c0b18a5ae 100644 (file)
@@ -757,8 +757,6 @@ enum {
 /* flag bits per mdev */
 enum {
        CREATE_BARRIER,         /* next P_DATA is preceded by a P_BARRIER */
-       SIGNAL_ASENDER,         /* whether asender wants to be interrupted */
-
        UNPLUG_QUEUED,          /* only relevant with kernel 2.4 */
        UNPLUG_REMOTE,          /* sending a "UnplugRemote" could help */
        MD_DIRTY,               /* current uuids and flags not yet on disk */
@@ -911,6 +909,7 @@ enum {
        NET_CONGESTED,          /* The data socket is congested */
        DISCARD_CONCURRENT,     /* Set on one node, cleared on the peer! */
        SEND_PING,              /* whether asender should send a ping asap */
+       SIGNAL_ASENDER,         /* whether asender wants to be interrupted */
 };
 
 struct drbd_tconn {                    /* is a resource from the config file */
@@ -1861,7 +1860,7 @@ drbd_queue_work(struct drbd_work_queue *q, struct drbd_work *w)
 
 static inline void wake_asender(struct drbd_conf *mdev)
 {
-       if (test_bit(SIGNAL_ASENDER, &mdev->flags))
+       if (test_bit(SIGNAL_ASENDER, &mdev->tconn->flags))
                force_sig(DRBD_SIG, mdev->tconn->asender.task);
 }
 
index 54bf7a5c2252c5a9d4fb7b0520cf7d726c9f54ad..b4c357e4ad8233784ba7ede9c91bc2e2e0574ada 100644 (file)
@@ -4580,12 +4580,12 @@ int drbd_asender(struct drbd_thread *thi)
                        3 < atomic_read(&mdev->unacked_cnt))
                        drbd_tcp_cork(mdev->tconn->meta.socket);
                while (1) {
-                       clear_bit(SIGNAL_ASENDER, &mdev->flags);
+                       clear_bit(SIGNAL_ASENDER, &mdev->tconn->flags);
                        flush_signals(current);
                        if (!drbd_process_done_ee(mdev))
                                goto reconnect;
                        /* to avoid race with newly queued ACKs */
-                       set_bit(SIGNAL_ASENDER, &mdev->flags);
+                       set_bit(SIGNAL_ASENDER, &mdev->tconn->flags);
                        spin_lock_irq(&mdev->tconn->req_lock);
                        empty = list_empty(&mdev->done_ee);
                        spin_unlock_irq(&mdev->tconn->req_lock);
@@ -4605,7 +4605,7 @@ int drbd_asender(struct drbd_thread *thi)
 
                rv = drbd_recv_short(mdev, mdev->tconn->meta.socket,
                                     buf, expect-received, 0);
-               clear_bit(SIGNAL_ASENDER, &mdev->flags);
+               clear_bit(SIGNAL_ASENDER, &mdev->tconn->flags);
 
                flush_signals(current);
 
@@ -4688,7 +4688,7 @@ disconnect:
                drbd_force_state(mdev, NS(conn, C_DISCONNECTING));
                drbd_md_sync(mdev);
        }
-       clear_bit(SIGNAL_ASENDER, &mdev->flags);
+       clear_bit(SIGNAL_ASENDER, &mdev->tconn->flags);
 
        D_ASSERT(mdev->state.conn < C_CONNECTED);
        dev_info(DEV, "asender terminated\n");