Note: "permalinks" may not be as permanent as we would like,
direct links of old sources may well be a few messages off.
On Wed, Oct 01, 2008 at 10:00:29AM +0200, Peter Sabaini wrote:
> On Tuesday 30 September 2008 17:28:30 Lars Ellenberg wrote:
> > On Tue, Sep 30, 2008 at 04:48:24PM +0200, Peter Sabaini wrote:
> > > Hi,
> > >
> > > Problem: while configured as a slave that slave crashed (during writing
> > > on the master) with a kernel panic. We only managed to get a screenshot
> > > from the machine, and the DRBD module seems to be involved:
> > > http://download.ehealth-systems.at/25092008195.jpg
> > >
> > > This is a HP proliant DL385 running kernel 2.6.22.12 with VServer patches
> > > vs2.2.0.5; DRBD module and userland is v8.2.5
> > >
> > > I'm currently checking the hardware and trying to reproduce this, but in
> > > the meantime -- has anyone had problems like this?
> >
> > yes.
> > fixed in git:
> >
> >
> > http://git.drbd.org/?p=drbd-8.2.git;a=commitdiff;h=bac93c1ffdd5a090e05c22b6
> >ca1f7a53741ad09f
>
> Hm, one more question: do you think it'd be a problem if we just applied that
> patch to 8.2.5 and recompile, while 8.2.7 isn't out?
8.2.6 is out.
8.2.6 plus below patch is the best I can give you now.
on the way to 8.2.7, there is some more bugfixes,
but those include code restructuring, which need more testing.
diff --git a/drbd/drbd_main.c b/drbd/drbd_main.c
index be69365..d14cb6f 100644
--- a/drbd/drbd_main.c
+++ b/drbd/drbd_main.c
@@ -2564,7 +2564,7 @@ STATIC void drbd_cleanup(void)
if (minor_table) {
if (drbd_proc)
- remove_proc_entry("drbd", &proc_root);
+ remove_proc_entry("drbd", NULL);
i = minor_count;
while (i--) {
struct drbd_conf *mdev = minor_to_mdev(i);
@@ -2786,7 +2786,7 @@ int __init drbd_init(void)
/*
* register with procfs
*/
- drbd_proc = create_proc_entry("drbd", S_IFREG | S_IRUGO , &proc_root);
+ drbd_proc = create_proc_entry("drbd", S_IFREG | S_IRUGO , NULL);
if (!drbd_proc) {
printk(KERN_ERR "drbd: unable to register proc file\n");
diff --git a/drbd/drbd_receiver.c b/drbd/drbd_receiver.c
index 71e7601..5544c35 100644
--- a/drbd/drbd_receiver.c
+++ b/drbd/drbd_receiver.c
@@ -3454,6 +3454,8 @@ STATIC int got_OVResult(struct drbd_conf *mdev, struct Drbd_Header* h)
sector = be64_to_cpu(p->sector);
size = be32_to_cpu(p->blksize);
+ update_peer_seq(mdev, be32_to_cpu(p->seq_num));
+
if (be64_to_cpu(p->block_id) == ID_OUT_OF_SYNC) {
drbd_ov_oos_found(mdev, sector, size);
} else ov_oos_print(mdev);
@@ -3462,7 +3464,7 @@ STATIC int got_OVResult(struct drbd_conf *mdev, struct Drbd_Header* h)
dec_rs_pending(mdev);
if (--mdev->ov_left == 0) {
- w = kmalloc(sizeof(w), GFP_KERNEL);
+ w = kmalloc(sizeof(*w), GFP_KERNEL);
if (w) {
w->cb = w_ov_finished;
drbd_queue_work_front(&mdev->data.work, w);
diff --git a/user/drbdsetup.c b/user/drbdsetup.c
index 2860e20..b81f78f 100644
--- a/user/drbdsetup.c
+++ b/user/drbdsetup.c
@@ -45,6 +45,7 @@
#include <sys/time.h>
#include <time.h>
+#define __bitwise // Buildfix for broken RHEL4 kernels (2.6.9_78.0.1)
#include <linux/netlink.h>
#include <linux/connector.h>
--
: Lars Ellenberg
: LINBIT | Your Way to High Availability
: DRBD/HA support and consulting http://www.linbit.com
DRBD® and LINBIT® are registered trademarks of LINBIT, Austria.
__
please don't Cc me, but send to list -- I'm subscribed