[DRBD-cvs] svn commit by phil - r2297 - trunk/drbd - Changed the
way we start/stop the worker thread. * It n
drbd-cvs at lists.linbit.com
drbd-cvs at lists.linbit.com
Wed Jul 26 11:25:49 CEST 2006
Author: phil
Date: 2006-07-26 11:25:48 +0200 (Wed, 26 Jul 2006)
New Revision: 2297
Modified:
trunk/drbd/drbd_fs.c
trunk/drbd/drbd_main.c
trunk/drbd/drbd_receiver.c
Log:
Changed the way we start/stop the worker thread.
* It no longer gets restarted when we loose the connection.
* Starting / Stopping is handled with state transitions.
Modified: trunk/drbd/drbd_fs.c
===================================================================
--- trunk/drbd/drbd_fs.c 2006-07-25 13:55:36 UTC (rev 2296)
+++ trunk/drbd/drbd_fs.c 2006-07-26 09:25:48 UTC (rev 2297)
@@ -538,7 +538,6 @@
drbd_send_sizes(mdev); // to start sync...
drbd_send_uuids(mdev);
drbd_send_state(mdev);
- drbd_thread_start(&mdev->worker);
} else {
spin_lock_irq(&mdev->req_lock);
os = mdev->state;
@@ -577,9 +576,7 @@
spin_unlock_irq(&mdev->req_lock);
after_state_ch(mdev,os,ns,ChgStateVerbose);
- if(rv >= SS_Success ) {
- drbd_thread_start(&mdev->worker);
- } else {
+ if(rv < SS_Success ) {
drbd_bm_unlock(mdev);
goto release_bdev3_fail_ioctl;
}
@@ -789,7 +786,6 @@
}
mdev->cram_hmac_tfm = tfm;
- drbd_thread_start(&mdev->worker);
if( drbd_request_state(mdev,NS(conn,Unconnected)) >= SS_Success ) {
drbd_thread_start(&mdev->receiver);
}
Modified: trunk/drbd/drbd_main.c
===================================================================
--- trunk/drbd/drbd_main.c 2006-07-25 13:55:36 UTC (rev 2296)
+++ trunk/drbd/drbd_main.c 2006-07-26 09:25:48 UTC (rev 2297)
@@ -1079,9 +1079,15 @@
lc_free(mdev->act_log); mdev->act_log = NULL;
}
+ if ( os.disk == Diskless && os.conn == StandAlone &&
+ (ns.disk > Diskless || ns.conn > StandAlone) ) {
+ drbd_thread_start(&mdev->worker);
+ }
+
/* it feels better to have the module_put last ... */
if ( (os.disk > Diskless || os.conn > StandAlone) &&
ns.disk == Diskless && ns.conn == StandAlone ) {
+ drbd_thread_stop(&mdev->worker);
drbd_mdev_cleanup(mdev);
module_put(THIS_MODULE);
}
@@ -2218,7 +2224,6 @@
up(&mdev->device_mutex);
drbd_sync_me(mdev);
drbd_thread_stop(&mdev->receiver);
- drbd_thread_stop(&mdev->worker);
}
}
Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c 2006-07-25 13:55:36 UTC (rev 2296)
+++ trunk/drbd/drbd_receiver.c 2006-07-26 09:25:48 UTC (rev 2297)
@@ -2430,7 +2430,6 @@
dec_local(mdev);
}
- drbd_thread_stop_nowait(&mdev->worker);
drbd_thread_stop(&mdev->asender);
down(&mdev->data.mutex);
@@ -2440,7 +2439,6 @@
up(&mdev->data.mutex);
drbd_fail_pending_reads(mdev);
- drbd_thread_stop(&mdev->worker);
// now worker is dead and read_ee is empty
drbd_rs_cancel_all(mdev);
@@ -2498,10 +2496,8 @@
if (get_t_state(&mdev->receiver) == Exiting) {
drbd_force_state(mdev,NS(conn,StandAlone));
- drbd_thread_start(&mdev->worker);
} else {
drbd_force_state(mdev,NS(conn,Unconnected));
- drbd_thread_start(&mdev->worker);
}
if ( mdev->state.role == Primary ) {
More information about the drbd-cvs
mailing list