[DRBD-cvs] r1464 - trunk/drbd

drbd-user@lists.linbit.com drbd-user@lists.linbit.com
Wed, 28 Jul 2004 15:03:18 +0200 (CEST)


Author: lars
Date: 2004-07-28 15:03:18 +0200 (Wed, 28 Jul 2004)
New Revision: 1464

Modified:
   trunk/drbd/drbd_receiver.c
Log:
improve performance with proto A and B (hopefully)

Modified: trunk/drbd/drbd_receiver.c
===================================================================
--- trunk/drbd/drbd_receiver.c	2004-07-28 13:01:50 UTC (rev 1463)
+++ trunk/drbd/drbd_receiver.c	2004-07-28 13:03:18 UTC (rev 1464)
@@ -843,17 +843,16 @@
 
 STATIC void receive_data_tail(drbd_dev *mdev,int data_size)
 {
-	/* Actually the primary can send up to NR_REQUEST / 3 blocks,
-	 * but we already start when we have NR_REQUEST / 4 blocks.
+	/* kick lower level device, if we have more than (arbitrary number)
+	 * reference counts on it, which typically are locally submitted io
+	 * requests.  don't use unacked_cnt, so we speed up proto A and B, too.
 	 *
-	 * This code is only with protocol C relevant.
+	 * XXX maybe: make that arbitrary number configurable.
+	 * for now, I choose 1/16 of max-epoch-size.
 	 */
-#define NUMBER 24
-	if(atomic_read(&mdev->unacked_cnt) >= NUMBER ) {
+	if (atomic_read(&mdev->local_cnt) >= (mdev->conf.max_epoch_size>>4) ) {
 		drbd_kick_lo(mdev);
 	}
-#undef NUMBER
-
 	mdev->writ_cnt+=data_size>>9;
 }