tangled
alpha
login
or
join now
tjh.dev
/
kernel
1
fork
atom
Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1
fork
atom
overview
issues
pulls
pipelines
Merge git://brick.kernel.dk/data/git/linux-2.6-block
Linus Torvalds
20 years ago
ec1890c5
ca23509f
+70
-116
13 changed files
expand all
collapse all
unified
split
drivers
block
aoe
aoecmd.c
genhd.c
ll_rw_blk.c
md
linear.c
md.c
multipath.c
raid0.c
raid1.c
raid10.c
raid5.c
raid6main.c
fs
partitions
check.c
include
linux
genhd.h
+4
-9
drivers/block/aoe/aoecmd.c
reviewed
···
468
468
unsigned long duration = jiffies - buf->start_time;
469
469
unsigned long n_sect = buf->bio->bi_size >> 9;
470
470
struct gendisk *disk = d->gd;
471
471
+
const int rw = bio_data_dir(buf->bio);
471
472
472
472
-
if (bio_data_dir(buf->bio) == WRITE) {
473
473
-
disk_stat_inc(disk, writes);
474
474
-
disk_stat_add(disk, write_ticks, duration);
475
475
-
disk_stat_add(disk, write_sectors, n_sect);
476
476
-
} else {
477
477
-
disk_stat_inc(disk, reads);
478
478
-
disk_stat_add(disk, read_ticks, duration);
479
479
-
disk_stat_add(disk, read_sectors, n_sect);
480
480
-
}
473
473
+
disk_stat_inc(disk, ios[rw]);
474
474
+
disk_stat_add(disk, ticks[rw], duration);
475
475
+
disk_stat_add(disk, sectors[rw], n_sect);
481
476
disk_stat_add(disk, io_ticks, duration);
482
477
n = (buf->flags & BUFFL_FAIL) ? -EIO : 0;
483
478
bio_endio(buf->bio, buf->bio->bi_size, n);
+14
-15
drivers/block/genhd.c
reviewed
···
391
391
"%8u %8u %8llu %8u "
392
392
"%8u %8u %8u"
393
393
"\n",
394
394
-
disk_stat_read(disk, reads), disk_stat_read(disk, read_merges),
395
395
-
(unsigned long long)disk_stat_read(disk, read_sectors),
396
396
-
jiffies_to_msecs(disk_stat_read(disk, read_ticks)),
397
397
-
disk_stat_read(disk, writes),
398
398
-
disk_stat_read(disk, write_merges),
399
399
-
(unsigned long long)disk_stat_read(disk, write_sectors),
400
400
-
jiffies_to_msecs(disk_stat_read(disk, write_ticks)),
394
394
+
disk_stat_read(disk, ios[0]), disk_stat_read(disk, merges[0]),
395
395
+
(unsigned long long)disk_stat_read(disk, sectors[0]),
396
396
+
jiffies_to_msecs(disk_stat_read(disk, ticks[0])),
397
397
+
disk_stat_read(disk, ios[1]), disk_stat_read(disk, merges[1]),
398
398
+
(unsigned long long)disk_stat_read(disk, sectors[1]),
399
399
+
jiffies_to_msecs(disk_stat_read(disk, ticks[1])),
401
400
disk->in_flight,
402
401
jiffies_to_msecs(disk_stat_read(disk, io_ticks)),
403
402
jiffies_to_msecs(disk_stat_read(disk, time_in_queue)));
···
582
583
preempt_enable();
583
584
seq_printf(s, "%4d %4d %s %u %u %llu %u %u %u %llu %u %u %u %u\n",
584
585
gp->major, n + gp->first_minor, disk_name(gp, n, buf),
585
585
-
disk_stat_read(gp, reads), disk_stat_read(gp, read_merges),
586
586
-
(unsigned long long)disk_stat_read(gp, read_sectors),
587
587
-
jiffies_to_msecs(disk_stat_read(gp, read_ticks)),
588
588
-
disk_stat_read(gp, writes), disk_stat_read(gp, write_merges),
589
589
-
(unsigned long long)disk_stat_read(gp, write_sectors),
590
590
-
jiffies_to_msecs(disk_stat_read(gp, write_ticks)),
586
586
+
disk_stat_read(gp, ios[0]), disk_stat_read(gp, merges[0]),
587
587
+
(unsigned long long)disk_stat_read(gp, sectors[0]),
588
588
+
jiffies_to_msecs(disk_stat_read(gp, ticks[0])),
589
589
+
disk_stat_read(gp, ios[1]), disk_stat_read(gp, merges[1]),
590
590
+
(unsigned long long)disk_stat_read(gp, sectors[1]),
591
591
+
jiffies_to_msecs(disk_stat_read(gp, ticks[1])),
591
592
gp->in_flight,
592
593
jiffies_to_msecs(disk_stat_read(gp, io_ticks)),
593
594
jiffies_to_msecs(disk_stat_read(gp, time_in_queue)));
···
600
601
seq_printf(s, "%4d %4d %s %u %u %u %u\n",
601
602
gp->major, n + gp->first_minor + 1,
602
603
disk_name(gp, n + 1, buf),
603
603
-
hd->reads, hd->read_sectors,
604
604
-
hd->writes, hd->write_sectors);
604
604
+
hd->ios[0], hd->sectors[0],
605
605
+
hd->ios[1], hd->sectors[1]);
605
606
}
606
607
607
608
return 0;
+17
-30
drivers/block/ll_rw_blk.c
reviewed
···
2387
2387
if (!blk_fs_request(rq) || !rq->rq_disk)
2388
2388
return;
2389
2389
2390
2390
-
if (rw == READ) {
2391
2391
-
__disk_stat_add(rq->rq_disk, read_sectors, nr_sectors);
2392
2392
-
if (!new_io)
2393
2393
-
__disk_stat_inc(rq->rq_disk, read_merges);
2394
2394
-
} else if (rw == WRITE) {
2395
2395
-
__disk_stat_add(rq->rq_disk, write_sectors, nr_sectors);
2396
2396
-
if (!new_io)
2397
2397
-
__disk_stat_inc(rq->rq_disk, write_merges);
2398
2398
-
}
2399
2399
-
if (new_io) {
2390
2390
+
if (!new_io) {
2391
2391
+
__disk_stat_inc(rq->rq_disk, merges[rw]);
2392
2392
+
} else {
2400
2393
disk_round_stats(rq->rq_disk);
2401
2394
rq->rq_disk->in_flight++;
2402
2395
}
···
2784
2791
2785
2792
if (bdev != bdev->bd_contains) {
2786
2793
struct hd_struct *p = bdev->bd_part;
2794
2794
+
const int rw = bio_data_dir(bio);
2787
2795
2788
2788
-
switch (bio_data_dir(bio)) {
2789
2789
-
case READ:
2790
2790
-
p->read_sectors += bio_sectors(bio);
2791
2791
-
p->reads++;
2792
2792
-
break;
2793
2793
-
case WRITE:
2794
2794
-
p->write_sectors += bio_sectors(bio);
2795
2795
-
p->writes++;
2796
2796
-
break;
2797
2797
-
}
2796
2796
+
p->sectors[rw] += bio_sectors(bio);
2797
2797
+
p->ios[rw]++;
2798
2798
+
2798
2799
bio->bi_sector += p->start_sect;
2799
2800
bio->bi_bdev = bdev->bd_contains;
2800
2801
}
···
3035
3048
(unsigned long long)req->sector);
3036
3049
}
3037
3050
3051
3051
+
if (blk_fs_request(req) && req->rq_disk) {
3052
3052
+
const int rw = rq_data_dir(req);
3053
3053
+
3054
3054
+
__disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9);
3055
3055
+
}
3056
3056
+
3038
3057
total_bytes = bio_nbytes = 0;
3039
3058
while ((bio = req->bio) != NULL) {
3040
3059
int nbytes;
···
3169
3176
3170
3177
if (disk && blk_fs_request(req)) {
3171
3178
unsigned long duration = jiffies - req->start_time;
3172
3172
-
switch (rq_data_dir(req)) {
3173
3173
-
case WRITE:
3174
3174
-
__disk_stat_inc(disk, writes);
3175
3175
-
__disk_stat_add(disk, write_ticks, duration);
3176
3176
-
break;
3177
3177
-
case READ:
3178
3178
-
__disk_stat_inc(disk, reads);
3179
3179
-
__disk_stat_add(disk, read_ticks, duration);
3180
3180
-
break;
3181
3181
-
}
3179
3179
+
const int rw = rq_data_dir(req);
3180
3180
+
3181
3181
+
__disk_stat_inc(disk, ios[rw]);
3182
3182
+
__disk_stat_add(disk, ticks[rw], duration);
3182
3183
disk_round_stats(disk);
3183
3184
disk->in_flight--;
3184
3185
}
+3
-7
drivers/md/linear.c
reviewed
···
271
271
272
272
static int linear_make_request (request_queue_t *q, struct bio *bio)
273
273
{
274
274
+
const int rw = bio_data_dir(bio);
274
275
mddev_t *mddev = q->queuedata;
275
276
dev_info_t *tmp_dev;
276
277
sector_t block;
···
281
280
return 0;
282
281
}
283
282
284
284
-
if (bio_data_dir(bio)==WRITE) {
285
285
-
disk_stat_inc(mddev->gendisk, writes);
286
286
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));
287
287
-
} else {
288
288
-
disk_stat_inc(mddev->gendisk, reads);
289
289
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));
290
290
-
}
283
283
+
disk_stat_inc(mddev->gendisk, ios[rw]);
284
284
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio));
291
285
292
286
tmp_dev = which_dev(mddev, bio->bi_sector);
293
287
block = bio->bi_sector >> 1;
+2
-2
drivers/md/md.c
reviewed
···
3466
3466
idle = 1;
3467
3467
ITERATE_RDEV(mddev,rdev,tmp) {
3468
3468
struct gendisk *disk = rdev->bdev->bd_contains->bd_disk;
3469
3469
-
curr_events = disk_stat_read(disk, read_sectors) +
3470
3470
-
disk_stat_read(disk, write_sectors) -
3469
3469
+
curr_events = disk_stat_read(disk, sectors[0]) +
3470
3470
+
disk_stat_read(disk, sectors[1]) -
3471
3471
atomic_read(&disk->sync_io);
3472
3472
/* Allow some slack between valud of curr_events and last_events,
3473
3473
* as there are some uninteresting races.
+3
-7
drivers/md/multipath.c
reviewed
···
168
168
multipath_conf_t *conf = mddev_to_conf(mddev);
169
169
struct multipath_bh * mp_bh;
170
170
struct multipath_info *multipath;
171
171
+
const int rw = bio_data_dir(bio);
171
172
172
173
if (unlikely(bio_barrier(bio))) {
173
174
bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
···
180
179
mp_bh->master_bio = bio;
181
180
mp_bh->mddev = mddev;
182
181
183
183
-
if (bio_data_dir(bio)==WRITE) {
184
184
-
disk_stat_inc(mddev->gendisk, writes);
185
185
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));
186
186
-
} else {
187
187
-
disk_stat_inc(mddev->gendisk, reads);
188
188
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));
189
189
-
}
182
182
+
disk_stat_inc(mddev->gendisk, ios[rw]);
183
183
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio));
190
184
191
185
mp_bh->path = multipath_map(conf);
192
186
if (mp_bh->path < 0) {
+3
-7
drivers/md/raid0.c
reviewed
···
403
403
mdk_rdev_t *tmp_dev;
404
404
unsigned long chunk;
405
405
sector_t block, rsect;
406
406
+
const int rw = bio_data_dir(bio);
406
407
407
408
if (unlikely(bio_barrier(bio))) {
408
409
bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
409
410
return 0;
410
411
}
411
412
412
412
-
if (bio_data_dir(bio)==WRITE) {
413
413
-
disk_stat_inc(mddev->gendisk, writes);
414
414
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));
415
415
-
} else {
416
416
-
disk_stat_inc(mddev->gendisk, reads);
417
417
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));
418
418
-
}
413
413
+
disk_stat_inc(mddev->gendisk, ios[rw]);
414
414
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio));
419
415
420
416
chunk_size = mddev->chunk_size >> 10;
421
417
chunk_sects = mddev->chunk_size >> 9;
+4
-8
drivers/md/raid1.c
reviewed
···
647
647
unsigned long flags;
648
648
struct bio_list bl;
649
649
struct page **behind_pages = NULL;
650
650
+
const int rw = bio_data_dir(bio);
650
651
651
652
if (unlikely(bio_barrier(bio))) {
652
653
bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
···
666
665
conf->nr_pending++;
667
666
spin_unlock_irq(&conf->resync_lock);
668
667
669
669
-
if (bio_data_dir(bio)==WRITE) {
670
670
-
disk_stat_inc(mddev->gendisk, writes);
671
671
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));
672
672
-
} else {
673
673
-
disk_stat_inc(mddev->gendisk, reads);
674
674
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));
675
675
-
}
668
668
+
disk_stat_inc(mddev->gendisk, ios[rw]);
669
669
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio));
676
670
677
671
/*
678
672
* make_request() can abort the operation when READA is being
···
682
686
r1_bio->mddev = mddev;
683
687
r1_bio->sector = bio->bi_sector;
684
688
685
685
-
if (bio_data_dir(bio) == READ) {
689
689
+
if (rw == READ) {
686
690
/*
687
691
* read balancing logic:
688
692
*/
+4
-8
drivers/md/raid10.c
reviewed
···
668
668
struct bio *read_bio;
669
669
int i;
670
670
int chunk_sects = conf->chunk_mask + 1;
671
671
+
const int rw = bio_data_dir(bio);
671
672
672
673
if (unlikely(bio_barrier(bio))) {
673
674
bio_endio(bio, bio->bi_size, -EOPNOTSUPP);
···
719
718
conf->nr_pending++;
720
719
spin_unlock_irq(&conf->resync_lock);
721
720
722
722
-
if (bio_data_dir(bio)==WRITE) {
723
723
-
disk_stat_inc(mddev->gendisk, writes);
724
724
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));
725
725
-
} else {
726
726
-
disk_stat_inc(mddev->gendisk, reads);
727
727
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));
728
728
-
}
721
721
+
disk_stat_inc(mddev->gendisk, ios[rw]);
722
722
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bio));
729
723
730
724
r10_bio = mempool_alloc(conf->r10bio_pool, GFP_NOIO);
731
725
···
730
734
r10_bio->mddev = mddev;
731
735
r10_bio->sector = bio->bi_sector;
732
736
733
733
-
if (bio_data_dir(bio) == READ) {
737
737
+
if (rw == READ) {
734
738
/*
735
739
* read balancing logic:
736
740
*/
+3
-7
drivers/md/raid5.c
reviewed
···
1462
1462
sector_t new_sector;
1463
1463
sector_t logical_sector, last_sector;
1464
1464
struct stripe_head *sh;
1465
1465
+
const int rw = bio_data_dir(bi);
1465
1466
1466
1467
if (unlikely(bio_barrier(bi))) {
1467
1468
bio_endio(bi, bi->bi_size, -EOPNOTSUPP);
···
1471
1470
1472
1471
md_write_start(mddev, bi);
1473
1472
1474
1474
-
if (bio_data_dir(bi)==WRITE) {
1475
1475
-
disk_stat_inc(mddev->gendisk, writes);
1476
1476
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi));
1477
1477
-
} else {
1478
1478
-
disk_stat_inc(mddev->gendisk, reads);
1479
1479
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bi));
1480
1480
-
}
1473
1473
+
disk_stat_inc(mddev->gendisk, ios[rw]);
1474
1474
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bi));
1481
1475
1482
1476
logical_sector = bi->bi_sector & ~((sector_t)STRIPE_SECTORS-1);
1483
1477
last_sector = bi->bi_sector + (bi->bi_size>>9);
+4
-8
drivers/md/raid6main.c
reviewed
···
1621
1621
sector_t new_sector;
1622
1622
sector_t logical_sector, last_sector;
1623
1623
struct stripe_head *sh;
1624
1624
+
const int rw = bio_data_dir(bi);
1624
1625
1625
1626
if (unlikely(bio_barrier(bi))) {
1626
1627
bio_endio(bi, bi->bi_size, -EOPNOTSUPP);
···
1630
1629
1631
1630
md_write_start(mddev, bi);
1632
1631
1633
1633
-
if (bio_data_dir(bi)==WRITE) {
1634
1634
-
disk_stat_inc(mddev->gendisk, writes);
1635
1635
-
disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi));
1636
1636
-
} else {
1637
1637
-
disk_stat_inc(mddev->gendisk, reads);
1638
1638
-
disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bi));
1639
1639
-
}
1632
1632
+
disk_stat_inc(mddev->gendisk, ios[rw]);
1633
1633
+
disk_stat_add(mddev->gendisk, sectors[rw], bio_sectors(bi));
1640
1634
1641
1635
logical_sector = bi->bi_sector & ~((sector_t)STRIPE_SECTORS-1);
1642
1636
last_sector = bi->bi_sector + (bi->bi_size>>9);
···
1678
1682
if (--bi->bi_phys_segments == 0) {
1679
1683
int bytes = bi->bi_size;
1680
1684
1681
1681
-
if ( bio_data_dir(bi) == WRITE )
1685
1685
+
if (rw == WRITE )
1682
1686
md_write_end(mddev);
1683
1687
bi->bi_size = 0;
1684
1688
bi->bi_end_io(bi, bytes, 0);
+4
-3
fs/partitions/check.c
reviewed
···
246
246
static ssize_t part_stat_read(struct hd_struct * p, char *page)
247
247
{
248
248
return sprintf(page, "%8u %8llu %8u %8llu\n",
249
249
-
p->reads, (unsigned long long)p->read_sectors,
250
250
-
p->writes, (unsigned long long)p->write_sectors);
249
249
+
p->ios[0], (unsigned long long)p->sectors[0],
250
250
+
p->ios[1], (unsigned long long)p->sectors[1]);
251
251
}
252
252
static struct part_attribute part_attr_uevent = {
253
253
.attr = {.name = "uevent", .mode = S_IWUSR },
···
303
303
disk->part[part-1] = NULL;
304
304
p->start_sect = 0;
305
305
p->nr_sects = 0;
306
306
-
p->reads = p->writes = p->read_sectors = p->write_sectors = 0;
306
306
+
p->ios[0] = p->ios[1] = 0;
307
307
+
p->sectors[0] = p->sectors[1] = 0;
307
308
devfs_remove("%s/part%d", disk->devfs_name, part);
308
309
kobject_unregister(&p->kobj);
309
310
}
+5
-5
include/linux/genhd.h
reviewed
···
78
78
sector_t start_sect;
79
79
sector_t nr_sects;
80
80
struct kobject kobj;
81
81
-
unsigned reads, read_sectors, writes, write_sectors;
81
81
+
unsigned ios[2], sectors[2];
82
82
int policy, partno;
83
83
};
84
84
···
89
89
#define GENHD_FL_SUPPRESS_PARTITION_INFO 32
90
90
91
91
struct disk_stats {
92
92
-
unsigned read_sectors, write_sectors;
93
93
-
unsigned reads, writes;
94
94
-
unsigned read_merges, write_merges;
95
95
-
unsigned read_ticks, write_ticks;
92
92
+
unsigned sectors[2];
93
93
+
unsigned ios[2];
94
94
+
unsigned merges[2];
95
95
+
unsigned ticks[2];
96
96
unsigned io_ticks;
97
97
unsigned time_in_queue;
98
98
};