From: Philipp Reisner <philipp.reisner@linbit.com>
To: drbd-dev@lists.linbit.com
Cc: "Montrose, Ernest" <Ernest.Montrose@stratus.com>
Subject: Re: [Drbd-dev] DRBD8: Panic in drbd_bm_write_sect() after an io errorduring resync.
Date: Fri, 16 Feb 2007 12:43:52 +0100 [thread overview]
Message-ID: <200702161243.52905.philipp.reisner@linbit.com> (raw)
In-Reply-To: <BD7042533C2F8943A6A4257A9E31C45439C8FC@EXNA.corp.stratus.com>
Am Donnerstag, 15. Februar 2007 16:44 schrieb Montrose, Ernest:
> Phil,
> I will try all these but I think I have some clues for you that may lead
> you to a fix.
> I instrumented the driver and caused the crash. Essentially what I
> understand to be happening
> Is that after_state_ch() is setting mdev->bc to NULL and then
> drbd_io_error() is using it
> after in: drbd_io_error(){.......
> If(inc_local_if_state(mdev,Failed )){
> eh = mdev->bc->dc.on_io_error; <-----we die here I
> think.mdev->bc is NULL
> ...
> }
> Mdev->bc was set to Null earlier in after_state_ch(){.....
> If(os.disk >Diskless && ns.disk == Diskless){
> ....mdev->bc = NULL;
> ..
> }
>
> This is some sort of a race condition as this does not happen all the
> times.
Ernest,
At first look I would say this is not possible. Because in
after_state_ch() it only gets freed when we already reached the
Diskless state.
In drbd_io_error() the access to mdev->bc is protected by the
inc_local() - dec_local() clasp.
In case we are Diskless that inc_local_if...() fails.
And on the other side, before freeing it in after_state_ch()
we wait until the local_count really reached 0.
PS: Was my explanation how to create that .s files too brief ?
-phil
--
: Dipl-Ing Philipp Reisner Tel +43-1-8178292-50 :
: LINBIT Information Technologies GmbH Fax +43-1-8178292-82 :
: Vivenotgasse 48, 1120 Vienna, Austria http://www.linbit.com :
next prev parent reply other threads:[~2007-02-16 11:43 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-02-15 15:44 [Drbd-dev] DRBD8: Panic in drbd_bm_write_sect() after an io errorduring resync Montrose, Ernest
2007-02-16 11:43 ` Philipp Reisner [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-02-16 14:55 Montrose, Ernest
2007-02-16 17:31 ` Lars Ellenberg
2007-02-19 14:13 ` Philipp Reisner
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=200702161243.52905.philipp.reisner@linbit.com \
--to=philipp.reisner@linbit.com \
--cc=Ernest.Montrose@stratus.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.