public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* 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