[DRBD-cvs] r1638 - branches/drbd-0.7/drbd

svn at svn.drbd.org svn at svn.drbd.org
Mon Nov 15 22:45:08 CET 2004


Author: phil
Date: 2004-11-15 22:45:05 +0100 (Mon, 15 Nov 2004)
New Revision: 1638

Modified:
   branches/drbd-0.7/drbd/drbd_fs.c
   branches/drbd-0.7/drbd/drbd_int.h
   branches/drbd-0.7/drbd/drbd_receiver.c
   branches/drbd-0.7/drbd/drbd_worker.c
Log:
* Replaced a call to sock_alloc() by sock_create(). Since 
  Linux-2.6.10-rc2 sock_alloc() is no longer available to
  modules
* Introduced drbd_suicide() wich makes use of 
  current->exit_state = EXIT_ZOMBIE method introduced with
  Linux-2.6.10-rc2


Modified: branches/drbd-0.7/drbd/drbd_fs.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_fs.c	2004-11-13 18:11:55 UTC (rev 1637)
+++ branches/drbd-0.7/drbd/drbd_fs.c	2004-11-15 21:45:05 UTC (rev 1638)
@@ -481,8 +481,7 @@
 		 */
 		// return i;
 		drbd_panic("Cannot allocate act_log\n");
-		set_current_state(TASK_ZOMBIE);
-		schedule(); // drbdsetup suicide...
+		drbd_suicide();
 	}
 
 	if (md_gc_valid > 0) {

Modified: branches/drbd-0.7/drbd/drbd_int.h
===================================================================
--- branches/drbd-0.7/drbd/drbd_int.h	2004-11-13 18:11:55 UTC (rev 1637)
+++ branches/drbd-0.7/drbd/drbd_int.h	2004-11-15 21:45:05 UTC (rev 1638)
@@ -1544,3 +1544,13 @@
 	return sizeof(w) == 4 ? generic_hweight32(w) : generic_hweight64(w);
 }
 #endif
+
+static inline void drbd_suicide(void)
+{
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
+	set_current_state(TASK_ZOMBIE);
+#else
+	current->exit_state = EXIT_ZOMBIE;
+#endif
+	schedule();
+}

Modified: branches/drbd-0.7/drbd/drbd_receiver.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_receiver.c	2004-11-13 18:11:55 UTC (rev 1637)
+++ branches/drbd-0.7/drbd/drbd_receiver.c	2004-11-15 21:45:05 UTC (rev 1638)
@@ -488,7 +488,7 @@
 	if (err)
 		goto out;
 
-	if (!(newsock = sock_alloc()))
+	if (sock_create(PF_INET, SOCK_STREAM, IPPROTO_TCP, &newsock))
 		goto out;
 
 	newsock->type = sock->type;
@@ -516,8 +516,7 @@
 	int rv;
 
 	if (unlikely(drbd_did_panic == DRBD_MAGIC)) {
-		set_current_state(TASK_ZOMBIE);
-		schedule(); // commit suicide
+		drbd_suicide();
 	}
 
 	msg.msg_control = NULL;
@@ -554,8 +553,7 @@
 	int rv;
 
 	if (unlikely(drbd_did_panic == DRBD_MAGIC)) {
-		set_current_state(TASK_ZOMBIE);
-		schedule(); // commit suicide
+		drbd_suicide();
 	}
 
 	msg.msg_control = NULL;

Modified: branches/drbd-0.7/drbd/drbd_worker.c
===================================================================
--- branches/drbd-0.7/drbd/drbd_worker.c	2004-11-13 18:11:55 UTC (rev 1637)
+++ branches/drbd-0.7/drbd/drbd_worker.c	2004-11-15 21:45:05 UTC (rev 1638)
@@ -936,8 +936,7 @@
 		intr = down_interruptible(&mdev->data.work.s);
 
 		if (unlikely(drbd_did_panic == DRBD_MAGIC)) {
-			set_current_state(TASK_ZOMBIE);
-			schedule(); // commit suicide
+			drbd_suicide();
 		}
 
 		if (intr) {



More information about the drbd-cvs mailing list