From: Peter Osterlund <petero2@telia.com>
To: Jens Axboe <axboe@suse.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [PATCH] kernel BUG at scsi_merge.c:83
Date: 02 Jan 2002 12:23:37 +0100 [thread overview]
Message-ID: <m21yh93sjq.fsf@pengo.localdomain> (raw)
In-Reply-To: <m2zo3xr0qu.fsf@pengo.localdomain> <20020102083223.J16092@suse.de>
In-Reply-To: <20020102083223.J16092@suse.de>
Jens Axboe <axboe@suse.de> writes:
> On Wed, Jan 02 2002, Peter Osterlund wrote:
> > Hi!
> >
> > While doing some stress testing on the 2.5.2-pre5 kernel, I am hitting
> > a kernel BUG at scsi_merge.c:83, followed by a kernel panic. The
> > problem is that scsi_alloc_sgtable fails because the request contains
> > too many physical segments. I think this patch is the correct fix:
>
> Correct, ll_rw_blk default is ok now. I missed this when killing
> scsi_malloc/scsi_dma, thanks.
It turns out this is still not enough to fix the problem for me,
because ll_new_hw_segment is still allowing nr_phys_segments to become
too large. Is the following patch the correct way to deal with this
problem, or is that case supposed to be prevented by some other means?
At least, this patch prevents the kernel panic during my stress test.
--- linux-2.5.2-pre5/drivers/block/ll_rw_blk.c Mon Dec 31 14:56:37 2001
+++ linux-2.5-packet/drivers/block/ll_rw_blk.c Wed Jan 2 11:44:21 2002
@@ -530,6 +530,7 @@
struct bio *bio)
{
int nr_hw_segs = bio_hw_segments(q, bio);
+ int nr_phys_segs;
if (req->nr_hw_segments + nr_hw_segs > q->max_hw_segments) {
req->flags |= REQ_NOMERGE;
@@ -537,12 +538,19 @@
return 0;
}
+ nr_phys_segs = bio_phys_segments(q, bio);
+ if (req->nr_phys_segments + nr_phys_segs > q->max_phys_segments) {
+ req->flags |= REQ_NOMERGE;
+ q->last_merge = NULL;
+ return 0;
+ }
+
/*
* This will form the start of a new hw segment. Bump both
* counters.
*/
req->nr_hw_segments += nr_hw_segs;
- req->nr_phys_segments += bio_phys_segments(q, bio);
+ req->nr_phys_segments += nr_phys_segs;
return 1;
}
--
Peter Osterlund - petero2@telia.com
http://w1.894.telia.com/~u89404340
next prev parent reply other threads:[~2002-01-02 11:25 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-01-02 1:38 Peter Osterlund
2002-01-02 7:32 ` Jens Axboe
2002-01-02 11:23 ` Peter Osterlund [this message]
2002-01-03 4:28 Douglas Gilbert
2002-01-03 8:18 ` Jens Axboe
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=m21yh93sjq.fsf@pengo.localdomain \
--to=petero2@telia.com \
--cc=axboe@suse.de \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®