[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20110104210011.GB4180@kroah.com>
Date: Tue, 4 Jan 2011 13:00:11 -0800
From: Greg KH <greg@...ah.com>
To: Jerome Marchand <jmarchan@...hat.com>
Cc: Vivek Goyal <vgoyal@...hat.com>, Jens Axboe <jaxboe@...ionio.com>,
Satoru Takeuchi <takeuchi_satoru@...fujitsu.com>,
Linus Torvalds <torvalds@...ux-foundation.org>,
Yasuaki Ishimatsu <isimatu.yasuaki@...fujitsu.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 2/2] block: fix accounting bug on cross partition merges
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:
> + if (!kref_test_and_get(&part->ref)) {
At all.
thanks,
greg k-h
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists