[DRBD-user] Kernelpatch to fix "local disk flush failed with status -5"

Anders Henke anders.henke at 1und1.de
Tue Feb 26 21:46:21 CET 2008

Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.


In between, I've posted my findings to lkml, from where it went
to devicemapper-devel.

Jens Axboe created a patch which fixes the kernel not to loose
the EOPNOTSUPP (which in turn results in EIO, the "status -5").

A 2.6.24.2-ready version of Jens Axboe's patch follows:

---cut
--- linux-2.6.24.2/block/ll_rw_blk.c.prepatch	2008-02-11 06:51:11.000000000 +0100
+++ linux-2.6.24.2/block/ll_rw_blk.c	2008-02-26 20:58:05.552467940 +0100
@@ -2667,8 +2667,11 @@
 
 static void bio_end_empty_barrier(struct bio *bio, int err)
 {
-	if (err)
+	if (err) {
+		if (err == -EOPNOTSUPP)
+			set_bit(BIO_EOPNOTSUPP, &bio->bi_flags);
 		clear_bit(BIO_UPTODATE, &bio->bi_flags);
+	}
 
 	complete(bio->bi_private);
 }
@@ -2717,7 +2720,9 @@
 		*error_sector = bio->bi_sector;
 
 	ret = 0;
-	if (!bio_flagged(bio, BIO_UPTODATE))
+	if (bio_flagged(bio, BIO_EOPNOTSUPP))
+		ret = -EOPNOTSUPP;
+	else if (!bio_flagged(bio, BIO_UPTODATE))
 		ret = -EIO;
 
 	bio_put(bio);
---cut

Note: using this patch, you'll see a single warning from DRBD:

"drbd0: local disk flush failed with status -95"

According to the DRBD source, this is intended behaviour.


Anders
-- 
1&1 Internet AG              System Architect
Brauerstrasse 48             v://49.721.91374.50
D-76135 Karlsruhe            f://49.721.91374.225

Amtsgericht Montabaur HRB 6484
Vorstand: Henning Ahlert, Ralph Dommermuth, Matthias Ehrlich, Andreas Gauger,
Thomas Gottschlich, Matthias Greve, Robert Hoffmann, Markus Huhn, Achim Weiss
Aufsichtsratsvorsitzender: Michael Scheeren



More information about the drbd-user mailing list