Hi,

I suggest the follwoing patch to make /proc/stat work as expected in 2.4.
I noted that "gkrellm" erroneously reported my disk hdc as hde. the reason
is that (a relict from the 2.2 series, I suppose) disk_index adds 2 to
the disk number for IDE controller 1. This is IMO wrong, because in 2.4
the disks are indexed by major and minor number.

I also added more major numbers to the routine and tried to order the
majors such that the "right" results are found quickly.

Regards,
Martin

PS: I'm not subscribed to this list, but I read the archives regularly.

--- include/linux/genhd.h.orig  Tue Mar 27 01:48:11 2001
+++ include/linux/genhd.h       Wed Jun 20 19:17:09 2001
@@ -248,21 +248,30 @@
        unsigned int index;

        switch (major) {
-               case DAC960_MAJOR+0:
-                       index = (minor & 0x00f8) >> 3;
-                       break;
                case SCSI_DISK0_MAJOR:
                        index = (minor & 0x00f0) >> 4;
                        break;
                case IDE0_MAJOR:        /* same as HD_MAJOR */
                case XT_DISK_MAJOR:
+               case IDE1_MAJOR:
+               case IDE2_MAJOR:
+               case IDE3_MAJOR:
+               case IDE4_MAJOR:
+               case IDE5_MAJOR:
                        index = (minor & 0x0040) >> 6;
                        break;
-               case IDE1_MAJOR:
-                       index = ((minor & 0x0040) >> 6) + 2;
+               case SCSI_CDROM_MAJOR:
+                       index = minor & 0x000f;
                        break;
                default:
-                       return 0;
+                       if (major >= SCSI_DISK1_MAJOR && major <= SCSI_DISK7_MAJOR)
+                               index = (minor & 0x00f0) >> 4;
+                       else if (major >= DAC960_MAJOR && major <= DAC960_MAJOR + 7)
+                               index = (minor & 0x00f8) >> 3;
+                       else if (major >= IDE6_MAJOR && major <= IDE9_MAJOR)
+                               index = (minor & 0x0040) >> 6;
+                       else
+                               return 0;
        }
        return index;
 }

--
Martin Wilck <[EMAIL PROTECTED]>
Inst. for Tropospheric Research, Permoserstr. 15, 04303 Leipzig, Germany

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to