From patchwork Tue Dec 11 17:21:42 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Kara X-Patchwork-Id: 10724271 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id E8AEB112E for ; Tue, 11 Dec 2018 17:22:09 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id CB2B72B553 for ; Tue, 11 Dec 2018 17:22:09 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BF74C2B561; Tue, 11 Dec 2018 17:22:09 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-2.9 required=2.0 tests=BAYES_00,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3F83C2B553 for ; Tue, 11 Dec 2018 17:22:09 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D92318E00B5; Tue, 11 Dec 2018 12:21:53 -0500 (EST) Delivered-To: linux-mm-outgoing@kvack.org Received: by kanga.kvack.org (Postfix, from userid 40) id CEB348E00BB; Tue, 11 Dec 2018 12:21:53 -0500 (EST) X-Original-To: int-list-linux-mm@kvack.org X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B3AA18E00B9; Tue, 11 Dec 2018 12:21:53 -0500 (EST) X-Original-To: linux-mm@kvack.org X-Delivered-To: linux-mm@kvack.org Received: from mail-pg1-f199.google.com (mail-pg1-f199.google.com [209.85.215.199]) by kanga.kvack.org (Postfix) with ESMTP id 709188E00B9 for ; Tue, 11 Dec 2018 12:21:53 -0500 (EST) Received: by mail-pg1-f199.google.com with SMTP id p4so10234182pgj.21 for ; Tue, 11 Dec 2018 09:21:53 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-original-authentication-results:x-gm-message-state:from:to:cc :subject:date:message-id:in-reply-to:references; bh=iRZMppqwLvoaloO//8PuSrRyXk2LsEtimnejpJVSEh8=; b=lXpM8KP5RmMurQqz9QAhgxgaQD17eMnK3zH8/qGaiym0Uz93NxMrHbM4L62BJOU3Mm gTCcksoYUrTVM5gm1/ObWdhd8zbTOhuWKCnAk/trvS/WS249vakeej2yR/41U48Icmq+ ZZs5yjXh4yyYXBkDJub6U5A/AQX8dwnZ9Pj2dhGMaEWDXBUhV/MaOBklbr7kkfHELl+X LZ6CHM/mjMM9OJ8m95ouHpoApvatSTG66McZknzZdYXee6ZL2lKGA25z3C4wyaaWtcWg uqNuJYgJwNLJTnsTobAIwJoxY/ilda1i9jUplcIyI05Z6mXRpSlNndItKGl6va3xMoNl 9kUQ== X-Original-Authentication-Results: mx.google.com; spf=pass (google.com: domain of jack@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=jack@suse.cz X-Gm-Message-State: AA+aEWYRqQigvb8VVB4Tc+0iYi5uQ5I2rgtfxwve/E6/8FtAhyIZuQZW vKJq0AOVG+9+bI77JOAdpEz3UtS7GZKzyATbGcHKgi/+N4hYJj1lfVlAA9htwdsAbP0TVhKPFkD ljP1RJRxGCB1tpNSn5yfEzXqIvsbsoa9/bXVY1rgqlr3WAylv35z9QsB5NPfxbPsx/A== X-Received: by 2002:a63:9501:: with SMTP id p1mr15492651pgd.149.1544548913084; Tue, 11 Dec 2018 09:21:53 -0800 (PST) X-Google-Smtp-Source: AFSGD/Vsa2qRuqpy/6wgW3gvoZZCrsWbaqrXldND08WlYqQAxzN6FcWzsvxI4CEevY0SWcOi1aj1 X-Received: by 2002:a63:9501:: with SMTP id p1mr15492582pgd.149.1544548911832; Tue, 11 Dec 2018 09:21:51 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544548911; cv=none; d=google.com; s=arc-20160816; b=pBmUox2Xcff70H9/IdUH97dINZSrYudn14Oe06b3U3XRumz7EPH8lvZ/sIFnVuSgRF QJLhiSXzgfokpTDYlWFJ69U35YxI5Q/N/jS/wa58VzUfjRs6w5CvnEXo9xFEG2Izhf9V wZWlGbP62WvOutSId5NQIn/el4jSM6YPtur+LfTlx/PJeZxHl/i9BXtTFPb/Ff+1VkBF zszDL+XafCb/3bCtYpcZJDVb7tBu9ATcM/dS3a4LnsIj0Z0XbePEPFa2p97d3XEmGcjo ozyHH1x/yJ7Ohu535PTMx8op8+iWW3mZZmWniGl6DwY25AF6fn1HEY9z7LCdIleYvkwi hhwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from; bh=iRZMppqwLvoaloO//8PuSrRyXk2LsEtimnejpJVSEh8=; b=poFb8WlwXnKqYIJ63O8F5m8uEQswlqsqo1cnRxO+BUbenAIhx7DX+59CcMd1bRqe5X f9gVQ/mie2ZNi6SZKHbm/T5L2LTpdFW3w2UcMvqS01A5TZq5K3S/P9suL2nKaJnQAEgI 7cpWMKz+CT5PLAR2RnsN8W+vYkEyvjnJLyt6RrML2ToNER23+/PUqMVePUC+mR2GEUz8 tzRtu7Up861x3SUjETUuvJ+Ah6pPLhNk5r2fZKFvRpu5vDuehiJCzuHqsInfoeH1a3Eq DdZlsb6SJ7saUCVJeqkhs7Euj2o8dRxMtzJ1Nd/DG0qWCzqZrum4G0Dq6ypuonpj0FX9 bXsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of jack@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=jack@suse.cz Received: from mx1.suse.de (mx2.suse.de. [195.135.220.15]) by mx.google.com with ESMTPS id b36si6875828pgl.596.2018.12.11.09.21.51 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 11 Dec 2018 09:21:51 -0800 (PST) Received-SPF: pass (google.com: domain of jack@suse.cz designates 195.135.220.15 as permitted sender) client-ip=195.135.220.15; Authentication-Results: mx.google.com; spf=pass (google.com: domain of jack@suse.cz designates 195.135.220.15 as permitted sender) smtp.mailfrom=jack@suse.cz X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 2544DB063 for ; Tue, 11 Dec 2018 17:21:49 +0000 (UTC) Received: by quack2.suse.cz (Postfix, from userid 1000) id 6DB921E1424; Tue, 11 Dec 2018 18:21:48 +0100 (CET) From: Jan Kara To: Cc: mhocko@suse.cz, mgorman@suse.de, Jan Kara Subject: [PATCH 5/6] blkdev: Avoid migration stalls for blkdev pages Date: Tue, 11 Dec 2018 18:21:42 +0100 Message-Id: <20181211172143.7358-6-jack@suse.cz> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20181211172143.7358-1-jack@suse.cz> References: <20181211172143.7358-1-jack@suse.cz> X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: X-Virus-Scanned: ClamAV using ClamSMTP Currently, block device pages don't provide a ->migratepage callback and thus fallback_migrate_page() is used for them. This handler cannot deal with dirty pages in async mode and also with the case a buffer head is in the LRU buffer head cache (as it has elevated b_count). Thus such page can block memory offlining. Fix the problem by using buffer_migrate_page_norefs() for migrating block device pages. That function takes care of dropping bh LRU in case migration would fail due to elevated buffer refcount to avoid stalls and can also migrate dirty pages without writing them. Signed-off-by: Jan Kara Acked-by: Mel Gorman --- fs/block_dev.c | 1 + 1 file changed, 1 insertion(+) diff --git a/fs/block_dev.c b/fs/block_dev.c index a80b4f0ee7c4..de2135178e62 100644 --- a/fs/block_dev.c +++ b/fs/block_dev.c @@ -1966,6 +1966,7 @@ static const struct address_space_operations def_blk_aops = { .writepages = blkdev_writepages, .releasepage = blkdev_releasepage, .direct_IO = blkdev_direct_IO, + .migratepage = buffer_migrate_page_norefs, .is_dirty_writeback = buffer_check_dirty_writeback, };