Commit 310a2c1012934f590192377f65940cad4aa72b15

Authored by Tejun Heo
Committed by Jens Axboe
1 parent 88e341261c

block: misc updates

This patch makes the following misc updates in preparation for
disk->part dereference fix and extended block devt support.

* implment part_to_disk()

* fix comment about gendisk->part indexing

* rename get_part() to disk_map_sector()

* don't use n which is always zero while printing disk information in
  diskstats_show()

Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

Showing 5 changed files with 19 additions and 11 deletions Side-by-side Diff

... ... @@ -60,7 +60,7 @@
60 60 if (!blk_fs_request(rq) || !rq->rq_disk)
61 61 return;
62 62  
63   - part = get_part(rq->rq_disk, rq->sector);
  63 + part = disk_map_sector(rq->rq_disk, rq->sector);
64 64 if (!new_io)
65 65 __all_stat_inc(rq->rq_disk, part, merges[rw], rq->sector);
66 66 else {
... ... @@ -1557,7 +1557,8 @@
1557 1557 }
1558 1558  
1559 1559 if (blk_fs_request(req) && req->rq_disk) {
1560   - struct hd_struct *part = get_part(req->rq_disk, req->sector);
  1560 + struct hd_struct *part =
  1561 + disk_map_sector(req->rq_disk, req->sector);
1561 1562 const int rw = rq_data_dir(req);
1562 1563  
1563 1564 all_stat_add(req->rq_disk, part, sectors[rw],
... ... @@ -1745,7 +1746,7 @@
1745 1746 if (disk && blk_fs_request(req) && req != &req->q->bar_rq) {
1746 1747 unsigned long duration = jiffies - req->start_time;
1747 1748 const int rw = rq_data_dir(req);
1748   - struct hd_struct *part = get_part(disk, req->sector);
  1749 + struct hd_struct *part = disk_map_sector(disk, req->sector);
1749 1750  
1750 1751 __all_stat_inc(disk, part, ios[rw], req->sector);
1751 1752 __all_stat_add(disk, part, ticks[rw], duration, req->sector);
... ... @@ -387,8 +387,8 @@
387 387 elv_merge_requests(q, req, next);
388 388  
389 389 if (req->rq_disk) {
390   - struct hd_struct *part
391   - = get_part(req->rq_disk, req->sector);
  390 + struct hd_struct *part =
  391 + disk_map_sector(req->rq_disk, req->sector);
392 392 disk_round_stats(req->rq_disk);
393 393 req->rq_disk->in_flight--;
394 394 if (part) {
... ... @@ -568,7 +568,7 @@
568 568 {
569 569 struct gendisk *gp = v;
570 570 char buf[BDEVNAME_SIZE];
571   - int n = 0;
  571 + int n;
572 572  
573 573 /*
574 574 if (&gp->dev.kobj.entry == block_class.devices.next)
... ... @@ -582,7 +582,7 @@
582 582 disk_round_stats(gp);
583 583 preempt_enable();
584 584 seq_printf(s, "%4d %4d %s %lu %lu %llu %u %lu %lu %llu %u %u %u %u\n",
585   - gp->major, n + gp->first_minor, disk_name(gp, n, buf),
  585 + gp->major, gp->first_minor, disk_name(gp, 0, buf),
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])),
drivers/block/aoe/aoecmd.c
... ... @@ -757,7 +757,7 @@
757 757 const int rw = bio_data_dir(bio);
758 758 struct hd_struct *part;
759 759  
760   - part = get_part(disk, sector);
  760 + part = disk_map_sector(disk, sector);
761 761 all_stat_inc(disk, part, ios[rw], sector);
762 762 all_stat_add(disk, part, ticks[rw], duration, sector);
763 763 all_stat_add(disk, part, sectors[rw], n_sect, sector);
include/linux/genhd.h
... ... @@ -116,7 +116,7 @@
116 116 int minors; /* maximum number of minors, =1 for
117 117 * disks that can't be partitioned. */
118 118 char disk_name[32]; /* name of major driver */
119   - struct hd_struct **part; /* [indexed by minor] */
  119 + struct hd_struct **part; /* [indexed by minor - 1] */
120 120 struct block_device_operations *fops;
121 121 struct request_queue *queue;
122 122 void *private_data;
123 123  
... ... @@ -145,14 +145,21 @@
145 145 #endif
146 146 };
147 147  
  148 +static inline struct gendisk *part_to_disk(struct hd_struct *part)
  149 +{
  150 + if (likely(part))
  151 + return dev_to_disk((part)->dev.parent);
  152 + return NULL;
  153 +}
  154 +
148 155 /*
149 156 * Macros to operate on percpu disk statistics:
150 157 *
151 158 * The __ variants should only be called in critical sections. The full
152 159 * variants disable/enable preemption.
153 160 */
154   -static inline struct hd_struct *get_part(struct gendisk *gendiskp,
155   - sector_t sector)
  161 +static inline struct hd_struct *disk_map_sector(struct gendisk *gendiskp,
  162 + sector_t sector)
156 163 {
157 164 struct hd_struct *part;
158 165 int i;