aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/block
diff options
context:
space:
mode:
authorPhilipp Reisner <philipp.reisner@linbit.com>2011-01-19 08:02:01 -0500
committerPhilipp Reisner <philipp.reisner@linbit.com>2011-08-29 05:27:06 -0400
commite6b3ea83bc72e126247b241c1164794a644d6fdc (patch)
tree763f2cdf1c57a33029153238cc0250b483334eb0 /drivers/block
parente42325a57606396539807ff55c24febda39f8d01 (diff)
drbd: moved receiver, worker and asender from mdev to tconn
Patch mostly: sed -i -e 's/mdev->receiver/mdev->tconn->receiver/g' \ -e 's/mdev->worker/mdev->tconn->worker/g' \ -e 's/mdev->asender/mdev->tconn->asender/g' \ *.[ch] Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block')
-rw-r--r--drivers/block/drbd/drbd_bitmap.c24
-rw-r--r--drivers/block/drbd/drbd_int.h9
-rw-r--r--drivers/block/drbd/drbd_main.c44
-rw-r--r--drivers/block/drbd/drbd_nl.c10
-rw-r--r--drivers/block/drbd/drbd_receiver.c14
-rw-r--r--drivers/block/drbd/drbd_worker.c4
6 files changed, 53 insertions, 52 deletions
diff --git a/drivers/block/drbd/drbd_bitmap.c b/drivers/block/drbd/drbd_bitmap.c
index c756b4dbd135..4da4c322fa56 100644
--- a/drivers/block/drbd/drbd_bitmap.c
+++ b/drivers/block/drbd/drbd_bitmap.c
@@ -119,13 +119,13 @@ static void __bm_print_lock_info(struct drbd_conf *mdev, const char *func)
119 if (!__ratelimit(&drbd_ratelimit_state)) 119 if (!__ratelimit(&drbd_ratelimit_state))
120 return; 120 return;
121 dev_err(DEV, "FIXME %s in %s, bitmap locked for '%s' by %s\n", 121 dev_err(DEV, "FIXME %s in %s, bitmap locked for '%s' by %s\n",
122 current == mdev->receiver.task ? "receiver" : 122 current == mdev->tconn->receiver.task ? "receiver" :
123 current == mdev->asender.task ? "asender" : 123 current == mdev->tconn->asender.task ? "asender" :
124 current == mdev->worker.task ? "worker" : current->comm, 124 current == mdev->tconn->worker.task ? "worker" : current->comm,
125 func, b->bm_why ?: "?", 125 func, b->bm_why ?: "?",
126 b->bm_task == mdev->receiver.task ? "receiver" : 126 b->bm_task == mdev->tconn->receiver.task ? "receiver" :
127 b->bm_task == mdev->asender.task ? "asender" : 127 b->bm_task == mdev->tconn->asender.task ? "asender" :
128 b->bm_task == mdev->worker.task ? "worker" : "?"); 128 b->bm_task == mdev->tconn->worker.task ? "worker" : "?");
129} 129}
130 130
131void drbd_bm_lock(struct drbd_conf *mdev, char *why, enum bm_flag flags) 131void drbd_bm_lock(struct drbd_conf *mdev, char *why, enum bm_flag flags)
@@ -142,13 +142,13 @@ void drbd_bm_lock(struct drbd_conf *mdev, char *why, enum bm_flag flags)
142 142
143 if (trylock_failed) { 143 if (trylock_failed) {
144 dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n", 144 dev_warn(DEV, "%s going to '%s' but bitmap already locked for '%s' by %s\n",
145 current == mdev->receiver.task ? "receiver" : 145 current == mdev->tconn->receiver.task ? "receiver" :
146 current == mdev->asender.task ? "asender" : 146 current == mdev->tconn->asender.task ? "asender" :
147 current == mdev->worker.task ? "worker" : current->comm, 147 current == mdev->tconn->worker.task ? "worker" : current->comm,
148 why, b->bm_why ?: "?", 148 why, b->bm_why ?: "?",
149 b->bm_task == mdev->receiver.task ? "receiver" : 149 b->bm_task == mdev->tconn->receiver.task ? "receiver" :
150 b->bm_task == mdev->asender.task ? "asender" : 150 b->bm_task == mdev->tconn->asender.task ? "asender" :
151 b->bm_task == mdev->worker.task ? "worker" : "?"); 151 b->bm_task == mdev->tconn->worker.task ? "worker" : "?");
152 mutex_lock(&b->bm_change); 152 mutex_lock(&b->bm_change);
153 } 153 }
154 if (BM_LOCKED_MASK & b->bm_flags) 154 if (BM_LOCKED_MASK & b->bm_flags)
diff --git a/drivers/block/drbd/drbd_int.h b/drivers/block/drbd/drbd_int.h
index 8de17b5bd42a..c5b1167aab50 100644
--- a/drivers/block/drbd/drbd_int.h
+++ b/drivers/block/drbd/drbd_int.h
@@ -972,6 +972,10 @@ struct drbd_tconn { /* is a resource from the config file */
972 972
973 struct drbd_socket data; /* data/barrier/cstate/parameter packets */ 973 struct drbd_socket data; /* data/barrier/cstate/parameter packets */
974 struct drbd_socket meta; /* ping/ack (metadata) packets */ 974 struct drbd_socket meta; /* ping/ack (metadata) packets */
975
976 struct drbd_thread receiver;
977 struct drbd_thread worker;
978 struct drbd_thread asender;
975}; 979};
976 980
977struct drbd_conf { 981struct drbd_conf {
@@ -1068,9 +1072,6 @@ struct drbd_conf {
1068 struct crypto_hash *csums_tfm; 1072 struct crypto_hash *csums_tfm;
1069 struct crypto_hash *verify_tfm; 1073 struct crypto_hash *verify_tfm;
1070 1074
1071 struct drbd_thread receiver;
1072 struct drbd_thread worker;
1073 struct drbd_thread asender;
1074 struct drbd_bitmap *bitmap; 1075 struct drbd_bitmap *bitmap;
1075 unsigned long bm_resync_fo; /* bit offset for drbd_bm_find_next */ 1076 unsigned long bm_resync_fo; /* bit offset for drbd_bm_find_next */
1076 1077
@@ -2005,7 +2006,7 @@ drbd_queue_work(struct drbd_work_queue *q, struct drbd_work *w)
2005static inline void wake_asender(struct drbd_conf *mdev) 2006static inline void wake_asender(struct drbd_conf *mdev)
2006{ 2007{
2007 if (test_bit(SIGNAL_ASENDER, &mdev->flags)) 2008 if (test_bit(SIGNAL_ASENDER, &mdev->flags))
2008 force_sig(DRBD_SIG, mdev->asender.task); 2009 force_sig(DRBD_SIG, mdev->tconn->asender.task);
2009} 2010}
2010 2011
2011static inline void request_ping(struct drbd_conf *mdev) 2012static inline void request_ping(struct drbd_conf *mdev)
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c
index 84e40fbfd3e9..5d8a6e94a4a5 100644
--- a/drivers/block/drbd/drbd_main.c
+++ b/drivers/block/drbd/drbd_main.c
@@ -613,7 +613,7 @@ drbd_req_state(struct drbd_conf *mdev, union drbd_state mask,
613 spin_unlock_irqrestore(&mdev->req_lock, flags); 613 spin_unlock_irqrestore(&mdev->req_lock, flags);
614 614
615 if (f & CS_WAIT_COMPLETE && rv == SS_SUCCESS) { 615 if (f & CS_WAIT_COMPLETE && rv == SS_SUCCESS) {
616 D_ASSERT(current != mdev->worker.task); 616 D_ASSERT(current != mdev->tconn->worker.task);
617 wait_for_completion(&done); 617 wait_for_completion(&done);
618 } 618 }
619 619
@@ -1229,16 +1229,16 @@ __drbd_set_state(struct drbd_conf *mdev, union drbd_state ns,
1229 1229
1230 /* Receiver should clean up itself */ 1230 /* Receiver should clean up itself */
1231 if (os.conn != C_DISCONNECTING && ns.conn == C_DISCONNECTING) 1231 if (os.conn != C_DISCONNECTING && ns.conn == C_DISCONNECTING)
1232 drbd_thread_stop_nowait(&mdev->receiver); 1232 drbd_thread_stop_nowait(&mdev->tconn->receiver);
1233 1233
1234 /* Now the receiver finished cleaning up itself, it should die */ 1234 /* Now the receiver finished cleaning up itself, it should die */
1235 if (os.conn != C_STANDALONE && ns.conn == C_STANDALONE) 1235 if (os.conn != C_STANDALONE && ns.conn == C_STANDALONE)
1236 drbd_thread_stop_nowait(&mdev->receiver); 1236 drbd_thread_stop_nowait(&mdev->tconn->receiver);
1237 1237
1238 /* Upon network failure, we need to restart the receiver. */ 1238 /* Upon network failure, we need to restart the receiver. */
1239 if (os.conn > C_TEAR_DOWN && 1239 if (os.conn > C_TEAR_DOWN &&
1240 ns.conn <= C_TEAR_DOWN && ns.conn >= C_TIMEOUT) 1240 ns.conn <= C_TEAR_DOWN && ns.conn >= C_TIMEOUT)
1241 drbd_thread_restart_nowait(&mdev->receiver); 1241 drbd_thread_restart_nowait(&mdev->tconn->receiver);
1242 1242
1243 /* Resume AL writing if we get a connection */ 1243 /* Resume AL writing if we get a connection */
1244 if (os.conn < C_CONNECTED && ns.conn >= C_CONNECTED) 1244 if (os.conn < C_CONNECTED && ns.conn >= C_CONNECTED)
@@ -1297,7 +1297,7 @@ int drbd_bitmap_io_from_worker(struct drbd_conf *mdev,
1297{ 1297{
1298 int rv; 1298 int rv;
1299 1299
1300 D_ASSERT(current == mdev->worker.task); 1300 D_ASSERT(current == mdev->tconn->worker.task);
1301 1301
1302 /* open coded non-blocking drbd_suspend_io(mdev); */ 1302 /* open coded non-blocking drbd_suspend_io(mdev); */
1303 set_bit(SUSPEND_IO, &mdev->flags); 1303 set_bit(SUSPEND_IO, &mdev->flags);
@@ -1598,7 +1598,7 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os,
1598 1598
1599 /* Upon network connection, we need to start the receiver */ 1599 /* Upon network connection, we need to start the receiver */
1600 if (os.conn == C_STANDALONE && ns.conn == C_UNCONNECTED) 1600 if (os.conn == C_STANDALONE && ns.conn == C_UNCONNECTED)
1601 drbd_thread_start(&mdev->receiver); 1601 drbd_thread_start(&mdev->tconn->receiver);
1602 1602
1603 /* Terminate worker thread if we are unconfigured - it will be 1603 /* Terminate worker thread if we are unconfigured - it will be
1604 restarted as needed... */ 1604 restarted as needed... */
@@ -1609,7 +1609,7 @@ static void after_state_ch(struct drbd_conf *mdev, union drbd_state os,
1609 resume_next_sg(mdev); 1609 resume_next_sg(mdev);
1610 /* set in __drbd_set_state, unless CONFIG_PENDING was set */ 1610 /* set in __drbd_set_state, unless CONFIG_PENDING was set */
1611 if (test_bit(DEVICE_DYING, &mdev->flags)) 1611 if (test_bit(DEVICE_DYING, &mdev->flags))
1612 drbd_thread_stop_nowait(&mdev->worker); 1612 drbd_thread_stop_nowait(&mdev->tconn->worker);
1613 } 1613 }
1614 1614
1615 drbd_md_sync(mdev); 1615 drbd_md_sync(mdev);
@@ -1675,9 +1675,9 @@ int drbd_thread_start(struct drbd_thread *thi)
1675 unsigned long flags; 1675 unsigned long flags;
1676 1676
1677 const char *me = 1677 const char *me =
1678 thi == &mdev->receiver ? "receiver" : 1678 thi == &mdev->tconn->receiver ? "receiver" :
1679 thi == &mdev->asender ? "asender" : 1679 thi == &mdev->tconn->asender ? "asender" :
1680 thi == &mdev->worker ? "worker" : "NONSENSE"; 1680 thi == &mdev->tconn->worker ? "worker" : "NONSENSE";
1681 1681
1682 /* is used from state engine doing drbd_thread_stop_nowait, 1682 /* is used from state engine doing drbd_thread_stop_nowait,
1683 * while holding the req lock irqsave */ 1683 * while holding the req lock irqsave */
@@ -1807,9 +1807,9 @@ void drbd_thread_current_set_cpu(struct drbd_conf *mdev)
1807{ 1807{
1808 struct task_struct *p = current; 1808 struct task_struct *p = current;
1809 struct drbd_thread *thi = 1809 struct drbd_thread *thi =
1810 p == mdev->asender.task ? &mdev->asender : 1810 p == mdev->tconn->asender.task ? &mdev->tconn->asender :
1811 p == mdev->receiver.task ? &mdev->receiver : 1811 p == mdev->tconn->receiver.task ? &mdev->tconn->receiver :
1812 p == mdev->worker.task ? &mdev->worker : 1812 p == mdev->tconn->worker.task ? &mdev->tconn->worker :
1813 NULL; 1813 NULL;
1814 if (!expect(thi != NULL)) 1814 if (!expect(thi != NULL))
1815 return; 1815 return;
@@ -2507,8 +2507,8 @@ static int we_should_drop_the_connection(struct drbd_conf *mdev, struct socket *
2507 /* long elapsed = (long)(jiffies - mdev->last_received); */ 2507 /* long elapsed = (long)(jiffies - mdev->last_received); */
2508 2508
2509 drop_it = mdev->tconn->meta.socket == sock 2509 drop_it = mdev->tconn->meta.socket == sock
2510 || !mdev->asender.task 2510 || !mdev->tconn->asender.task
2511 || get_t_state(&mdev->asender) != RUNNING 2511 || get_t_state(&mdev->tconn->asender) != RUNNING
2512 || mdev->state.conn < C_CONNECTED; 2512 || mdev->state.conn < C_CONNECTED;
2513 2513
2514 if (drop_it) 2514 if (drop_it)
@@ -3034,9 +3034,9 @@ void drbd_init_set_defaults(struct drbd_conf *mdev)
3034 init_waitqueue_head(&mdev->al_wait); 3034 init_waitqueue_head(&mdev->al_wait);
3035 init_waitqueue_head(&mdev->seq_wait); 3035 init_waitqueue_head(&mdev->seq_wait);
3036 3036
3037 drbd_thread_init(mdev, &mdev->receiver, drbdd_init); 3037 drbd_thread_init(mdev, &mdev->tconn->receiver, drbdd_init);
3038 drbd_thread_init(mdev, &mdev->worker, drbd_worker); 3038 drbd_thread_init(mdev, &mdev->tconn->worker, drbd_worker);
3039 drbd_thread_init(mdev, &mdev->asender, drbd_asender); 3039 drbd_thread_init(mdev, &mdev->tconn->asender, drbd_asender);
3040 3040
3041 mdev->agreed_pro_version = PRO_VERSION_MAX; 3041 mdev->agreed_pro_version = PRO_VERSION_MAX;
3042 mdev->write_ordering = WO_bdev_flush; 3042 mdev->write_ordering = WO_bdev_flush;
@@ -3048,9 +3048,9 @@ void drbd_init_set_defaults(struct drbd_conf *mdev)
3048void drbd_mdev_cleanup(struct drbd_conf *mdev) 3048void drbd_mdev_cleanup(struct drbd_conf *mdev)
3049{ 3049{
3050 int i; 3050 int i;
3051 if (mdev->receiver.t_state != NONE) 3051 if (mdev->tconn->receiver.t_state != NONE)
3052 dev_err(DEV, "ASSERT FAILED: receiver t_state == %d expected 0.\n", 3052 dev_err(DEV, "ASSERT FAILED: receiver t_state == %d expected 0.\n",
3053 mdev->receiver.t_state); 3053 mdev->tconn->receiver.t_state);
3054 3054
3055 /* no need to lock it, I'm the only thread alive */ 3055 /* no need to lock it, I'm the only thread alive */
3056 if (atomic_read(&mdev->current_epoch->epoch_size) != 0) 3056 if (atomic_read(&mdev->current_epoch->epoch_size) != 0)
@@ -4032,7 +4032,7 @@ void drbd_queue_bitmap_io(struct drbd_conf *mdev,
4032 void (*done)(struct drbd_conf *, int), 4032 void (*done)(struct drbd_conf *, int),
4033 char *why, enum bm_flag flags) 4033 char *why, enum bm_flag flags)
4034{ 4034{
4035 D_ASSERT(current == mdev->worker.task); 4035 D_ASSERT(current == mdev->tconn->worker.task);
4036 4036
4037 D_ASSERT(!test_bit(BITMAP_IO_QUEUED, &mdev->flags)); 4037 D_ASSERT(!test_bit(BITMAP_IO_QUEUED, &mdev->flags));
4038 D_ASSERT(!test_bit(BITMAP_IO, &mdev->flags)); 4038 D_ASSERT(!test_bit(BITMAP_IO, &mdev->flags));
@@ -4069,7 +4069,7 @@ int drbd_bitmap_io(struct drbd_conf *mdev, int (*io_fn)(struct drbd_conf *),
4069{ 4069{
4070 int rv; 4070 int rv;
4071 4071
4072 D_ASSERT(current != mdev->worker.task); 4072 D_ASSERT(current != mdev->tconn->worker.task);
4073 4073
4074 if ((flags & BM_LOCKED_SET_ALLOWED) == 0) 4074 if ((flags & BM_LOCKED_SET_ALLOWED) == 0)
4075 drbd_suspend_io(mdev); 4075 drbd_suspend_io(mdev);
diff --git a/drivers/block/drbd/drbd_nl.c b/drivers/block/drbd/drbd_nl.c
index a936d61a90cd..59bb58c9b22f 100644
--- a/drivers/block/drbd/drbd_nl.c
+++ b/drivers/block/drbd/drbd_nl.c
@@ -875,7 +875,7 @@ static void drbd_reconfig_start(struct drbd_conf *mdev)
875{ 875{
876 wait_event(mdev->state_wait, !test_and_set_bit(CONFIG_PENDING, &mdev->flags)); 876 wait_event(mdev->state_wait, !test_and_set_bit(CONFIG_PENDING, &mdev->flags));
877 wait_event(mdev->state_wait, !test_bit(DEVICE_DYING, &mdev->flags)); 877 wait_event(mdev->state_wait, !test_bit(DEVICE_DYING, &mdev->flags));
878 drbd_thread_start(&mdev->worker); 878 drbd_thread_start(&mdev->tconn->worker);
879 drbd_flush_workqueue(mdev); 879 drbd_flush_workqueue(mdev);
880} 880}
881 881
@@ -889,7 +889,7 @@ static void drbd_reconfig_done(struct drbd_conf *mdev)
889 mdev->state.conn == C_STANDALONE && 889 mdev->state.conn == C_STANDALONE &&
890 mdev->state.role == R_SECONDARY) { 890 mdev->state.role == R_SECONDARY) {
891 set_bit(DEVICE_DYING, &mdev->flags); 891 set_bit(DEVICE_DYING, &mdev->flags);
892 drbd_thread_stop_nowait(&mdev->worker); 892 drbd_thread_stop_nowait(&mdev->tconn->worker);
893 } else 893 } else
894 clear_bit(CONFIG_PENDING, &mdev->flags); 894 clear_bit(CONFIG_PENDING, &mdev->flags);
895 spin_unlock_irq(&mdev->req_lock); 895 spin_unlock_irq(&mdev->req_lock);
@@ -1887,9 +1887,9 @@ static int drbd_nl_syncer_conf(struct drbd_conf *mdev, struct drbd_nl_cfg_req *n
1887 if (!cpumask_equal(mdev->cpu_mask, new_cpu_mask)) { 1887 if (!cpumask_equal(mdev->cpu_mask, new_cpu_mask)) {
1888 cpumask_copy(mdev->cpu_mask, new_cpu_mask); 1888 cpumask_copy(mdev->cpu_mask, new_cpu_mask);
1889 drbd_calc_cpu_mask(mdev); 1889 drbd_calc_cpu_mask(mdev);
1890 mdev->receiver.reset_cpu_mask = 1; 1890 mdev->tconn->receiver.reset_cpu_mask = 1;
1891 mdev->asender.reset_cpu_mask = 1; 1891 mdev->tconn->asender.reset_cpu_mask = 1;
1892 mdev->worker.reset_cpu_mask = 1; 1892 mdev->tconn->worker.reset_cpu_mask = 1;
1893 } 1893 }
1894 1894
1895 kobject_uevent(&disk_to_dev(mdev->vdisk)->kobj, KOBJ_CHANGE); 1895 kobject_uevent(&disk_to_dev(mdev->vdisk)->kobj, KOBJ_CHANGE);
diff --git a/drivers/block/drbd/drbd_receiver.c b/drivers/block/drbd/drbd_receiver.c
index 2636bcc173a6..e9f670cd5542 100644
--- a/drivers/block/drbd/drbd_receiver.c
+++ b/drivers/block/drbd/drbd_receiver.c
@@ -833,7 +833,7 @@ retry:
833 if (signal_pending(current)) { 833 if (signal_pending(current)) {
834 flush_signals(current); 834 flush_signals(current);
835 smp_rmb(); 835 smp_rmb();
836 if (get_t_state(&mdev->receiver) == EXITING) 836 if (get_t_state(&mdev->tconn->receiver) == EXITING)
837 goto out_release_sockets; 837 goto out_release_sockets;
838 } 838 }
839 839
@@ -874,7 +874,7 @@ retry:
874 mdev->tconn->meta.socket = msock; 874 mdev->tconn->meta.socket = msock;
875 mdev->last_received = jiffies; 875 mdev->last_received = jiffies;
876 876
877 D_ASSERT(mdev->asender.task == NULL); 877 D_ASSERT(mdev->tconn->asender.task == NULL);
878 878
879 h = drbd_do_handshake(mdev); 879 h = drbd_do_handshake(mdev);
880 if (h <= 0) 880 if (h <= 0)
@@ -901,7 +901,7 @@ retry:
901 atomic_set(&mdev->packet_seq, 0); 901 atomic_set(&mdev->packet_seq, 0);
902 mdev->peer_seq = 0; 902 mdev->peer_seq = 0;
903 903
904 drbd_thread_start(&mdev->asender); 904 drbd_thread_start(&mdev->tconn->asender);
905 905
906 if (drbd_send_protocol(mdev) == -1) 906 if (drbd_send_protocol(mdev) == -1)
907 return -1; 907 return -1;
@@ -3704,7 +3704,7 @@ static void drbdd(struct drbd_conf *mdev)
3704 size_t shs; /* sub header size */ 3704 size_t shs; /* sub header size */
3705 int rv; 3705 int rv;
3706 3706
3707 while (get_t_state(&mdev->receiver) == RUNNING) { 3707 while (get_t_state(&mdev->tconn->receiver) == RUNNING) {
3708 drbd_thread_current_set_cpu(mdev); 3708 drbd_thread_current_set_cpu(mdev);
3709 if (!drbd_recv_header(mdev, &cmd, &packet_size)) 3709 if (!drbd_recv_header(mdev, &cmd, &packet_size))
3710 goto err_out; 3710 goto err_out;
@@ -3768,7 +3768,7 @@ static void drbd_disconnect(struct drbd_conf *mdev)
3768 return; 3768 return;
3769 3769
3770 /* asender does not clean up anything. it must not interfere, either */ 3770 /* asender does not clean up anything. it must not interfere, either */
3771 drbd_thread_stop(&mdev->asender); 3771 drbd_thread_stop(&mdev->tconn->asender);
3772 drbd_free_sock(mdev); 3772 drbd_free_sock(mdev);
3773 3773
3774 /* wait for current activity to cease. */ 3774 /* wait for current activity to cease. */
@@ -3891,7 +3891,7 @@ static void drbd_disconnect(struct drbd_conf *mdev)
3891 */ 3891 */
3892static int drbd_send_handshake(struct drbd_conf *mdev) 3892static int drbd_send_handshake(struct drbd_conf *mdev)
3893{ 3893{
3894 /* ASSERT current == mdev->receiver ... */ 3894 /* ASSERT current == mdev->tconn->receiver ... */
3895 struct p_handshake *p = &mdev->tconn->data.sbuf.handshake; 3895 struct p_handshake *p = &mdev->tconn->data.sbuf.handshake;
3896 int ok; 3896 int ok;
3897 3897
@@ -3923,7 +3923,7 @@ static int drbd_send_handshake(struct drbd_conf *mdev)
3923 */ 3923 */
3924static int drbd_do_handshake(struct drbd_conf *mdev) 3924static int drbd_do_handshake(struct drbd_conf *mdev)
3925{ 3925{
3926 /* ASSERT current == mdev->receiver ... */ 3926 /* ASSERT current == mdev->tconn->receiver ... */
3927 struct p_handshake *p = &mdev->tconn->data.rbuf.handshake; 3927 struct p_handshake *p = &mdev->tconn->data.rbuf.handshake;
3928 const int expect = sizeof(struct p_handshake) - sizeof(struct p_header80); 3928 const int expect = sizeof(struct p_handshake) - sizeof(struct p_header80);
3929 unsigned int length; 3929 unsigned int length;
diff --git a/drivers/block/drbd/drbd_worker.c b/drivers/block/drbd/drbd_worker.c
index 9b1e2bad5fbd..1ca7856f8136 100644
--- a/drivers/block/drbd/drbd_worker.c
+++ b/drivers/block/drbd/drbd_worker.c
@@ -1705,8 +1705,8 @@ int drbd_worker(struct drbd_thread *thi)
1705 1705
1706 D_ASSERT(mdev->state.disk == D_DISKLESS && mdev->state.conn == C_STANDALONE); 1706 D_ASSERT(mdev->state.disk == D_DISKLESS && mdev->state.conn == C_STANDALONE);
1707 /* _drbd_set_state only uses stop_nowait. 1707 /* _drbd_set_state only uses stop_nowait.
1708 * wait here for the EXITING receiver. */ 1708 * wait here for the exiting receiver. */
1709 drbd_thread_stop(&mdev->receiver); 1709 drbd_thread_stop(&mdev->tconn->receiver);
1710 drbd_mdev_cleanup(mdev); 1710 drbd_mdev_cleanup(mdev);
1711 1711
1712 dev_info(DEV, "worker terminated\n"); 1712 dev_info(DEV, "worker terminated\n");