Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge git://brick.kernel.dk/data/git/linux-2.6-block

+70 -116
+4 -9
drivers/block/aoe/aoecmd.c
··· 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 + const int rw = bio_data_dir(buf->bio); 471 472 472 - if (bio_data_dir(buf->bio) == WRITE) { 473 - disk_stat_inc(disk, writes); 474 - disk_stat_add(disk, write_ticks, duration); 475 - disk_stat_add(disk, write_sectors, n_sect); 476 - } else { 477 - disk_stat_inc(disk, reads); 478 - disk_stat_add(disk, read_ticks, duration); 479 - disk_stat_add(disk, read_sectors, n_sect); 480 - } 473 + disk_stat_inc(disk, ios[rw]); 474 + disk_stat_add(disk, ticks[rw], duration); 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
··· 391 391 "%8u %8u %8llu %8u " 392 392 "%8u %8u %8u" 393 393 "\n", 394 - disk_stat_read(disk, reads), disk_stat_read(disk, read_merges), 395 - (unsigned long long)disk_stat_read(disk, read_sectors), 396 - jiffies_to_msecs(disk_stat_read(disk, read_ticks)), 397 - disk_stat_read(disk, writes), 398 - disk_stat_read(disk, write_merges), 399 - (unsigned long long)disk_stat_read(disk, write_sectors), 400 - jiffies_to_msecs(disk_stat_read(disk, write_ticks)), 394 + disk_stat_read(disk, ios[0]), disk_stat_read(disk, merges[0]), 395 + (unsigned long long)disk_stat_read(disk, sectors[0]), 396 + jiffies_to_msecs(disk_stat_read(disk, ticks[0])), 397 + disk_stat_read(disk, ios[1]), disk_stat_read(disk, merges[1]), 398 + (unsigned long long)disk_stat_read(disk, sectors[1]), 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 - disk_stat_read(gp, reads), disk_stat_read(gp, read_merges), 586 - (unsigned long long)disk_stat_read(gp, read_sectors), 587 - jiffies_to_msecs(disk_stat_read(gp, read_ticks)), 588 - disk_stat_read(gp, writes), disk_stat_read(gp, write_merges), 589 - (unsigned long long)disk_stat_read(gp, write_sectors), 590 - jiffies_to_msecs(disk_stat_read(gp, write_ticks)), 586 + disk_stat_read(gp, ios[0]), disk_stat_read(gp, merges[0]), 587 + (unsigned long long)disk_stat_read(gp, sectors[0]), 588 + jiffies_to_msecs(disk_stat_read(gp, ticks[0])), 589 + disk_stat_read(gp, ios[1]), disk_stat_read(gp, merges[1]), 590 + (unsigned long long)disk_stat_read(gp, sectors[1]), 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 - hd->reads, hd->read_sectors, 604 - hd->writes, hd->write_sectors); 604 + hd->ios[0], hd->sectors[0], 605 + hd->ios[1], hd->sectors[1]); 605 606 } 606 607 607 608 return 0;
+17 -30
drivers/block/ll_rw_blk.c
··· 2387 2387 if (!blk_fs_request(rq) || !rq->rq_disk) 2388 2388 return; 2389 2389 2390 - if (rw == READ) { 2391 - __disk_stat_add(rq->rq_disk, read_sectors, nr_sectors); 2392 - if (!new_io) 2393 - __disk_stat_inc(rq->rq_disk, read_merges); 2394 - } else if (rw == WRITE) { 2395 - __disk_stat_add(rq->rq_disk, write_sectors, nr_sectors); 2396 - if (!new_io) 2397 - __disk_stat_inc(rq->rq_disk, write_merges); 2398 - } 2399 - if (new_io) { 2390 + if (!new_io) { 2391 + __disk_stat_inc(rq->rq_disk, merges[rw]); 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 + const int rw = bio_data_dir(bio); 2787 2795 2788 - switch (bio_data_dir(bio)) { 2789 - case READ: 2790 - p->read_sectors += bio_sectors(bio); 2791 - p->reads++; 2792 - break; 2793 - case WRITE: 2794 - p->write_sectors += bio_sectors(bio); 2795 - p->writes++; 2796 - break; 2797 - } 2796 + p->sectors[rw] += bio_sectors(bio); 2797 + p->ios[rw]++; 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 + if (blk_fs_request(req) && req->rq_disk) { 3052 + const int rw = rq_data_dir(req); 3053 + 3054 + __disk_stat_add(req->rq_disk, sectors[rw], nr_bytes >> 9); 3055 + } 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 - switch (rq_data_dir(req)) { 3173 - case WRITE: 3174 - __disk_stat_inc(disk, writes); 3175 - __disk_stat_add(disk, write_ticks, duration); 3176 - break; 3177 - case READ: 3178 - __disk_stat_inc(disk, reads); 3179 - __disk_stat_add(disk, read_ticks, duration); 3180 - break; 3181 - } 3179 + const int rw = rq_data_dir(req); 3180 + 3181 + __disk_stat_inc(disk, ios[rw]); 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
··· 271 271 272 272 static int linear_make_request (request_queue_t *q, struct bio *bio) 273 273 { 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 - if (bio_data_dir(bio)==WRITE) { 285 - disk_stat_inc(mddev->gendisk, writes); 286 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); 287 - } else { 288 - disk_stat_inc(mddev->gendisk, reads); 289 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio)); 290 - } 283 + disk_stat_inc(mddev->gendisk, ios[rw]); 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
··· 3466 3466 idle = 1; 3467 3467 ITERATE_RDEV(mddev,rdev,tmp) { 3468 3468 struct gendisk *disk = rdev->bdev->bd_contains->bd_disk; 3469 - curr_events = disk_stat_read(disk, read_sectors) + 3470 - disk_stat_read(disk, write_sectors) - 3469 + curr_events = disk_stat_read(disk, sectors[0]) + 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
··· 168 168 multipath_conf_t *conf = mddev_to_conf(mddev); 169 169 struct multipath_bh * mp_bh; 170 170 struct multipath_info *multipath; 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 - if (bio_data_dir(bio)==WRITE) { 184 - disk_stat_inc(mddev->gendisk, writes); 185 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); 186 - } else { 187 - disk_stat_inc(mddev->gendisk, reads); 188 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio)); 189 - } 182 + disk_stat_inc(mddev->gendisk, ios[rw]); 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
··· 403 403 mdk_rdev_t *tmp_dev; 404 404 unsigned long chunk; 405 405 sector_t block, rsect; 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 - if (bio_data_dir(bio)==WRITE) { 413 - disk_stat_inc(mddev->gendisk, writes); 414 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); 415 - } else { 416 - disk_stat_inc(mddev->gendisk, reads); 417 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio)); 418 - } 413 + disk_stat_inc(mddev->gendisk, ios[rw]); 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
··· 647 647 unsigned long flags; 648 648 struct bio_list bl; 649 649 struct page **behind_pages = NULL; 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 - if (bio_data_dir(bio)==WRITE) { 670 - disk_stat_inc(mddev->gendisk, writes); 671 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); 672 - } else { 673 - disk_stat_inc(mddev->gendisk, reads); 674 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio)); 675 - } 668 + disk_stat_inc(mddev->gendisk, ios[rw]); 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 - if (bio_data_dir(bio) == READ) { 689 + if (rw == READ) { 686 690 /* 687 691 * read balancing logic: 688 692 */
+4 -8
drivers/md/raid10.c
··· 668 668 struct bio *read_bio; 669 669 int i; 670 670 int chunk_sects = conf->chunk_mask + 1; 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 - if (bio_data_dir(bio)==WRITE) { 723 - disk_stat_inc(mddev->gendisk, writes); 724 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio)); 725 - } else { 726 - disk_stat_inc(mddev->gendisk, reads); 727 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio)); 728 - } 721 + disk_stat_inc(mddev->gendisk, ios[rw]); 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 - if (bio_data_dir(bio) == READ) { 737 + if (rw == READ) { 734 738 /* 735 739 * read balancing logic: 736 740 */
+3 -7
drivers/md/raid5.c
··· 1462 1462 sector_t new_sector; 1463 1463 sector_t logical_sector, last_sector; 1464 1464 struct stripe_head *sh; 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 - if (bio_data_dir(bi)==WRITE) { 1475 - disk_stat_inc(mddev->gendisk, writes); 1476 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); 1477 - } else { 1478 - disk_stat_inc(mddev->gendisk, reads); 1479 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bi)); 1480 - } 1473 + disk_stat_inc(mddev->gendisk, ios[rw]); 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
··· 1621 1621 sector_t new_sector; 1622 1622 sector_t logical_sector, last_sector; 1623 1623 struct stripe_head *sh; 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 - if (bio_data_dir(bi)==WRITE) { 1634 - disk_stat_inc(mddev->gendisk, writes); 1635 - disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bi)); 1636 - } else { 1637 - disk_stat_inc(mddev->gendisk, reads); 1638 - disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bi)); 1639 - } 1632 + disk_stat_inc(mddev->gendisk, ios[rw]); 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 - if ( bio_data_dir(bi) == WRITE ) 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
··· 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 - p->reads, (unsigned long long)p->read_sectors, 250 - p->writes, (unsigned long long)p->write_sectors); 249 + p->ios[0], (unsigned long long)p->sectors[0], 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 - p->reads = p->writes = p->read_sectors = p->write_sectors = 0; 306 + p->ios[0] = p->ios[1] = 0; 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
··· 78 78 sector_t start_sect; 79 79 sector_t nr_sects; 80 80 struct kobject kobj; 81 - unsigned reads, read_sectors, writes, write_sectors; 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 - unsigned read_sectors, write_sectors; 93 - unsigned reads, writes; 94 - unsigned read_merges, write_merges; 95 - unsigned read_ticks, write_ticks; 92 + unsigned sectors[2]; 93 + unsigned ios[2]; 94 + unsigned merges[2]; 95 + unsigned ticks[2]; 96 96 unsigned io_ticks; 97 97 unsigned time_in_queue; 98 98 };