diff options
author | Jens Axboe <jaxboe@fusionio.com> | 2011-01-07 02:43:37 -0500 |
---|---|---|
committer | Jens Axboe <jaxboe@fusionio.com> | 2011-01-07 02:43:37 -0500 |
commit | 6c23a9681c0fe7fb7dd331b39dda11926f43746e (patch) | |
tree | bf113a475a17faa866e7e59806378107dcb3aa40 /block/blk-core.c | |
parent | 09e099d4bafea3b15be003d548bdf94b4b6e0e17 (diff) |
block: add internal hd part table references
We can't use krefs since it's apparently restricted to very basic
reference counting.
This reverts commit e4a683c8.
Signed-off-by: Jens Axboe <jaxboe@fusionio.com>
Diffstat (limited to 'block/blk-core.c')
-rw-r--r-- | block/blk-core.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/block/blk-core.c b/block/blk-core.c index 500c080a6a6b..2f4002f79a24 100644 --- a/block/blk-core.c +++ b/block/blk-core.c | |||
@@ -70,7 +70,7 @@ static void drive_stat_acct(struct request *rq, int new_io) | |||
70 | part_stat_inc(cpu, part, merges[rw]); | 70 | part_stat_inc(cpu, part, merges[rw]); |
71 | } else { | 71 | } else { |
72 | part = disk_map_sector_rcu(rq->rq_disk, blk_rq_pos(rq)); | 72 | part = disk_map_sector_rcu(rq->rq_disk, blk_rq_pos(rq)); |
73 | if (!kref_test_and_get(&part->ref)) { | 73 | if (!hd_struct_try_get(part)) { |
74 | /* | 74 | /* |
75 | * The partition is already being removed, | 75 | * The partition is already being removed, |
76 | * the request will be accounted on the disk only | 76 | * the request will be accounted on the disk only |
@@ -80,7 +80,7 @@ static void drive_stat_acct(struct request *rq, int new_io) | |||
80 | * it as any other partition. | 80 | * it as any other partition. |
81 | */ | 81 | */ |
82 | part = &rq->rq_disk->part0; | 82 | part = &rq->rq_disk->part0; |
83 | kref_get(&part->ref); | 83 | hd_struct_get(part); |
84 | } | 84 | } |
85 | part_round_stats(cpu, part); | 85 | part_round_stats(cpu, part); |
86 | part_inc_in_flight(part, rw); | 86 | part_inc_in_flight(part, rw); |
@@ -1818,7 +1818,7 @@ static void blk_account_io_done(struct request *req) | |||
1818 | part_round_stats(cpu, part); | 1818 | part_round_stats(cpu, part); |
1819 | part_dec_in_flight(part, rw); | 1819 | part_dec_in_flight(part, rw); |
1820 | 1820 | ||
1821 | kref_put(&part->ref, __delete_partition); | 1821 | hd_struct_put(part); |
1822 | part_stat_unlock(); | 1822 | part_stat_unlock(); |
1823 | } | 1823 | } |
1824 | } | 1824 | } |