Re: [PATCH 2/2] block: fix accounting bug on cross partition merges

From: Jens Axboe
Date: Wed Jan 05 2011 - 08:56:14 EST

On 2011-01-04 22:00, Greg KH wrote:
> On Tue, Jan 04, 2011 at 04:55:13PM +0100, Jerome Marchand wrote:
>> Also add a refcount to struct hd_struct to keep the partition in
>> memory as long as users exist. We use kref_test_and_get() to ensure
>> we don't add a reference to a partition which is going away.
> No, don't do this, use a kref correctly and no such function should be
> needed.
>> + } else {
>> + part = disk_map_sector_rcu(rq->rq_disk, blk_rq_pos(rq));
> That is the function that should properly increment the reference count
> on the object. If the object is "being removed", then it will return
> NULL and you need to check that. Do that and you do not need to add:

It doesn't matter if you do it in there of after the fact, since the
"lock" (RCU) is being held across the call. See my original suggestion

Jens Axboe

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at