[Drbd-dev] Panic in _drbd_send_page() again.
Graham, Simon
Simon.Graham at stratus.com
Fri May 4 21:02:45 CEST 2007
> so what you suggest is:
>
> Index: drbd_req.c
> ===================================================================
> --- drbd_req.c (revision 2864)
> +++ drbd_req.c (working copy)
> @@ -255,6 +255,16 @@
> print_rq_state(req, "_req_may_be_done");
> MUST_HOLD(&mdev->req_lock)
>
> + /* we must not complete the master bio, while it is
> + * still being processed by _drbd_send_zc_bio
> (drbd_send_dblock)
> + * not yet acknowledged by the peer
> + * not yet completed by the local io subsystem
> + * these flags may get cleared in any order by
> + * the worker,
> + * the receiver,
> + * the bio_endio completion callbacks.
> + */
> + if (s & RQ_NET_QUEUED) return;
> if (s & RQ_NET_PENDING) return;
> if (s & RQ_LOCAL_PENDING) return;
>
I think this is correct -- in fact, I _think_ you could probably do away
with the RQ_NET_SENT flag (since this is, I think, the same as
!RQ_NET_QUEUED) which would be good (always good to remove extra
flags!).
In addition, there is code in req_mod right now that checks RQ_NET_SENT
before calling req_may_be_done -- this is no lomger needed since
req_may_be_done does the check. I've attached a completely untested
proposed patch that does this in addition to the change above... let me
know what you think...
Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: net-queued.patch
Type: application/octet-stream
Size: 4038 bytes
Desc: net-queued.patch
Url : http://lists.linbit.com/pipermail/drbd-dev/attachments/20070504/2dacee58/net-queued.obj
More information about the drbd-dev
mailing list