From: Tejun Heo <tj@kernel.org>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Jens Axboe <jens.axboe@oracle.com>,
Stephen Rothwell <sfr@canb.auug.org.au>,
linux-next@vger.kernel.org
Subject: Re: linux-next: block tree build failure
Date: Wed, 03 Sep 2008 19:29:28 +0200 [thread overview]
Message-ID: <48BEC978.3050507@kernel.org> (raw)
In-Reply-To: <20080903093245.da237b40.akpm@linux-foundation.org>
[-- Attachment #1: Type: text/plain, Size: 1304 bytes --]
Andrew Morton wrote:
> On Wed, 03 Sep 2008 18:27:12 +0200 Tejun Heo <tj@kernel.org> wrote:
>
>> Andrew Morton wrote:
>>> @@ -674,6 +674,8 @@ static void *disk_seqf_next(struct seq_f
>>> struct device *dev;
>>>
>>> (*pos)++;
>>> + if (seqf->private == NULL)
>>> + return NULL;
>>> dev = class_dev_iter_next(seqf->private);
>>> if (dev)
>>> return dev_to_disk(dev);
>> Ehh... next can't be called with NULL private.
>
> My computer disagreed ;)
>
>> Where can I take a look
>> at the merged tree? There have been two separate changes to that area
>> of code. Ad-hoc behavior fix for 2.6.27 and general clean up scheduled
>> for 2.6.28 and the two use seqf->private for different purposes. Maybe
>> the two got mixed up?
>
> It's linux-next-20080903
Hmmm... Can't see how it can happen and can't reproduce it either.
seqf->private is initialized from disk_seqf_start(). If allocation
fails, it returns ERR_PTR(-ENOMEM). On error return from start, both
seq_file::seq_read and seq_file::traverse() immediately calls ->stop()
and fails, so ->next can't really be called with null ->private.
Just to make sure, I made disk_seqf_start() fail and it works (or
rather fails) as expected.
Argggghh... strange. Can you please try the attached patch and post
the log?
Thanks.
--
tejun
[-- Attachment #2: genhd-next-dbg.patch --]
[-- Type: text/x-patch, Size: 1367 bytes --]
diff --git a/block/genhd.c b/block/genhd.c
index ed926b7..b76c56b 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -655,8 +655,11 @@ static void *disk_seqf_start(struct seq_file *seqf, loff_t *pos)
struct device *dev;
iter = kmalloc(sizeof(*iter), GFP_KERNEL);
- if (!iter)
+ if (!iter) {
+ printk("XXX disk_seqf_start: -ENOMEM\n");
return ERR_PTR(-ENOMEM);
+ }
+ printk("XXX disk_seqf_start: iter=%p pos=%lld\n", iter, (long long)*pos);
seqf->private = iter;
class_dev_iter_init(iter, &block_class, NULL, &disk_type);
@@ -673,6 +676,8 @@ static void *disk_seqf_next(struct seq_file *seqf, void *v, loff_t *pos)
{
struct device *dev;
+ printk("XXX disk_seqf_next: iter=%p pos=%lld\n",
+ seqf->private, (long long)*pos);
(*pos)++;
dev = class_dev_iter_next(seqf->private);
if (dev)
@@ -685,6 +690,7 @@ static void disk_seqf_stop(struct seq_file *seqf, void *v)
{
struct class_dev_iter *iter = seqf->private;
+ printk("XXX disk_seqf_stop: iter=%p\n", seqf->private);
/* stop is called even after start failed :-( */
if (iter) {
class_dev_iter_exit(iter);
@@ -697,7 +703,7 @@ static void *show_partition_start(struct seq_file *seqf, loff_t *pos)
static void *p;
p = disk_seqf_start(seqf, pos);
- if (!IS_ERR(p) && p)
+ if (!IS_ERR(p) && p && !*pos)
seq_puts(seqf, "major minor #blocks name\n\n");
return p;
}
next prev parent reply other threads:[~2008-09-03 17:31 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-09-03 6:15 linux-next: block tree build failure Stephen Rothwell
2008-09-03 6:34 ` Jens Axboe
2008-09-03 7:04 ` Andrew Morton
2008-09-03 7:07 ` Jens Axboe
2008-09-03 8:50 ` Stephen Rothwell
2008-09-03 16:05 ` Andrew Morton
2008-09-03 16:27 ` Tejun Heo
2008-09-03 16:32 ` Andrew Morton
2008-09-03 17:29 ` Tejun Heo [this message]
2008-09-04 4:06 ` Andrew Morton
-- strict thread matches above, loose matches on Subject: below --
2009-12-07 8:44 Stephen Rothwell
2009-12-07 8:49 ` Jens Axboe
2009-12-07 9:23 ` Stephen Rothwell
2009-12-07 9:28 ` Jens Axboe
2009-12-04 3:36 Stephen Rothwell
2009-12-04 7:43 ` Jens Axboe
2009-12-04 13:54 ` Jens Axboe
2009-12-04 22:49 ` Stephen Rothwell
2009-12-05 9:20 ` Jens Axboe
2009-10-27 3:34 Stephen Rothwell
2009-10-27 5:31 ` Jens Axboe
2009-10-27 5:50 ` Stephen Rothwell
2009-10-07 2:55 Stephen Rothwell
[not found] ` <20091007135505.df1f058c.sfr-3FnU+UHB4dNDw9hX6IcOSA@public.gmane.org>
2009-10-07 6:33 ` Jens Axboe
2009-09-23 4:51 Stephen Rothwell
2009-09-23 7:11 ` Lars Ellenberg
2009-09-23 7:32 ` Stephen Rothwell
[not found] ` <20090923071152.GA8000-pI6ZZpWkm2Ob3Om96lsyHpni2hclXnRB@public.gmane.org>
2009-09-23 11:12 ` Lars Ellenberg
[not found] ` <20090923111225.GC8000-pI6ZZpWkm2Ob3Om96lsyHpni2hclXnRB@public.gmane.org>
2009-09-23 11:56 ` Stephen Rothwell
2009-09-14 4:27 Stephen Rothwell
2009-09-14 6:25 ` Jens Axboe
2009-09-11 4:32 Stephen Rothwell
2009-09-11 5:30 ` Jens Axboe
2009-09-01 4:59 Stephen Rothwell
2009-09-01 5:30 ` Stephen Rothwell
2009-09-01 5:38 ` Jens Axboe
2009-09-01 8:13 ` Jens Axboe
2009-09-01 8:38 ` Stephen Rothwell
2009-07-07 3:49 Stephen Rothwell
2009-07-07 6:38 ` Jens Axboe
2009-07-07 6:45 ` Stephen Rothwell
2009-07-07 13:57 ` Christoph Hellwig
2009-07-07 14:31 ` Jens Axboe
2009-07-08 3:17 ` Stephen Rothwell
2009-07-08 6:55 ` Jens Axboe
2009-07-07 13:55 ` Christoph Hellwig
2009-07-08 0:41 ` Stephen Rothwell
2009-06-26 2:53 Stephen Rothwell
2009-06-26 4:34 ` NeilBrown
2009-06-26 4:39 ` Jens Axboe
2009-06-26 5:49 ` Neil Brown
2009-06-26 9:00 ` Jens Axboe
2009-05-25 4:35 Stephen Rothwell
2009-05-25 5:38 ` Martin K. Petersen
2009-05-25 5:54 ` Stephen Rothwell
2009-05-13 4:04 Stephen Rothwell
2009-05-13 9:21 ` Tejun Heo
2009-05-13 12:07 ` James Bottomley
2009-05-15 0:45 ` Tejun Heo
2009-05-15 2:35 ` James Bottomley
2009-05-15 2:47 ` Tejun Heo
2009-05-15 3:24 ` James Bottomley
2009-05-15 3:38 ` Tejun Heo
2009-04-09 3:37 Stephen Rothwell
2009-04-14 2:35 ` Stephen Rothwell
2009-04-14 6:21 ` Jens Axboe
2009-04-14 6:26 ` Stephen Rothwell
2009-04-14 6:32 ` Jens Axboe
2008-11-26 10:29 Stephen Rothwell
2008-11-26 10:42 ` Ingo Molnar
2008-11-26 10:47 ` Jens Axboe
2008-11-26 11:16 ` Ingo Molnar
2008-11-26 11:20 ` Jens Axboe
2008-11-26 11:28 ` Ingo Molnar
2008-11-26 11:23 ` Mathieu Desnoyers
2008-11-26 11:25 ` Ingo Molnar
[not found] <20081110145442.d60e57b7.sfr@canb.auug.org.au>
2008-11-10 4:13 ` malahal
2008-11-10 4:46 ` malahal
2008-11-10 12:12 ` Jens Axboe
2008-09-18 3:04 Stephen Rothwell
2008-09-18 4:31 ` Jens Axboe
2008-09-15 5:18 Stephen Rothwell
2008-09-15 5:38 ` Alex Dubov
2008-09-15 13:18 ` Jens Axboe
2008-08-29 5:07 Stephen Rothwell
2008-08-29 9:00 ` Jens Axboe
[not found] <20080627165326.9222c841.sfr@canb.auug.org.au>
2008-06-27 7:00 ` Jens Axboe
2008-06-27 7:14 ` 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=48BEC978.3050507@kernel.org \
--to=tj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=jens.axboe@oracle.com \
--cc=linux-next@vger.kernel.org \
--cc=sfr@canb.auug.org.au \
/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;
as well as URLs for NNTP newsgroup(s).