Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp4328805pxj; Wed, 12 May 2021 03:14:59 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz5me6lwtG5zJrVeYSyy8Sv78MTLhVrbrOc7APW2nmlDvl6ngAdd4dZXeUZtIzsorBunvbF X-Received: by 2002:a5e:a50c:: with SMTP id 12mr21210658iog.206.1620814499103; Wed, 12 May 2021 03:14:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1620814499; cv=none; d=google.com; s=arc-20160816; b=aW4i7mhE5X5KMvXvBeEF6BiIof3/IBzT6SUMOzUzE+jhLRb+ehd0M4D8pZu61D9ICc fqKZ2p+J/P1FSpY+P0VO0yb+KX8hYFnFORKZQtIRbuyAxdbQ9eVF7n5kJL3sDvKVoIzH 5pn4+dCxjNhjBPO0S3jO3jsAUX483zbbvK5gRH/MkYEzlAi1cNLCwK4ya3NLiXyMXeSX FwR4GGlEHi9IrWBO95qqukSFbdUnbIAuXClZnqdy3CE8+EWlvJlNLH1TnX+RcPMvO/YY V48a+DKYHb71vga/Av83NbMjEvBQ34/MSJpGHNDAICCOMtMsd6IsmVLMxfcf7kwuia72 w7nA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject; bh=81KB5oGumZ/b36uDp1ZNMa3XLVeXk1h+kKqwJlk5eAA=; b=XjNFMMDg6WsJwVxgVVb+YnhCMZSczV6xBIlOfpDNEmFzCnZOw0WlLTA95EqdTAb8Ee hJ8NKDMXeTz2ECMtO6vQpVoO9BVc3x4kH3638ud3uyVrFwAMPBgwKhNj1Ss/QSegvhbC O1B83g62sPhzrtR2Aqu1BvV5JTWMUbfwDOI3BzOWeaeB/sY/rUysvFnk2hY2M7CpPTZ6 Ems1pytWadYUJ0f0vOam5GW0SJ9UsRP2ifUe2U+6UUHGMkMkRMQcL62ixoLTxB4zhHxA BhhnvQjft/mHDP4z21KmseneX7ZzdQCUfhrvALNSG0Qb93cM7uh8lsD7cDcJZuXoTE5x 7Pmg== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k26si11058366jap.39.2021.05.12.03.14.46; Wed, 12 May 2021 03:14: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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230166AbhELKOl (ORCPT + 99 others); Wed, 12 May 2021 06:14:41 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:2058 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230129AbhELKOk (ORCPT ); Wed, 12 May 2021 06:14:40 -0400 Received: from dggemx753-chm.china.huawei.com (unknown [172.30.72.57]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Fg9Vz3gpGzWhZs; Wed, 12 May 2021 18:09:15 +0800 (CST) Received: from [10.136.110.154] (10.136.110.154) by dggemx753-chm.china.huawei.com (10.0.44.37) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2176.2; Wed, 12 May 2021 18:13:30 +0800 Subject: Re: [f2fs-dev] [PATCH v2] f2fs: avoid swapon failure by giving a warning first To: Jaegeuk Kim , , CC: kernel test robot References: <20210511214337.2857522-1-jaegeuk@kernel.org> From: Chao Yu Message-ID: <5c359041-27e8-12d2-5a85-559ab56b835e@huawei.com> Date: Wed, 12 May 2021 18:13:30 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [10.136.110.154] X-ClientProxiedBy: dggemx701-chm.china.huawei.com (10.1.199.48) To dggemx753-chm.china.huawei.com (10.0.44.37) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Jaegeuk, On 2021/5/12 12:00, Jaegeuk Kim wrote: > 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 Reviewed-by: Chao Yu I've not tested yet though, any comments on below patch? [PATCH RFC] f2fs: support migrating swapfile in aligned write mode Thanks, > --- > 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; > } >