lkml.org 
[lkml]   [2009]   [Apr]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[patch 059/100] dm kcopyd: prepare for callback race fix
    -stable review patch.  If anyone has any objections, please let us know.
    ---------------------

    From: Mikulas Patocka <mpatocka@redhat.com>

    upstream commit: 73830857bca6f6c9dbd48e906daea50bea42d676

    Use a variable in segment_complete() to point to the dm_kcopyd_client
    struct and only release job->pages in run_complete_job() if any are
    defined. These changes are needed by the next patch.

    Cc: stable@kernel.org
    Signed-off-by: Mikulas Patocka <mpatocka@redhat.com>
    Signed-off-by: Alasdair G Kergon <agk@redhat.com>
    Signed-off-by: Chris Wright <chrisw@sous-sol.org>
    ---
    drivers/md/dm-kcopyd.c | 6 ++++--
    1 file changed, 4 insertions(+), 2 deletions(-)

    --- a/drivers/md/dm-kcopyd.c
    +++ b/drivers/md/dm-kcopyd.c
    @@ -297,7 +297,8 @@ static int run_complete_job(struct kcopy
    dm_kcopyd_notify_fn fn = job->fn;
    struct dm_kcopyd_client *kc = job->kc;

    - kcopyd_put_pages(kc, job->pages);
    + if (job->pages)
    + kcopyd_put_pages(kc, job->pages);
    mempool_free(job, kc->job_pool);
    fn(read_err, write_err, context);

    @@ -461,6 +462,7 @@ static void segment_complete(int read_er
    sector_t progress = 0;
    sector_t count = 0;
    struct kcopyd_job *job = (struct kcopyd_job *) context;
    + struct dm_kcopyd_client *kc = job->kc;

    mutex_lock(&job->lock);

    @@ -490,7 +492,7 @@ static void segment_complete(int read_er

    if (count) {
    int i;
    - struct kcopyd_job *sub_job = mempool_alloc(job->kc->job_pool,
    + struct kcopyd_job *sub_job = mempool_alloc(kc->job_pool,
    GFP_NOIO);

    *sub_job = *job;


    \
     
     \ /
      Last update: 2009-04-23 09:51    [W:0.023 / U:0.824 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site