From: Philipp Reisner <philipp.reisner@linbit.com>
To: drbd-dev@lists.linbit.com
Subject: Re: [Drbd-dev] DRBD-8 - crash due to NULL page* in drbd_send_page
Date: Wed, 16 Aug 2006 10:52:00 +0200 [thread overview]
Message-ID: <200608161052.00607.philipp.reisner@linbit.com> (raw)
In-Reply-To: <200608161044.31669.philipp.reisner@linbit.com>
[-- Attachment #1: Type: text/plain, Size: 779 bytes --]
> > Assuming for the minute that this IS the cause, what would a suitable
> > solution be? We really need to delay processing the Ack until the
> > send-dblock/send-block has finished -- i.e. we should wait until the
> > RQ_DRBD_ON_WIRE flag is set in the request -- is there something
> > suitable we could issue a wait_event_interruptible() on in
> > got_BlockAck() to wait for this?
[...]
> I attached the patch. I guess you will rerun your tests with this
> patch. [ it is completely untested ]
>
And the second version of that patch...
--
: Dipl-Ing Philipp Reisner Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH Fax +43-1-8178292-82 :
: Schönbrunnerstr 244, 1120 Vienna, Austria http://www.linbit.com :
[-- Attachment #2: for_simon2.diff --]
[-- Type: text/x-diff, Size: 1692 bytes --]
Index: drbd_worker.c
===================================================================
--- drbd_worker.c (revision 2373)
+++ drbd_worker.c (working copy)
@@ -564,12 +564,10 @@
ok = drbd_send_dblock(mdev,req);
if (ok) {
- spin_lock_irq(&mdev->req_lock);
- req->rq_status |= RQ_DRBD_ON_WIRE;
- spin_unlock_irq(&mdev->req_lock);
-
inc_ap_pending(mdev);
+ drbd_end_req(req,RQ_DRBD_ON_WIRE,1,drbd_req_get_sector(req));
+
if(mdev->net_conf->wire_protocol == DRBD_PROT_A) {
dec_ap_pending(mdev);
drbd_end_req(req, RQ_DRBD_SENT, 1,
Index: drbd_req.c
===================================================================
--- drbd_req.c (revision 2373)
+++ drbd_req.c (working copy)
@@ -341,7 +341,7 @@
if (!local)
req->rq_status |= RQ_DRBD_LOCAL;
if (!remote)
- req->rq_status |= RQ_DRBD_SENT;
+ req->rq_status |= RQ_DRBD_SENT | RQ_DRBD_ON_WIRE;
/* we need to plug ALWAYS since we possibly need to kick lo_dev */
drbd_plug_device(mdev);
Index: drbd_int.h
===================================================================
--- drbd_int.h (revision 2373)
+++ drbd_int.h (working copy)
@@ -233,9 +233,9 @@
#define RQ_DRBD_NOTHING 0x0001
#define RQ_DRBD_SENT 0x0010 // We got an ack
#define RQ_DRBD_LOCAL 0x0020 // We wrote it to the local disk
-#define RQ_DRBD_DONE 0x0030 // We are done ;)
#define RQ_DRBD_IN_TL 0x0040 // Set when it is in the TL
#define RQ_DRBD_ON_WIRE 0x0080 // Set as soon as it is on the socket...
+#define RQ_DRBD_DONE ( RQ_DRBD_SENT + RQ_DRBD_LOCAL + RQ_DRBD_ON_WIRE )
/* drbd_meta-data.c (still in drbd_main.c) */
#define DRBD_MD_MAGIC (DRBD_MAGIC+4) // 4th incarnation of the disk layout.
next prev parent reply other threads:[~2006-08-16 8:51 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-15 19:46 [Drbd-dev] DRBD-8 - crash due to NULL page* in drbd_send_page Graham, Simon
2006-08-16 8:44 ` Philipp Reisner
2006-08-16 8:52 ` Philipp Reisner [this message]
-- strict thread matches above, loose matches on Subject: below --
2006-08-16 13:37 Graham, Simon
2006-08-16 3:32 Graham, Simon
2006-08-15 20:30 Graham, Simon
2006-08-15 21:29 ` Lars Ellenberg
2006-08-15 18:55 Graham, Simon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200608161052.00607.philipp.reisner@linbit.com \
--to=philipp.reisner@linbit.com \
--cc=drbd-dev@lists.linbit.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.