Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4116982pxj; Tue, 11 May 2021 21:01:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyAzrt3bX7Q1fhRhP71PKY4Jhi9rGvSemDBu9H4jXKCQ5yqt33cnWBpihxpcF/N1Vorx/p6 X-Received: by 2002:a92:6b02:: with SMTP id g2mr11633204ilc.23.1620792119453; Tue, 11 May 2021 21:01:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620792119; cv=none; d=google.com; s=arc-20160816; b=oB2E0hb7VryVQeowE4JpCJ4CW4IFdH1OxNoBfH8dXFp6NPBTCG739H0yNAbFADZCl9 ancYk8kOEl/Ui8jxWs7Z2kMwgY+LCRvpQPS+XeeGjreX9puSh16FUcTn15XGvp7bNK0j d6NCVJHBKq5dXAk/C6sxf3OFqYRKy9iDxbo/3UIYkVzGxvCUGxg+9k8gWw/I8Im/Mypj Hll1FuJHLaJIsLNesa7Boa1CYCYQh/xIQBJ1iA9ERQT1W0oyBKLlgBYAY3yd0Q8KPmik Bysf9BdrsgkOIW9WfvXf9X39EVtoqf7v+SJ3dwLCcEVM3fIzsxFSG0Fi3Si+U6ArXiDc aqoQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:message-id:subject:cc:to:from:date:dkim-signature; bh=tKtmrpLAIYsrmFJD8gA3kUCAu8KUefzDCBkaucIStYI=; b=c3OPYFgfP5Z2hjrsdznkwAzPVBnzdfVIbvPmaN4hx9whcGh2LwSfIFWQCGBw2KHD0X WLWJX0KWCbJP2nTSE1eYjh57b7IKSjthkzNqfM+ljyKI/4xD1l9yj8cEe7BUFirvdAHx nelt/prT7Thn6XtUrRZNMx0/i5Lqw8xeFDXx4p8l/Z2fekpnqHmLm/G2x/gxx5nU+VtH HEmf7higv7pK30KWJW64l+z3VSqX2V2qMo07wJX5ao/SchbQxypUlQL8Il40X8q8D0Za URVrSIcHJ/uRhuHROc8PzCvsWS07uW/5PF5+kRoeEOMPEO/WYrJFuiuFXa0tZ0TRZkbo rsYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="IpoClDe/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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. [23.128.96.18]) by mx.google.com with ESMTP id w9si11968858ilv.15.2021.05.11.21.01.46; Tue, 11 May 2021 21:01:59 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b="IpoClDe/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S229626AbhELEBk (ORCPT + 99 others); Wed, 12 May 2021 00:01:40 -0400 Received: from mail.kernel.org ([198.145.29.99]:44428 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229447AbhELEBj (ORCPT ); Wed, 12 May 2021 00:01:39 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 1B7736143A; Wed, 12 May 2021 04:00:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1620792032; bh=cjqAoPxV3C3vu9F4/M1vGSY/ZX1NLSzuT2Uq5VG+/A8=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=IpoClDe/HNSxM4Vxmnw2VaUGj6qBsi15ErdVcXrg8mORCERnNkwrPURdwUC6zJaFz Zj/4HaKBxx4WVPPTt/bcsDmWbOUO/7WrwqRCTFHJiIIckQOMNN21qTVnkjwvl9faUW 9Gco/LegGP2L/mWXF0VGfehMSCq6zMy5SvrlLMOqDWNisLGB57RwBcx1BJb4ViKWj+ KpKAJi/v7EVcHmIPx/4hjS05Ugv+s57QcJEudCx6bloxog0cPHl4T9L9XZ1WnWvR1m djZOK8fFYlr3bf3dx0oY6zg2qxC4v1EcFOXfQQortjZI/LITrPBt5u2hm5i9/w7HOd jp0cUkBBgBBfw== Date: Tue, 11 May 2021 21:00:30 -0700 From: Jaegeuk Kim To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Cc: kernel test robot Subject: Re: [PATCH v2] f2fs: avoid swapon failure by giving a warning first Message-ID: References: <20210511214337.2857522-1-jaegeuk@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20210511214337.2857522-1-jaegeuk@kernel.org> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The final solution can be migrating blocks to form a section-aligned file internally. Meanwhile, let's ask users to do that when preparing the swap file initially like: 1) create() 2) ioctl(F2FS_IOC_SET_PIN_FILE) 3) fallocate() Reported-by: kernel test robot Fixes: 36e4d95891ed ("f2fs: check if swapfile is section-alligned") Signed-off-by: Jaegeuk Kim --- v2: - fix to warn out once - cover check_swap_activate_fast fs/f2fs/data.c | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index 33e56ae84e35..41e260680b27 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -3801,6 +3801,7 @@ static int f2fs_is_file_aligned(struct inode *inode) block_t pblock; unsigned long nr_pblocks; unsigned int blocks_per_sec = BLKS_PER_SEC(sbi); + unsigned int not_aligned = 0; int ret = 0; cur_lblock = 0; @@ -3833,13 +3834,20 @@ static int f2fs_is_file_aligned(struct inode *inode) if ((pblock - main_blkaddr) & (blocks_per_sec - 1) || nr_pblocks & (blocks_per_sec - 1)) { - f2fs_err(sbi, "Swapfile does not align to section"); - ret = -EINVAL; - goto out; + if (f2fs_is_pinned_file(inode)) { + f2fs_err(sbi, "Swapfile does not align to section"); + ret = -EINVAL; + goto out; + } + not_aligned++; } cur_lblock += nr_pblocks; } + if (not_aligned) + f2fs_warn(sbi, "Swapfile (%u) is not align to section: \n" + "\t1) creat(), 2) ioctl(F2FS_IOC_SET_PIN_FILE), 3) fallocate()", + not_aligned); out: return ret; } @@ -3858,6 +3866,7 @@ static int check_swap_activate_fast(struct swap_info_struct *sis, int nr_extents = 0; unsigned long nr_pblocks; unsigned int blocks_per_sec = BLKS_PER_SEC(sbi); + unsigned int not_aligned = 0; int ret = 0; /* @@ -3896,9 +3905,12 @@ static int check_swap_activate_fast(struct swap_info_struct *sis, if ((pblock - SM_I(sbi)->main_blkaddr) & (blocks_per_sec - 1) || nr_pblocks & (blocks_per_sec - 1)) { - f2fs_err(sbi, "Swapfile does not align to section"); - ret = -EINVAL; - goto out; + if (f2fs_is_pinned_file(inode)) { + f2fs_err(sbi, "Swapfile does not align to section"); + ret = -EINVAL; + goto out; + } + not_aligned++; } if (cur_lblock + nr_pblocks >= sis->max) @@ -3927,6 +3939,11 @@ static int check_swap_activate_fast(struct swap_info_struct *sis, sis->max = cur_lblock; sis->pages = cur_lblock - 1; sis->highest_bit = cur_lblock - 1; + + if (not_aligned) + f2fs_warn(sbi, "Swapfile (%u) is not align to section: \n" + "\t1) creat(), 2) ioctl(F2FS_IOC_SET_PIN_FILE), 3) fallocate()", + not_aligned); out: return ret; } -- 2.31.1.607.g51e8a6a459-goog