Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
Hi,
i'm trying to compile DRBD on a RHEL6 based kernel like the one from
OpenVZ (2.6.32).
Sadly every build failes with:
CC [M] /usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.o
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c: In function
'drbd_submit_ee':
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c:1282: error:
'REQ_UNPLUG' undeclared (first use in this function)
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c:1282: error: (Each
undeclared identifier is reported only once
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c:1282: error: for each
function it appears in.)
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c: In function
'wire_flags_to_bio':
/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.c:1860: error:
'REQ_UNPLUG' undeclared (first use in this function)
make[3]: *** [/usr/src/drbd/drbd-8.3.11rc1/drbd/drbd_receiver.o] Error 1
make[2]: *** [_module_/usr/src/drbd/drbd-8.3.11rc1/drbd] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.32-015.1-openvz-amd'
make[1]: *** [kbuild] Error 2
make[1]: Leaving directory `/usr/src/drbd/drbd-8.3.11rc1/drbd'
make: *** [module] Error 2
I then applied the following patch which results in a loadable module
diff -upr linux-2.6.32.patched.orig/drivers/block/drbd/drbd_wrappers.h
linux-2.6.32/drivers/block/drbd/drbd_wrappers.h
--- linux-2.6.32.patched.orig/drivers/block/drbd/drbd_wrappers.h
2011-05-31 14:41:08.319923899 +0200
+++ linux-2.6.32/drivers/block/drbd/drbd_wrappers.h 2011-05-31
14:28:35.745728899 +0200
@@ -860,14 +860,20 @@ enum {
#define DRBD_REQ_UNPLUG (1UL << BIO_RW_SYNC)
#elif defined(REQ_SYNC) /* introduced in 2.6.36 */
#define DRBD_REQ_SYNC REQ_SYNC
+
+/* RHEL 6 seems to has backported REQ_SYNC but not REQ_UNPLUG */
+#ifndef REQ_UNPLUG
+#define DRBD_REQ_UNPLUG (1UL << BIO_RW_UNPLUG)
+#else
#define DRBD_REQ_UNPLUG REQ_UNPLUG
+#endif
+
#else
/* cannot test on defined(BIO_RW_SYNCIO), it may be an enum */
#define DRBD_REQ_SYNC (1UL << BIO_RW_SYNCIO)
#define DRBD_REQ_UNPLUG (1UL << BIO_RW_UNPLUG)
#endif
-
#ifdef REQ_FLUSH /* introduced in 2.6.36, now equivalent to bi_rw */
#define DRBD_REQ_FLUSH REQ_FLUSH
#define DRBD_REQ_FUA REQ_FUA
But when you're trying to write to the mounted drbd disk then you got:
[ 59.754706] JBD2: I/O error detected when updating journal superblock
for drbd0-8.
[ 59.754948] Aborting journal on device drbd0-8.
[ 59.755004] JBD2: I/O error detected when updating journal superblock
for drbd0-8.
[ 68.648409] EXT4-fs error (device drbd0): ext4_journal_start_sb:
Detected aborted journal
[ 68.648601] EXT4-fs (drbd0): Remounting filesystem read-only
--
Regards
Stefan