From patchwork Thu Jan 10 03:12:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauricio Faria de Oliveira X-Patchwork-Id: 1022671 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=canonical.com Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 43Zrff5ZcMz9sND; Thu, 10 Jan 2019 14:13:14 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1ghQmL-0006hd-PJ; Thu, 10 Jan 2019 03:13:09 +0000 Received: from youngberry.canonical.com ([91.189.89.112]) by huckleberry.canonical.com with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.86_2) (envelope-from ) id 1ghQmI-0006fz-BN for kernel-team@lists.ubuntu.com; Thu, 10 Jan 2019 03:13:06 +0000 Received: from mail-qt1-f198.google.com ([209.85.160.198]) by youngberry.canonical.com with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.76) (envelope-from ) id 1ghQmI-0000WY-1P for kernel-team@lists.ubuntu.com; Thu, 10 Jan 2019 03:13:06 +0000 Received: by mail-qt1-f198.google.com with SMTP id u32so8913116qte.1 for ; Wed, 09 Jan 2019 19:13:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=7BlZvUebQK07kDfKDtBVHL7dTqAuJg7FP5fDSpatlrc=; b=PEMZintEv9EQyn9LBypCqRTl4qr0mavaNB9/DVRDRSDAODrLW9vTSOsO4DVEGcJbWD NgSL5AYo4D/Tr7lGyqEuGWE75T7HV2mC3sRGvTniqK5NXZLZ+s/6fCUM/VPQKVPKWdUZ 16NFI35/9I7Fs5KQ1KZQK6ssXmj/JnoWTWpcNqlM7VyUvPzIHIFwXAjT+h41+YgEoZrA wdvKGoPUpzrTeylsQdqkCv5sOyTZLwSv/hbDEhEVwcJsbqovIshRBUhLsW0mIoAohBrr cJLMjuujvKRqqQmA9HnN2IdwncsWiNQSp8PMTYe1i4bMzOr6mHaRvuEvtnP0NjNp6Lp5 oz2Q== X-Gm-Message-State: AJcUukf4unGt2EhxbocSkq2ahZyokD26BKL+TNnvrHnzeU9DstuY472P luQV47Jsn7x0cT8eSnqhbKQynMNrg3pyjt1ibfqyjTHDl28IGai3DRAUWjSDhmGYqX51sb7IzSH 1rV+plH9hLEWltRdh17l0tLCGnVdb+0igBwRG+Nuuow== X-Received: by 2002:ac8:39e5:: with SMTP id v92mr8087252qte.142.1547089985126; Wed, 09 Jan 2019 19:13:05 -0800 (PST) X-Google-Smtp-Source: ALg8bN7r2ijblGiV75MyuloO3dKkF/PNcT8NhwWjWc000VBFCDyihnbBwELglEeePOpbDAUKMUUsgQ== X-Received: by 2002:ac8:39e5:: with SMTP id v92mr8087243qte.142.1547089984954; Wed, 09 Jan 2019 19:13:04 -0800 (PST) Received: from localhost.localdomain ([177.181.227.0]) by smtp.gmail.com with ESMTPSA id s9sm43971956qta.35.2019.01.09.19.13.03 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 09 Jan 2019 19:13:04 -0800 (PST) From: Mauricio Faria de Oliveira To: kernel-team@lists.ubuntu.com Subject: [SRU B][PATCH 01/13] blk-wbt: pass in enum wbt_flags to get_rq_wait() Date: Thu, 10 Jan 2019 01:12:07 -0200 Message-Id: <20190110031219.30676-2-mfo@canonical.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20190110031219.30676-1-mfo@canonical.com> References: <20190110031219.30676-1-mfo@canonical.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Jens Axboe BugLink: https://bugs.launchpad.net/bugs/1810998 This is in preparation for having more write queues, in which case we would have needed to pass in more information than just a simple 'is_kswapd' boolean. Reviewed-by: Darrick J. Wong Reviewed-by: Omar Sandoval Signed-off-by: Jens Axboe (cherry picked from commit 8bea60901974ad44b06b08d52e1dd421ea8c6e9c) Signed-off-by: Mauricio Faria de Oliveira --- block/blk-wbt.c | 25 +++++++++++++++---------- block/blk-wbt.h | 4 +++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/block/blk-wbt.c b/block/blk-wbt.c index f92fc84b5e2c..4afa0ebb5953 100644 --- a/block/blk-wbt.c +++ b/block/blk-wbt.c @@ -101,9 +101,13 @@ static bool wb_recent_wait(struct rq_wb *rwb) return time_before(jiffies, wb->dirty_sleep + HZ); } -static inline struct rq_wait *get_rq_wait(struct rq_wb *rwb, bool is_kswapd) +static inline struct rq_wait *get_rq_wait(struct rq_wb *rwb, + enum wbt_flags wb_acct) { - return &rwb->rq_wait[is_kswapd]; + if (wb_acct & WBT_KSWAPD) + return &rwb->rq_wait[WBT_RWQ_KSWAPD]; + + return &rwb->rq_wait[WBT_RWQ_BG]; } static void rwb_wake_all(struct rq_wb *rwb) @@ -126,7 +130,7 @@ void __wbt_done(struct rq_wb *rwb, enum wbt_flags wb_acct) if (!(wb_acct & WBT_TRACKED)) return; - rqw = get_rq_wait(rwb, wb_acct & WBT_KSWAPD); + rqw = get_rq_wait(rwb, wb_acct); inflight = atomic_dec_return(&rqw->inflight); /* @@ -529,11 +533,12 @@ static inline bool may_queue(struct rq_wb *rwb, struct rq_wait *rqw, * Block if we will exceed our limit, or if we are currently waiting for * the timer to kick off queuing again. */ -static void __wbt_wait(struct rq_wb *rwb, unsigned long rw, spinlock_t *lock) +static void __wbt_wait(struct rq_wb *rwb, enum wbt_flags wb_acct, + unsigned long rw, spinlock_t *lock) __releases(lock) __acquires(lock) { - struct rq_wait *rqw = get_rq_wait(rwb, current_is_kswapd()); + struct rq_wait *rqw = get_rq_wait(rwb, wb_acct); DEFINE_WAIT(wait); if (may_queue(rwb, rqw, &wait, rw)) @@ -584,7 +589,7 @@ static inline bool wbt_should_throttle(struct rq_wb *rwb, struct bio *bio) */ enum wbt_flags wbt_wait(struct rq_wb *rwb, struct bio *bio, spinlock_t *lock) { - unsigned int ret = 0; + enum wbt_flags ret = 0; if (!rwb_enabled(rwb)) return 0; @@ -598,14 +603,14 @@ enum wbt_flags wbt_wait(struct rq_wb *rwb, struct bio *bio, spinlock_t *lock) return ret; } - __wbt_wait(rwb, bio->bi_opf, lock); + if (current_is_kswapd()) + ret |= WBT_KSWAPD; + + __wbt_wait(rwb, ret, bio->bi_opf, lock); if (!blk_stat_is_active(rwb->cb)) rwb_arm_timer(rwb); - if (current_is_kswapd()) - ret |= WBT_KSWAPD; - return ret | WBT_TRACKED; } diff --git a/block/blk-wbt.h b/block/blk-wbt.h index a232c98fbf4d..8038b4a0d4ef 100644 --- a/block/blk-wbt.h +++ b/block/blk-wbt.h @@ -19,7 +19,9 @@ enum wbt_flags { }; enum { - WBT_NUM_RWQ = 2, + WBT_RWQ_BG = 0, + WBT_RWQ_KSWAPD, + WBT_NUM_RWQ, }; /*