lkml.org 
[lkml]   [2017]   [Feb]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3.10 317/319] dm: mark request_queue dead before destroying the DM device
    Date
    From: Bart Van Assche <bart.vanassche@sandisk.com>

    commit 3b785fbcf81c3533772c52b717f77293099498d3 upstream.

    This avoids that new requests are queued while __dm_destroy() is in
    progress.

    [js] use md->queue instead of non-present helper

    Signed-off-by: Bart Van Assche <bart.vanassche@sandisk.com>
    Signed-off-by: Mike Snitzer <snitzer@redhat.com>
    Signed-off-by: Jiri Slaby <jslaby@suse.cz>
    Signed-off-by: Willy Tarreau <w@1wt.eu>
    ---
    drivers/md/dm.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/drivers/md/dm.c b/drivers/md/dm.c
    index f69fed8..a77ef6c 100644
    --- a/drivers/md/dm.c
    +++ b/drivers/md/dm.c
    @@ -2323,6 +2323,7 @@ EXPORT_SYMBOL_GPL(dm_device_name);

    static void __dm_destroy(struct mapped_device *md, bool wait)
    {
    + struct request_queue *q = md->queue;
    struct dm_table *map;

    might_sleep();
    @@ -2333,6 +2334,10 @@ static void __dm_destroy(struct mapped_device *md, bool wait)
    set_bit(DMF_FREEING, &md->flags);
    spin_unlock(&_minor_lock);

    + spin_lock_irq(q->queue_lock);
    + queue_flag_set(QUEUE_FLAG_DYING, q);
    + spin_unlock_irq(q->queue_lock);
    +
    /*
    * Take suspend_lock so that presuspend and postsuspend methods
    * do not race with internal suspend.
    --
    2.8.0.rc2.1.gbe9624a
    \
     
     \ /
      Last update: 2017-02-05 20:46    [W:4.903 / U:0.288 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site