lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 032/244] md: factor out a mddev_find_locked helper from mddev_find
    Date
    From: Christoph Hellwig <hch@lst.de>

    commit 8b57251f9a91f5e5a599de7549915d2d226cc3af upstream.

    Factor out a self-contained helper to just lookup a mddev by the dev_t
    "unit".

    Cc: stable@vger.kernel.org
    Reviewed-by: Heming Zhao <heming.zhao@suse.com>
    Signed-off-by: Christoph Hellwig <hch@lst.de>
    Signed-off-by: Song Liu <song@kernel.org>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    drivers/md/md.c | 32 +++++++++++++++++++-------------
    1 file changed, 19 insertions(+), 13 deletions(-)

    --- a/drivers/md/md.c
    +++ b/drivers/md/md.c
    @@ -647,6 +647,17 @@ void mddev_init(struct mddev *mddev)
    }
    EXPORT_SYMBOL_GPL(mddev_init);

    +static struct mddev *mddev_find_locked(dev_t unit)
    +{
    + struct mddev *mddev;
    +
    + list_for_each_entry(mddev, &all_mddevs, all_mddevs)
    + if (mddev->unit == unit)
    + return mddev;
    +
    + return NULL;
    +}
    +
    static struct mddev *mddev_find(dev_t unit)
    {
    struct mddev *mddev;
    @@ -674,13 +685,13 @@ static struct mddev *mddev_find_or_alloc
    spin_lock(&all_mddevs_lock);

    if (unit) {
    - list_for_each_entry(mddev, &all_mddevs, all_mddevs)
    - if (mddev->unit == unit) {
    - mddev_get(mddev);
    - spin_unlock(&all_mddevs_lock);
    - kfree(new);
    - return mddev;
    - }
    + mddev = mddev_find_locked(unit);
    + if (mddev) {
    + mddev_get(mddev);
    + spin_unlock(&all_mddevs_lock);
    + kfree(new);
    + return mddev;
    + }

    if (new) {
    list_add(&new->all_mddevs, &all_mddevs);
    @@ -706,12 +717,7 @@ static struct mddev *mddev_find_or_alloc
    return NULL;
    }

    - is_free = 1;
    - list_for_each_entry(mddev, &all_mddevs, all_mddevs)
    - if (mddev->unit == dev) {
    - is_free = 0;
    - break;
    - }
    + is_free = !mddev_find_locked(dev);
    }
    new->unit = dev;
    new->md_minor = MINOR(dev);

    \
     
     \ /
      Last update: 2021-05-12 16:55    [W:4.747 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site