[DRBD-cvs] drbd by phil; * Various code cleanups. * Removed some ...

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Mon, 9 Feb 2004 11:36:59 +0100 (CET)


DRBD CVS committal

Author  : phil
Module  : drbd

Dir     : drbd/drbd


Modified Files:
      Tag: rel-0_7-branch
	drbd_compat_wrappers.h drbd_dsender.c drbd_fs.c drbd_int.h 
	drbd_main.c drbd_proc.c drbd_receiver.c 


Log Message:
* Various code cleanups. 
* Removed some FIXMEs etc.

[Lars: Would be nice if you could have a look at these modifications.]

===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_compat_wrappers.h,v
retrieving revision 1.1.2.21
retrieving revision 1.1.2.22
diff -u -3 -r1.1.2.21 -r1.1.2.22
--- drbd_compat_wrappers.h	5 Feb 2004 15:17:36 -0000	1.1.2.21
+++ drbd_compat_wrappers.h	9 Feb 2004 10:36:54 -0000	1.1.2.22
@@ -484,9 +484,6 @@
 	bio->bi_end_io  = drbd_dio_end;
 	bio->bi_next    = 0;
 
-	// FIXME D_ASSERT(??)
-	// what else?
-
 	req->rq_status = RQ_DRBD_NOTHING;
 }
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/Attic/drbd_dsender.c,v
retrieving revision 1.1.2.71
retrieving revision 1.1.2.72
diff -u -3 -r1.1.2.71 -r1.1.2.72
--- drbd_dsender.c	9 Feb 2004 09:40:45 -0000	1.1.2.71
+++ drbd_dsender.c	9 Feb 2004 10:36:54 -0000	1.1.2.72
@@ -155,9 +155,9 @@
 }
 
 #else
-//#warning "FIXME"
+
 /* used for synchronous meta data and bitmap IO
- * submitted by FIXME (I'd say worker only, but currently this is not true...)
+ * submitted by drbd_md_sync_page_io()
  */
 int drbd_md_io_complete(struct bio *bio, unsigned int bytes_done, int error)
 {
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_fs.c,v
retrieving revision 1.28.2.70
retrieving revision 1.28.2.71
diff -u -3 -r1.28.2.70 -r1.28.2.71
--- drbd_fs.c	9 Feb 2004 09:45:02 -0000	1.28.2.70
+++ drbd_fs.c	9 Feb 2004 10:36:54 -0000	1.28.2.71
@@ -156,8 +156,7 @@
 			drbd_set_my_capacity(mdev,size<<1);
 			mdev->la_size = size;
 			INFO("size = %lu KB\n",size);
-		}
-		//#warning "FIXME else { error handling }"
+		} else ERR("BM resizing failed. Leaving size unchanged\n");
 	}
 
 	return rv;
@@ -508,10 +507,10 @@
 
 int drbd_set_state(drbd_dev *mdev,Drbd_State newstate)
 {
+	NOT_IN_26(int minor = mdev-drbd_conf;)
 
-  //#warning "FIXME actually must hold device_mutex!"
+	D_ASSERT(semaphore_is_locked(&mdev->device_mutex));
 
-	NOT_IN_26(int minor = mdev-drbd_conf;)
 	if ( (newstate & 0x3) == mdev->state ) return 0; /* nothing to do */
 
 	// exactly one of sec or pri. not both.
@@ -739,6 +738,7 @@
 		drbd_determin_dev_size(mdev);
 		drbd_md_write(mdev); // Write mdev->la_size to disk.
 		//#warning "yet an other reason to serialize all state changes on a rw_semaphore"
+		// PRE: Please explain the issue.
 		if (mdev->cstate == Connected) drbd_send_param(mdev,0);
 		break;
 
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_int.h,v
retrieving revision 1.58.2.119
retrieving revision 1.58.2.120
diff -u -3 -r1.58.2.119 -r1.58.2.120
--- drbd_int.h	9 Feb 2004 09:40:45 -0000	1.58.2.119
+++ drbd_int.h	9 Feb 2004 10:36:54 -0000	1.58.2.120
@@ -318,33 +318,32 @@
 	MAX_OPT_CMD,
 } Drbd_Packet_Cmd;
 
-// FIXME we should be able to define this away
-// no char* cmdname[], since I'm not sure the index is valid ...
 static inline const char* cmdname(Drbd_Packet_Cmd cmd)
 {
-	switch (cmd) {
-	case Data            : return "Data";
-	case DataReply       : return "DataReply";
-	case RecvAck         : return "RecvAck";
-	case WriteAck        : return "WriteAck";
-	case Barrier         : return "Barrier";
-	case BarrierAck      : return "BarrierAck";
-	case ReportParams    : return "ReportParams";
-	case ReportBitMap    : return "ReportBitMap";
-	case Ping            : return "Ping";
-	case PingAck         : return "PingAck";
-	case BecomeSyncTarget: return "BecomeSyncTarget";
-	case BecomeSyncSource: return "BecomeSyncSource";
-	case BecomeSec       : return "BecomeSec";
-	case WriteHint       : return "WriteHint";
-	case DataRequest     : return "DataRequest";
-	case RSDataRequest   : return "RSDataRequest";
-	case SyncParam       : return "SyncParam";
-	case MAX_CMD         : return "MAX_CMD";
-	case MayIgnore       : return "MayIgnore";
-	case MAX_OPT_CMD     : return "MAX_OPT_CMD";
-	default              : return "Unknown";
-	}
+	static const char *cmdnames[] = {
+		[Data]             = "Data",
+		[DataReply]        = "DataReply",
+		[Barrier]          = "Barrier",
+		[ReportParams]     = "ReportParams",
+		[ReportBitMap]     = "ReportBitMap",
+		[BecomeSyncTarget] = "BecomeSyncTarget",
+		[BecomeSyncSource] = "BecomeSyncSource",
+		[BecomeSec]        = "BecomeSec",
+		[WriteHint]        = "WriteHint",
+		[DataRequest]      = "DataRequest",
+		[RSDataRequest]    = "RSDataRequest",
+		[SyncParam]        = "SyncParam",
+		[Ping]             = "Ping",
+		[PingAck]          = "PingAck",
+		[RecvAck]          = "RecvAck",
+		[WriteAck]         = "WriteAck",
+		[NegAck]           = "NegAck",
+		[NegDReply]        = "NegDReply",
+		[BarrierAck]       = "BarrierAck"
+	};
+
+	if(cmd < 0 || cmd > MAX_CMD) return "Unknown";
+	return cmdnames[cmd];
 }
 
 
@@ -862,7 +861,7 @@
 
 // drbd_receiver.c
 extern int drbd_release_ee(drbd_dev* mdev,struct list_head* list);
-extern void drbd_init_ee(drbd_dev* mdev);
+extern int drbd_init_ee(drbd_dev* mdev);
 extern void drbd_put_ee(drbd_dev* mdev,struct Tl_epoch_entry *e);
 extern struct Tl_epoch_entry* drbd_get_ee(drbd_dev* mdev);
 extern int recv_resync_read(drbd_dev* mdev, struct Pending_read *pr,
@@ -945,6 +944,15 @@
 
 #include "drbd_compat_wrappers.h"
 
+
+static inline int semaphore_is_locked(struct semaphore* s) 
+{
+	if(!down_trylock(s)) {
+		up(s);
+		return 0;
+	}
+	return 1;
+}
 /* Returns the start sector for metadata, aligned to 4K
  * which happens to be the capacity we announce for
  * our lower level device if it includes the meta data
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_main.c,v
retrieving revision 1.73.2.126
retrieving revision 1.73.2.127
diff -u -3 -r1.73.2.126 -r1.73.2.127
--- drbd_main.c	9 Feb 2004 09:40:45 -0000	1.73.2.126
+++ drbd_main.c	9 Feb 2004 10:36:54 -0000	1.73.2.127
@@ -89,8 +89,7 @@
 #endif
 #define DEVICE_REQUEST drbd_do_request
 
-//#warning "FIXME review the MODULE_* macros below"
-MODULE_AUTHOR("Philipp Reisner <philipp.reisner@gmx.at>");
+MODULE_AUTHOR("Philipp Reisner <phil@linbit.com>, Lars Ellenberg <lars@linbit.com>");
 MODULE_DESCRIPTION("drbd - Distributed Replicated Block Device v" REL_VERSION);
 MODULE_LICENSE("GPL");
 MODULE_PARM(minor_count,"i");
@@ -133,12 +132,12 @@
 int errno;
 
 /************************* The transfer log start */
-STATIC void tl_init(drbd_dev *mdev)
+STATIC int tl_init(drbd_dev *mdev)
 {
 	struct drbd_barrier *b;
 
 	b=kmalloc(sizeof(struct drbd_barrier),GFP_KERNEL);
-	// FIXME no mem ;-)
+	if(!b) return 0;
 	INIT_LIST_HEAD(&b->requests);
 	b->next=0;
 	b->br_number=4711;
@@ -146,6 +145,8 @@
 
 	mdev->oldest_barrier = b;
 	mdev->newest_barrier = b;
+
+	return 1;
 }
 
 STATIC void tl_cleanup(drbd_dev *mdev)
@@ -1340,8 +1341,8 @@
 		if (!mdev->act_log) goto Enomem;
 
 		drbd_init_set_defaults(mdev);
-		tl_init(mdev);
-		drbd_init_ee(mdev);
+		if (!tl_init(mdev)) goto Enomem;
+		if (!drbd_init_ee(mdev)) goto Enomem;
 	}
 
 #if CONFIG_PROC_FS
@@ -1387,7 +1388,6 @@
 	register_ioctl32_conversion(DRBD_IOCTL_SET_NET_CONFIG,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_SET_STATE,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_SET_SYNC_CONFIG,NULL);
-	register_ioctl32_conversion(DRBD_IOCTL_UNCONFIG_BOTH,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_UNCONFIG_NET,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_WAIT_CONNECT,NULL);
 	register_ioctl32_conversion(DRBD_IOCTL_WAIT_SYNC,NULL);
@@ -1436,9 +1436,6 @@
 {
 	int i;
 
-//#warning "FIXME increase module refcount with each setup device"
-	/* then you need to tear down all devices
-	 * before you can remove the module */
 	for (i = 0; i < minor_count; i++) {
 		drbd_set_state(drbd_conf+i,Secondary);
 		drbd_sync_me(drbd_conf+i);
@@ -1460,7 +1457,6 @@
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_NET_CONFIG);
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_STATE);
 	unregister_ioctl32_conversion(DRBD_IOCTL_SET_SYNC_CONFIG);
-	unregister_ioctl32_conversion(DRBD_IOCTL_UNCONFIG_BOTH);
 	unregister_ioctl32_conversion(DRBD_IOCTL_UNCONFIG_NET);
 	unregister_ioctl32_conversion(DRBD_IOCTL_WAIT_CONNECT);
 	unregister_ioctl32_conversion(DRBD_IOCTL_WAIT_SYNC);
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_proc.c,v
retrieving revision 1.8.2.18
retrieving revision 1.8.2.19
diff -u -3 -r1.8.2.18 -r1.8.2.19
--- drbd_proc.c	8 Feb 2004 12:26:14 -0000	1.8.2.18
+++ drbd_proc.c	9 Feb 2004 10:36:54 -0000	1.8.2.19
@@ -122,8 +122,7 @@
 	int rlen, i;
 	const char *sn;
 
-	static const char *cstate_names[] =
-	{
+	static const char *cstate_names[] = {
 		[Unconfigured]   = "Unconfigured",
 		[StandAlone]     = "StandAlone",
 		[Unconnected]    = "Unconnected",
@@ -141,8 +140,7 @@
 		[PausedSyncS]    = "PausedSyncS",
 		[PausedSyncT]    = "PausedSyncT",
 	};
-	static const char *state_names[] =
-	{
+	static const char *state_names[] = {
 		[Primary]   = "Primary",
 		[Secondary] = "Secondary",
 		[Unknown]   = "Unknown"
===================================================================
RCS file: /var/lib/cvs/drbd/drbd/drbd/drbd_receiver.c,v
retrieving revision 1.97.2.106
retrieving revision 1.97.2.107
diff -u -3 -r1.97.2.106 -r1.97.2.107
--- drbd_receiver.c	9 Feb 2004 09:40:46 -0000	1.97.2.106
+++ drbd_receiver.c	9 Feb 2004 10:36:54 -0000	1.97.2.107
@@ -210,14 +210,15 @@
 	return page;
 }
 
-void drbd_init_ee(drbd_dev *mdev)
+int drbd_init_ee(drbd_dev *mdev)
 {
 	while(mdev->ee_vacant < EE_MININUM ) {
 		if(!drbd_alloc_ee(mdev,GFP_USER)) {
 			ERR("Failed to allocate %d EEs !",EE_MININUM);
-			break;
+			return 0;
 		}
 	}
+	return 1;
 }
 
 int drbd_release_ee(drbd_dev *mdev,struct list_head* list)