From: Jens Axboe <axboe@suse.de>
To: Oleg Drokin <green@namesys.com>
Cc: Ingo Molnar <mingo@elte.hu>, Robert Love <rml@tech9.net>,
Thomas Molina <tmolina@cox.net>,
linux-kernel@vger.kernel.org, andre@linux-ide.org
Subject: Re: 2.5 Problem Status Report
Date: Wed, 11 Sep 2002 12:58:07 +0200 [thread overview]
Message-ID: <20020911105807.GF1089@suse.de> (raw)
In-Reply-To: <20020911144740.A911@namesys.com>
On Wed, Sep 11 2002, Oleg Drokin wrote:
> Hello!
>
> On Wed, Sep 11, 2002 at 12:29:26PM +0200, Jens Axboe wrote:
>
> > > ok I see the bug. it's due to the imbalanced nature of ide_map_buffer()
> > > vs ide_unmap_buffer(). i'll cook up a fix right away.
> > Does this make it work?
>
> No. It fails exactly like without the patch.
Hmm, ok I'll try and reproduce it here then.
> > --- include/linux/ide.h~ 2002-09-11 12:27:14.000000000 +0200
> > +++ include/linux/ide.h 2002-09-11 12:27:29.000000000 +0200
> > @@ -597,9 +597,10 @@
> > return rq->buffer + task_rq_offset(rq);
> > }
> >
> > -extern inline void ide_unmap_buffer(char *buffer, unsigned long *flags)
> > +extern inline void ide_unmap_buffer(struct request *rq, char *buffer, unsigned long *flags)
> > {
> > - bio_kunmap_irq(buffer, flags);
> > + if (rq->bio)
> > + bio_kunmap_irq(buffer, flags);
> > }
> >
> > /*
>
> Perhaps you forgot to make sure rq->bio is zeroed on unmapping/freeing?
rq->bio must not be zeroed or free'd or anything like that. ok I see
what happens now. does this patch work for you? just back out the other
patch first (well you don't have to, but might as well).
# This is a BitKeeper generated patch for the following project:
# Project Name: Linux kernel tree
# This patch format is intended for GNU patch command version 2.5 or higher.
# This patch includes the following deltas:
# ChangeSet 1.639 -> 1.640
# include/linux/bio.h 1.17 -> 1.18
#
# The following is the BitKeeper ChangeSet Log
# --------------------------------------------
# 02/09/11 axboe@burns.home.kernel.dk 1.640
# clean up with bio_kmap_irq() thing properly. remove the micro optimization
# of _not_ calling kmap_atomic() if this isn't a highmem page. we could
# keep that and do the inc_preempt_count() ourselves, but I'm not sure
# it's worth it and this is cleaner.
# --------------------------------------------
#
diff -Nru a/include/linux/bio.h b/include/linux/bio.h
--- a/include/linux/bio.h Wed Sep 11 12:57:45 2002
+++ b/include/linux/bio.h Wed Sep 11 12:57:45 2002
@@ -215,17 +215,11 @@
{
unsigned long addr;
- local_save_flags(*flags);
-
- /*
- * could be low
- */
- if (!PageHighMem(bio_page(bio)))
- return bio_data(bio);
-
/*
- * it's a highmem page
+ * might not be a highmem page, but the preempt/irq count
+ * balancing is a lot nicer this way
*/
+ local_save_flags(*flags);
local_irq_disable();
addr = (unsigned long) kmap_atomic(bio_page(bio), KM_BIO_SRC_IRQ);
--
Jens Axboe
next prev parent reply other threads:[~2002-09-11 10:53 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-11 2:00 2.5 Problem Status Report Thomas Molina
2002-09-11 2:29 ` William Lee Irwin III
2002-09-11 18:33 ` Thomas Molina
2002-09-11 20:23 ` William Lee Irwin III
2002-09-11 4:00 ` Robert Love
2002-09-11 7:07 ` Oleg Drokin
2002-09-11 7:26 ` Ingo Molnar
2002-09-11 7:28 ` Oleg Drokin
2002-09-11 7:38 ` Ingo Molnar
2002-09-11 8:05 ` Oleg Drokin
2002-09-11 10:25 ` Jens Axboe
2002-09-11 10:29 ` Jens Axboe
2002-09-11 10:47 ` Oleg Drokin
2002-09-11 10:58 ` Jens Axboe [this message]
2002-09-11 11:07 ` Jens Axboe
2002-09-11 11:16 ` Oleg Drokin
2002-09-11 11:17 ` Jens Axboe
2002-09-11 11:49 ` Jens Axboe
2002-09-11 12:10 ` Oleg Drokin
2002-09-11 15:38 ` Oleg Drokin
2002-09-11 15:46 ` Ingo Molnar
2002-09-11 15:52 ` Ingo Molnar
2002-09-11 17:49 ` Oleg Drokin
2002-09-11 8:07 ` Thomas Molina
2002-09-11 8:12 ` Oleg Drokin
2002-09-11 9:18 ` Adrian Bunk
2002-09-11 7:12 ` Ingo Molnar
2002-09-11 8:04 ` Axel Siebenwirth
2002-09-11 9:21 ` Clemens Schwaighofer
-- strict thread matches above, loose matches on Subject: below --
2002-08-25 11:21 Thomas Molina
2002-08-26 16:42 ` Greg KH
2002-08-26 21:32 ` Thomas Molina
2002-08-02 2:39 2.5 Problem Status report Thomas Molina
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=20020911105807.GF1089@suse.de \
--to=axboe@suse.de \
--cc=andre@linux-ide.org \
--cc=green@namesys.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=rml@tech9.net \
--cc=tmolina@cox.net \
/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.