* Re: [Bugme-new] [Bug 11323] New: /proc/diskstats does not contain all disk devices
[not found] <bug-11323-10286@http.bugzilla.kernel.org/>
@ 2008-08-13 20:01 ` Andrew Morton
2008-08-13 23:51 ` Greg KH
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2008-08-13 20:01 UTC (permalink / raw)
To: Greg KH, Kay Sievers; +Cc: bugme-daemon, linux-kernel, genanr
On Wed, 13 Aug 2008 12:12:44 -0700 (PDT)
bugme-daemon@bugzilla.kernel.org wrote:
>
> http://bugzilla.kernel.org/show_bug.cgi?id=11323
>
> Summary: /proc/diskstats does not contain all disk devices
> Product: File System
> Version: 2.5
> KernelVersion: 2.6.27-rcX
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: normal
> Priority: P1
> Component: Other
> AssignedTo: fs_other@kernel-bugs.osdl.org
> ReportedBy: genanr@emsphone.com
>
>
> Latest working kernel version: 2.6.26
> Earliest failing kernel version: 2.6.27-rc1
Post-2.6.26 regression.
> Distribution: Debian
> Hardware Environment: Dell
> Software Environment:
> Problem Description: /proc/diskstats does not contain all the block devices it
> should. /sys/block has all the devices, but /proc/diskstats does not.
>
> Steps to reproduce: boot a system with >9 (10?) disk devices (24 block
> devices?)
The below would be a prime suspect.
Unfortunately a simple revert results in an uncompilable kernel.
(It drives me up the wall and across the ceiling how the patch has a
commit "date" of three months prior to the 2.6.26 release, however it
wasn't present in 2.6.26. What a dumb feature. How do I make it stop
doing this? gitk kind of gets it right, but isn't useful across DSL)
commit 27f302519148f311307637d4c9a6d0fd87d07e4c
Author: Greg Kroah-Hartman <gregkh@suse.de>
Date: Thu May 22 17:21:08 2008 -0400
block: make /proc/partitions and /proc/diskstats use class_find_device()
Use the proper class iterator function instead of mucking around in the
internals of the class structures.
Cc: Kay Sievers <kay.sievers@vrfy.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
diff --git a/block/genhd.c b/block/genhd.c
index 70f1d70..c13cc77 100644
--- a/block/genhd.c
+++ b/block/genhd.c
@@ -317,17 +317,21 @@ static void *part_start(struct seq_file
return NULL;
}
+static int find_next(struct device *dev, void *data)
+{
+ if (dev->type == &disk_type)
+ return 1;
+ return 0;
+}
+
static void *part_next(struct seq_file *part, void *v, loff_t *pos)
{
struct gendisk *gp = v;
struct device *dev;
++*pos;
- list_for_each_entry(dev, &gp->dev.node, node) {
- if (&dev->node == &block_class.devices)
- return NULL;
- if (dev->type == &disk_type)
- return dev_to_disk(dev);
- }
+ dev = class_find_device(&block_class, &gp->dev, NULL, find_next);
+ if (dev)
+ return dev_to_disk(dev);
return NULL;
}
@@ -578,12 +582,9 @@ static void *diskstats_next(struct seq_f
struct device *dev;
++*pos;
- list_for_each_entry(dev, &gp->dev.node, node) {
- if (&dev->node == &block_class.devices)
- return NULL;
- if (dev->type == &disk_type)
- return dev_to_disk(dev);
- }
+ dev = class_find_device(&block_class, &gp->dev, NULL, find_next);
+ if (dev)
+ return dev_to_disk(dev);
return NULL;
}
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Bugme-new] [Bug 11323] New: /proc/diskstats does not contain all disk devices
2008-08-13 20:01 ` [Bugme-new] [Bug 11323] New: /proc/diskstats does not contain all disk devices Andrew Morton
@ 2008-08-13 23:51 ` Greg KH
2008-08-14 0:20 ` Andrew Morton
0 siblings, 1 reply; 3+ messages in thread
From: Greg KH @ 2008-08-13 23:51 UTC (permalink / raw)
To: Andrew Morton; +Cc: Kay Sievers, bugme-daemon, linux-kernel, genanr
On Wed, Aug 13, 2008 at 01:01:58PM -0700, Andrew Morton wrote:
> > Problem Description: /proc/diskstats does not contain all the block devices it
> > should. /sys/block has all the devices, but /proc/diskstats does not.
> >
> > Steps to reproduce: boot a system with >9 (10?) disk devices (24 block
> > devices?)
>
> The below would be a prime suspect.
>
> Unfortunately a simple revert results in an uncompilable kernel.
>
>
> (It drives me up the wall and across the ceiling how the patch has a
> commit "date" of three months prior to the 2.6.26 release, however it
> wasn't present in 2.6.26. What a dumb feature. How do I make it stop
> doing this? gitk kind of gets it right, but isn't useful across DSL)
$ git show --pretty=fuller 27f302519148f311307637d4c9a6d0fd87d07e4c
commit 27f302519148f311307637d4c9a6d0fd87d07e4c
Author: Greg Kroah-Hartman <gregkh@suse.de>
AuthorDate: Thu May 22 17:21:08 2008 -0400
Commit: Greg Kroah-Hartman <gregkh@suse.de>
CommitDate: Mon Jul 21 21:54:49 2008 -0700
There is a commit date, and the date the patch was written. Both are
preserved in git.
And even if it was committed to a branch before 2.6.26 was released, and
then pulled in, that's fine, it's distributed development :)
$ git describe --contains 27f302519148f311307637d4c9a6d0fd87d07e4c
v2.6.27-rc1~866^2~40
showing it first showed up on 2.6.27-rc1.
Anyway, I don't have any systems with such a large number of devices to
test with. Running git-bisect should narrow the problem down, you can't
just revert this patch as later-on patches relied on it, as you found
out...
Also, what is the output of these files, what exactly is missing?
thanks,
greg k-h
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [Bugme-new] [Bug 11323] New: /proc/diskstats does not contain all disk devices
2008-08-13 23:51 ` Greg KH
@ 2008-08-14 0:20 ` Andrew Morton
0 siblings, 0 replies; 3+ messages in thread
From: Andrew Morton @ 2008-08-14 0:20 UTC (permalink / raw)
To: Greg KH; +Cc: kay.sievers, bugme-daemon, linux-kernel, genanr
On Wed, 13 Aug 2008 16:51:12 -0700
Greg KH <greg@kroah.com> wrote:
> On Wed, Aug 13, 2008 at 01:01:58PM -0700, Andrew Morton wrote:
> > > Problem Description: /proc/diskstats does not contain all the block devices it
> > > should. /sys/block has all the devices, but /proc/diskstats does not.
> > >
> > > Steps to reproduce: boot a system with >9 (10?) disk devices (24 block
> > > devices?)
> >
> > The below would be a prime suspect.
> >
> > Unfortunately a simple revert results in an uncompilable kernel.
> >
> >
> > (It drives me up the wall and across the ceiling how the patch has a
> > commit "date" of three months prior to the 2.6.26 release, however it
> > wasn't present in 2.6.26. What a dumb feature. How do I make it stop
> > doing this? gitk kind of gets it right, but isn't useful across DSL)
>
> $ git show --pretty=fuller 27f302519148f311307637d4c9a6d0fd87d07e4c
<writes a script>
> commit 27f302519148f311307637d4c9a6d0fd87d07e4c
> Author: Greg Kroah-Hartman <gregkh@suse.de>
> AuthorDate: Thu May 22 17:21:08 2008 -0400
> Commit: Greg Kroah-Hartman <gregkh@suse.de>
> CommitDate: Mon Jul 21 21:54:49 2008 -0700
>
> There is a commit date, and the date the patch was written. Both are
> preserved in git.
>
> And even if it was committed to a branch before 2.6.26 was released, and
> then pulled in, that's fine, it's distributed development :)
It's useless. I have never ever ever ever wanted to know when random
person X committed a patch to some local tree. The overwhelmingly most
common question is "when did that go into Linux". Sigh.
> $ git describe --contains 27f302519148f311307637d4c9a6d0fd87d07e4c
> v2.6.27-rc1~866^2~40
>
> showing it first showed up on 2.6.27-rc1.
Spose that works. My usual recourse is searching the commits list,
which has useful-to-humans ordering information.
Is the date at which it went into mainline recorded?
> Anyway, I don't have any systems with such a large number of devices to
> test with.
I suppose that partitioning a junk disk with lots of little partitions
will show it. parted wants to go stupid on me though.
> Running git-bisect should narrow the problem down, you can't
> just revert this patch as later-on patches relied on it, as you found
> out...
>
> Also, what is the output of these files, what exactly is missing?
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2008-08-14 0:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <bug-11323-10286@http.bugzilla.kernel.org/>
2008-08-13 20:01 ` [Bugme-new] [Bug 11323] New: /proc/diskstats does not contain all disk devices Andrew Morton
2008-08-13 23:51 ` Greg KH
2008-08-14 0:20 ` Andrew Morton
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox