lkml.org 
[lkml]   [2011]   [Jan]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 2/2] block: fix accounting bug on cross partition merges
    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
    here:

    https://lkml.org/lkml/2010/12/17/275

    --
    Jens Axboe



    \
     
     \ /
      Last update: 2011-01-05 14:59    [W:4.925 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site