|
@@ -178,17 +178,17 @@ static inline struct hd_struct *get_part(struct gendisk *gendiskp,
|
|
|
|
|
|
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));
|
|
|
+ sizeof(struct disk_stats));
|
|
|
}
|
|
|
|
|
|
#define __part_stat_add(part, field, addnd) \
|
|
|
(per_cpu_ptr(part->dkstats, smp_processor_id())->field += addnd)
|
|
|
|
|
|
-#define __all_stat_add(gendiskp, field, addnd, sector) \
|
|
|
+#define __all_stat_add(gendiskp, part, field, addnd, sector) \
|
|
|
({ \
|
|
|
- struct hd_struct *part = get_part(gendiskp, sector); \
|
|
|
if (part) \
|
|
|
__part_stat_add(part, field, addnd); \
|
|
|
__disk_stat_add(gendiskp, field, addnd); \
|
|
@@ -203,11 +203,13 @@ static inline void disk_stat_set_all(struct gendisk *gendiskp, int value) {
|
|
|
res; \
|
|
|
})
|
|
|
|
|
|
-static inline void part_stat_set_all(struct hd_struct *part, int value) {
|
|
|
+static inline void part_stat_set_all(struct hd_struct *part, int value)
|
|
|
+{
|
|
|
int i;
|
|
|
+
|
|
|
for_each_possible_cpu(i)
|
|
|
memset(per_cpu_ptr(part->dkstats, i), value,
|
|
|
- sizeof(struct disk_stats));
|
|
|
+ sizeof(struct disk_stats));
|
|
|
}
|
|
|
|
|
|
#else /* !CONFIG_SMP */
|
|
@@ -223,9 +225,8 @@ static inline void disk_stat_set_all(struct gendisk *gendiskp, int value)
|
|
|
#define __part_stat_add(part, field, addnd) \
|
|
|
(part->dkstats.field += addnd)
|
|
|
|
|
|
-#define __all_stat_add(gendiskp, field, addnd, sector) \
|
|
|
+#define __all_stat_add(gendiskp, part, field, addnd, sector) \
|
|
|
({ \
|
|
|
- struct hd_struct *part = get_part(gendiskp, sector); \
|
|
|
if (part) \
|
|
|
part->dkstats.field += addnd; \
|
|
|
__disk_stat_add(gendiskp, field, addnd); \
|
|
@@ -276,10 +277,10 @@ static inline void part_stat_set_all(struct hd_struct *part, int value)
|
|
|
#define part_stat_sub(gendiskp, field, subnd) \
|
|
|
part_stat_add(gendiskp, field, -subnd)
|
|
|
|
|
|
-#define all_stat_add(gendiskp, field, addnd, sector) \
|
|
|
+#define all_stat_add(gendiskp, part, field, addnd, sector) \
|
|
|
do { \
|
|
|
preempt_disable(); \
|
|
|
- __all_stat_add(gendiskp, field, addnd, sector); \
|
|
|
+ __all_stat_add(gendiskp, part, field, addnd, sector); \
|
|
|
preempt_enable(); \
|
|
|
} while (0)
|
|
|
|
|
@@ -288,15 +289,15 @@ static inline void part_stat_set_all(struct hd_struct *part, int value)
|
|
|
#define all_stat_dec(gendiskp, field, sector) \
|
|
|
all_stat_add(gendiskp, field, -1, sector)
|
|
|
|
|
|
-#define __all_stat_inc(gendiskp, field, sector) \
|
|
|
- __all_stat_add(gendiskp, field, 1, sector)
|
|
|
-#define all_stat_inc(gendiskp, field, sector) \
|
|
|
- all_stat_add(gendiskp, field, 1, sector)
|
|
|
+#define __all_stat_inc(gendiskp, part, field, sector) \
|
|
|
+ __all_stat_add(gendiskp, part, field, 1, sector)
|
|
|
+#define all_stat_inc(gendiskp, part, field, sector) \
|
|
|
+ all_stat_add(gendiskp, part, field, 1, sector)
|
|
|
|
|
|
-#define __all_stat_sub(gendiskp, field, subnd, sector) \
|
|
|
- __all_stat_add(gendiskp, field, -subnd, sector)
|
|
|
-#define all_stat_sub(gendiskp, field, subnd, sector) \
|
|
|
- all_stat_add(gendiskp, field, -subnd, sector)
|
|
|
+#define __all_stat_sub(gendiskp, part, field, subnd, sector) \
|
|
|
+ __all_stat_add(gendiskp, part, field, -subnd, sector)
|
|
|
+#define all_stat_sub(gendiskp, part, field, subnd, sector) \
|
|
|
+ all_stat_add(gendiskp, part, field, -subnd, sector)
|
|
|
|
|
|
/* Inlines to alloc and free disk stats in struct gendisk */
|
|
|
#ifdef CONFIG_SMP
|