linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / linux / genhd.h
index e4af57e..eef5ccd 100644 (file)
@@ -9,7 +9,13 @@
  *             <drew@colorado.edu>
  */
 
+#include <linux/config.h>
 #include <linux/types.h>
+#include <linux/major.h>
+#include <linux/device.h>
+#include <linux/smp.h>
+#include <linux/string.h>
+#include <linux/fs.h>
 
 enum {
 /* These three have identical behaviour; use the second one if DOS FDISK gets
@@ -55,12 +61,6 @@ struct partition {
 #endif
 
 #ifdef __KERNEL__
-#include <linux/major.h>
-#include <linux/device.h>
-#include <linux/smp.h>
-#include <linux/string.h>
-#include <linux/fs.h>
-
 struct partition {
        unsigned char boot_ind;         /* 0x80 - active */
        unsigned char head;             /* starting head */
@@ -78,7 +78,6 @@ struct hd_struct {
        sector_t start_sect;
        sector_t nr_sects;
        struct kobject kobj;
-       struct kobject *holder_dir;
        unsigned ios[2], sectors[2];    /* READs and WRITEs */
        int policy, partno;
 };
@@ -90,12 +89,12 @@ struct hd_struct {
 #define GENHD_FL_SUPPRESS_PARTITION_INFO       32
 
 struct disk_stats {
-       unsigned long sectors[2];       /* READs and WRITEs */
-       unsigned long ios[2];
-       unsigned long merges[2];
-       unsigned long ticks[2];
-       unsigned long io_ticks;
-       unsigned long time_in_queue;
+       unsigned sectors[2];            /* READs and WRITEs */
+       unsigned ios[2];
+       unsigned merges[2];
+       unsigned ticks[2];
+       unsigned io_ticks;
+       unsigned time_in_queue;
 };
        
 struct gendisk {
@@ -105,17 +104,16 @@ struct gendisk {
                                          * disks that can't be partitioned. */
        char disk_name[32];             /* name of major driver */
        struct hd_struct **part;        /* [indexed by minor] */
-       int part_uevent_suppress;
        struct block_device_operations *fops;
        struct request_queue *queue;
        void *private_data;
        sector_t capacity;
 
        int flags;
+       char devfs_name[64];            /* devfs crap */
+       int number;                     /* more of the same */
        struct device *driverfs_dev;
        struct kobject kobj;
-       struct kobject *holder_dir;
-       struct kobject *slave_dir;
 
        struct timer_rand_state *random;
        int policy;
@@ -151,16 +149,22 @@ struct disk_attribute {
 ({                                                                     \
        typeof(gendiskp->dkstats->field) res = 0;                       \
        int i;                                                          \
-       for_each_possible_cpu(i)                                        \
+       for (i=0; i < NR_CPUS; i++) {                                   \
+               if (!cpu_possible(i))                                   \
+                       continue;                                       \
                res += per_cpu_ptr(gendiskp->dkstats, i)->field;        \
+       }                                                               \
        res;                                                            \
 })
 
 static inline void disk_stat_set_all(struct gendisk *gendiskp, int value)      {
        int i;
-       for_each_possible_cpu(i)
-               memset(per_cpu_ptr(gendiskp->dkstats, i), value,
-                               sizeof (struct disk_stats));
+       for (i=0; i < NR_CPUS; i++) {
+               if (cpu_possible(i)) {
+                       memset(per_cpu_ptr(gendiskp->dkstats, i), value,        
+                                       sizeof (struct disk_stats));
+               }
+       }
 }              
                                
 #else