Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp6419473ybi; Wed, 31 Jul 2019 14:07:36 -0700 (PDT) X-Google-Smtp-Source: APXvYqwZv18n9o1hwDLP/EXo8teSJ3D7m/vTim6ehy11dvFDbMuT9fjJ4SGjAHgkWzIRftgUlbap X-Received: by 2002:a63:e148:: with SMTP id h8mr4457170pgk.275.1564607256328; Wed, 31 Jul 2019 14:07:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564607256; cv=none; d=google.com; s=arc-20160816; b=J2XfX4IockUCDJAOJ8ycr8SQ0A5lsOEJKBe4D06XJQVdpnBHpFQvIoYefTVdhAWyef 8xHoXaKMkhUD0TkC/faWUiEcMbUxNliArhmiTaP+2P9kPxP9smsyqfg8ul6wvun6GUXC 9oejLtVBKxxgMCkYsk7nAmjAe9Iigd8gI4WaqEaTWBlX7C95AFDwyXx+mRjan3faA2kK iNq9ivn3YSawbRm8rUbkkLSICnEw9w2uyvT3wfeW82APOKSzxMKu8yalzcRRLBSFRq6U GX8omo7FsSyvYjt9wGKjyjxHeen+p69EHKZWBkahR51cTOfVYNiiNohV8uFxg6JNPNTT b21g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=ghhxL9ZIP+IGtfy+lcLWAWto9CYpvXTQy6H6qffeDz0=; b=rh2i1tT0+d/txZpIJayHJmLVSuRi3ZMlG/GHyXuy1WoWuBFgw3wipGTO98Hogfs8jS 6JIkb73qZCmqvjxGXa5Iyjyg7xCdoq9j7XBZXH5WsLkPQcydNd963nUC+CsEqfQsVoiI Fr6EzAQucf/KZGRMWh8ZvJ6pvk1fU2yMQhGomJIG4WHCGnNUnMev9kQ+m+nJwKzDWj7Q ngLCrbcWn0jhNfzuXaX+6XdcbN7rUl5LMJEUW0kqY9ruef8O5PLFAXtKsT7CaMay54ac l+APVk9KFVGUCMXbF/8KAfSeyMKyuFpdOvT9Y5N77rZW/Ta7PoUrN25B/rsMwNMwfoJx Rj+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ygEk5xZc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id w3si29155917plb.35.2019.07.31.14.07.20; Wed, 31 Jul 2019 14:07:36 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ygEk5xZc; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729874AbfGaUn5 (ORCPT + 99 others); Wed, 31 Jul 2019 16:43:57 -0400 Received: from mail.kernel.org ([198.145.29.99]:54366 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729114AbfGaUn4 (ORCPT ); Wed, 31 Jul 2019 16:43:56 -0400 Received: from localhost (unknown [104.132.0.81]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BAA3E20659; Wed, 31 Jul 2019 20:43:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1564605835; bh=gD9RpDnMmrZvN3MAeeKsnZtmfLwzp6SDLMO8X0spRww=; h=From:To:Cc:Subject:Date:From; b=ygEk5xZc0PN4SZE7yA22ZauWL7SJvnRQ4TD7y8IbtikMcsbXi0PSbbDhKFXf12TZ+ hEZFRzDKr3k8pMnYMrJ4i2t8AvVSzRM59DAIbYfVGciA2ASktUnMiiUekc1OtS/LSV gPJ2b3H+r8P6t8VI1og/txOs7dPq60NFDRdqax8A= From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: Jaegeuk Kim Subject: [PATCH] f2fs: fix livelock in swapfile writes Date: Wed, 31 Jul 2019 13:43:53 -0700 Message-Id: <20190731204353.62056-1-jaegeuk@kernel.org> X-Mailer: git-send-email 2.19.0.605.g01d371f741-goog MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch fixes livelock in the below call path when writing swap pages. [46374.617256] c2 701 __switch_to+0xe4/0x100 [46374.617265] c2 701 __schedule+0x80c/0xbc4 [46374.617273] c2 701 schedule+0x74/0x98 [46374.617281] c2 701 rwsem_down_read_failed+0x190/0x234 [46374.617291] c2 701 down_read+0x58/0x5c [46374.617300] c2 701 f2fs_map_blocks+0x138/0x9a8 [46374.617310] c2 701 get_data_block_dio_write+0x74/0x104 [46374.617320] c2 701 __blockdev_direct_IO+0x1350/0x3930 [46374.617331] c2 701 f2fs_direct_IO+0x55c/0x8bc [46374.617341] c2 701 __swap_writepage+0x1d0/0x3e8 [46374.617351] c2 701 swap_writepage+0x44/0x54 [46374.617360] c2 701 shrink_page_list+0x140/0xe80 [46374.617371] c2 701 shrink_inactive_list+0x510/0x918 [46374.617381] c2 701 shrink_node_memcg+0x2d4/0x804 [46374.617391] c2 701 shrink_node+0x10c/0x2f8 [46374.617400] c2 701 do_try_to_free_pages+0x178/0x38c [46374.617410] c2 701 try_to_free_pages+0x348/0x4b8 [46374.617419] c2 701 __alloc_pages_nodemask+0x7f8/0x1014 [46374.617429] c2 701 pagecache_get_page+0x184/0x2cc [46374.617438] c2 701 f2fs_new_node_page+0x60/0x41c [46374.617449] c2 701 f2fs_new_inode_page+0x50/0x7c [46374.617460] c2 701 f2fs_init_inode_metadata+0x128/0x530 [46374.617472] c2 701 f2fs_add_inline_entry+0x138/0xd64 [46374.617480] c2 701 f2fs_do_add_link+0xf4/0x178 [46374.617488] c2 701 f2fs_create+0x1e4/0x3ac [46374.617497] c2 701 path_openat+0xdc0/0x1308 [46374.617507] c2 701 do_filp_open+0x78/0x124 [46374.617516] c2 701 do_sys_open+0x134/0x248 [46374.617525] c2 701 SyS_openat+0x14/0x20 Signed-off-by: Jaegeuk Kim --- fs/f2fs/data.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index abbf14e9bd72..f49f243fd54f 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1372,7 +1372,7 @@ static int get_data_block_dio_write(struct inode *inode, sector_t iblock, return __get_data_block(inode, iblock, bh_result, create, F2FS_GET_BLOCK_DIO, NULL, f2fs_rw_hint_to_seg_type(inode->i_write_hint), - true); + IS_SWAPFILE(inode) ? false : true); } static int get_data_block_dio(struct inode *inode, sector_t iblock, -- 2.19.0.605.g01d371f741-goog