[DRBD-cvs] svn commit by phil - r2543 - trunk/drbd - This was quite expensive, until we finally understood t

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Wed Oct 18 17:06:15 CEST 2006


Author: phil
Date: 2006-10-18 17:06:14 +0200 (Wed, 18 Oct 2006)
New Revision: 2543

Modified:
   trunk/drbd/drbd_req.c
   trunk/drbd/drbd_worker.c
Log:
This was quite expensive, until we finally understood that it was not a
real IO error, but that the backing device simply said, that it does
not support BARRIERS ;(


Modified: trunk/drbd/drbd_req.c
===================================================================
--- trunk/drbd/drbd_req.c	2006-10-17 17:39:57 UTC (rev 2542)
+++ trunk/drbd/drbd_req.c	2006-10-18 15:06:14 UTC (rev 2543)
@@ -747,6 +747,12 @@
 	drbd_request_t *req;
 	int local, remote;
 
+	/* Currently our BARRIER code is disabled. */
+	if(unlikely(bio_barrier(bio))) {
+		bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
+		return 0;
+	}
+
 	/* allocate outside of all locks; get a "reference count" (ap_bio_cnt)
 	 * to avoid races with the disconnect/reconnect code.  */
 	inc_ap_bio(mdev);

Modified: trunk/drbd/drbd_worker.c
===================================================================
--- trunk/drbd/drbd_worker.c	2006-10-17 17:39:57 UTC (rev 2542)
+++ trunk/drbd/drbd_worker.c	2006-10-18 15:06:14 UTC (rev 2543)
@@ -165,6 +165,8 @@
 	// see above
 	if (bio->bi_size) return 1;
 
+	if(error) DUMPI(error);
+
 	/* to avoid recursion in _req_mod */
 	what = error
 	       ? (bio_data_dir(bio) == WRITE)



More information about the drbd-cvs mailing list