From nobody Mon Jun 29 16:04:25 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 88F8CC433F5 for ; Tue, 8 Feb 2022 07:46:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347619AbiBHHqO (ORCPT ); Tue, 8 Feb 2022 02:46:14 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37742 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234614AbiBHHqK (ORCPT ); Tue, 8 Feb 2022 02:46:10 -0500 X-Greylist: delayed 3685 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Mon, 07 Feb 2022 23:46:09 PST Received: from mx07-001d1705.pphosted.com (mx07-001d1705.pphosted.com [185.132.183.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64BD7C0401EF; Mon, 7 Feb 2022 23:46:08 -0800 (PST) Received: from pps.filterd (m0209324.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 2182P4Z3009858; Tue, 8 Feb 2022 06:44:26 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=S1; bh=rb6ia/LezbSUpCOQjr8GtT9nOMLyHQWrHK8DTE1rJnU=; b=HRI+dJ4bvlJZdjFV17AumUgyRocF/8/TwiLYrHHDrlHEgkqawMmyJAYTrWsNa+lA8vAt X3zMcbrAftSdCDboUPhfGKMnpeG8XOoAezOO1t3IU/PvAoU7wK0p2s0x5mCBrZiAsPLJ vLi/lepKwD8JWrcFVMGEUNDBPpSIhN7cG8x7XN9iVQfqgK+uXX7PfRskLrWu/Wk81fFa ehq5hHMECIBMYdmFwNz3Ar7fhYZmDtgoK16tFpYukItKCcPp0NtTX5JOeF4hKuPHcC63 1TF9hnTXolcGhdSX13tGwrrIVQW27hj7Rua9ZI+0Kg6jF64xxD9Wuhimtua4JPOxL6d2 5Q== Received: from apc01-hk2-obe.outbound.protection.outlook.com (mail-hk2apc01lp2053.outbound.protection.outlook.com [104.47.124.53]) by mx08-001d1705.pphosted.com with ESMTP id 3e1ed5jju9-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Feb 2022 06:44:26 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HAi+nn76QHsZozdUNQGQV/lJNmCVnOtTKkmmki+B+Padmo2E+jEJvqkeF6oqGgYNQH89eijka8GlC5Wf7d/hRsyR1znC8SgNq+GuAAelhiUTNO/qXsOTbhz6a1KevzGNbb6SQkPI9vb5Mj5faFv7Qe8VO+MJthMwUISOIH5Ke2Wg+lPgCJzNqiJMdWXHlPviRh0JKNHGXXSalxIxB/JDSrMg0GB2Ud4Hbr9pToAtODVDEnYH6r1V5jjg9iq7LfDjDDLB1cByt+bcQ11fNWXgtUMsZenEWYtJxFVlAdjt9ZUC6MQO5tB8QKh0FfMK64WtLgsohQsuJkjrCnRi4XJz+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rb6ia/LezbSUpCOQjr8GtT9nOMLyHQWrHK8DTE1rJnU=; b=eJao7w1pAag4L2kFTrsCtpRnKkZ/gK6iKTWOPZnP7MOeuXEUSs2qskrGziUQauzqL3QUdu4t07j+TZds5Zcy4ANzaN6naXsL+RTM6Oa4lg9swTd+gWr4LA4TqzxsKCE/1uje96B4N9jVY9Fpd87oQ5+utGSxe4cKwxR4Aqr24y4c/qKTOnaF/set4W2NR4l6r8XLCTZc3gypOfrdwLnBFnP3cDSDOmut05Pw5fsS7JrPLIstS/m/BM333X/T+WCwLTb2VuwwbGhygSNjfi/ovMNJCxE3PsdKD4hGylyK/MusuBFnNZtaCYNOVrjWG5XoyodMJ3iJLQx0A1loCBlAjw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from HK2PR04MB3891.apcprd04.prod.outlook.com (2603:1096:202:35::13) by PS2PR04MB3736.apcprd04.prod.outlook.com (2603:1096:300:67::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Tue, 8 Feb 2022 06:43:24 +0000 Received: from HK2PR04MB3891.apcprd04.prod.outlook.com ([fe80::24c5:f243:ecdd:80b7]) by HK2PR04MB3891.apcprd04.prod.outlook.com ([fe80::24c5:f243:ecdd:80b7%5]) with mapi id 15.20.4951.019; Tue, 8 Feb 2022 06:43:24 +0000 From: "Yuezhang.Mo@sony.com" To: "linkinjeon@kernel.org" , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH] exfat: do not clear VolumeDirty in writeback Thread-Topic: [PATCH] exfat: do not clear VolumeDirty in writeback Thread-Index: AQHYHKozeVmted1T5UKvjQCq+AaGCayJLtGw Date: Tue, 8 Feb 2022 06:43:23 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 259bd9d2-d83d-4181-f1b2-08d9eace4ddd x-ms-traffictypediagnostic: PS2PR04MB3736:EE_ x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:36; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: icfJuXcFK9jushsqtAsDA0RpJ1D4ZenNXYloT/wwoMoJIy99U5eV8ok01tZCrGcwGb2WwXhKZEhpBBV5qWJpzfYoxA9UWddWAZ3N97gx6qrXOiKa5XR0w5EOJUq2uFo3vunZoPtjBJhMTquFU7o5OSZ1fASgcRUlRoH7w5i46KoSa3mM95EOL5jfWJHl6iumsZcped/D7BkrDcf9D+qKziDvHPDmKhBr1grrXl5th3LDDullU1/zqLgTaYy9ymIni5yUiyPUBBpplf+TgY1Su+7NVrkiqlArLZNJEVfgRth8y9zVtotwi8di3vXP/1zUbvd383uk6qTSN0CBXxOe6+DZSfkRuA1F+pHGeMvWrcqBXc+4g6lF+30B3mFmkvh/nEwpu3vOf6C2AioHCW9JzTkT6wQV3WQJBceiSJFphdhyfrjlqeW1sytVmFb7vCkGcGSJ8tby9563uyYcXXp+tOvoiB+kB+I8kUm/axjxFlDKjFhnSXrDiQIeJGsfn3WQEs3Zwk8hpaFLXmgBm+gY5F/DvivA6bJxi4Q+ID4lOPEUNrj5xBdJ27AoNp6ZXO9BMUkwn/HqG/C0B2N+d0O/APl/E6SoZBfVXFQ6n8d9F9quEQC+ZvttlxkBLDEz6phqizOp+ixGXsixcnKEttETOsb/i86CxeXxLj3pEb32JZGaSOo8GcVnm0nESUM6ESFJtUCfbLH5AbhcW2Thb77aTA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:HK2PR04MB3891.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(508600001)(2940100002)(86362001)(9686003)(6506007)(7696005)(66556008)(8676002)(66446008)(66476007)(52536014)(55016003)(64756008)(4326008)(8936002)(83380400001)(53546011)(66946007)(54906003)(5660300002)(316002)(33656002)(38070700005)(71200400001)(76116006)(122000001)(82960400001)(26005)(110136005)(186003)(2906002)(38100700002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZjZnU05FTUxQRTJHa3l6ampZb1k0cmJSK09HS1RrcFNYcExxTDJBSE9vUi9W?= =?utf-8?B?TjJBZDFIQ3VPOGlGODI5YzdsZ3h0b2ZodEFSZ09JNENVN1hlblpkOTRSM0RP?= =?utf-8?B?RnBsaHpKN1o3MlN2UzVRZlYzMVJHZU13MXMyZ0htTHk4RHkxTWN2aEw1M1NE?= =?utf-8?B?aEF3QThreHF2bitWcVhvLzk0NHJBZmZKeEt1UnJ3dnI2d3RTb1FKK1FMTFEy?= =?utf-8?B?dmh5YlY3d05lM1dITklPblZvVFlnVnRNNlo4WnZ3RTlIS1J5NWtsYlJsTjQx?= =?utf-8?B?UHQzVitKR2NFbmM0WUlXZUF5VEQrYTBEWWFpL29Gb3JFYzQ0bU40cktYTERo?= =?utf-8?B?ZCtNZVU0RGIyVWlhd1dscjMxNUYzcGNhZUI3THlWU0RMUE1YazJXSHEzZndv?= =?utf-8?B?Y1NEMnRUN0ZJSjNiSW80djhJaUl2UkZlRkVNK0NUNUVLalZtMG9MaUxFbEMv?= =?utf-8?B?eDZxTnpxaWdtV3lvbkMyUmhnQ1Q3OStvR2NFU1BBRHFBajZmNnpiTmNCc1FE?= =?utf-8?B?R2NGTDhSbThRa1g5OC9zU3RjRE9jWHYwemUrK3JoZjBIWU5XMDlJVlQ2Rkt6?= =?utf-8?B?ZDRaeHgvY2VmU1E3azI4NHB3ejllbElvWjNJRllzMjMySyt4WnF5cXRNYTZn?= =?utf-8?B?OFFOMTNvWk1Xa05OVXl0R2d6c3Z3b3ZHaGxIYlpHQ056N2pMaHBnVm1kVVNC?= =?utf-8?B?VGVxbWxqNHhJRDJEK0w2WWk5SmVSbHhWV25SN1JNQmQ0cEd1OWhOWG0zSU85?= =?utf-8?B?S01GdUo3QnRXNUNJT2Vua2cxZlYzT3FqZnVma1dHQ0JXdjg4WVVpODA3TGE5?= =?utf-8?B?YzBuQlYwUENjNVUzZUZuMjZmaUl4YWlIWVZBTlQyRlRnanB2Mml2SGZsZzR0?= =?utf-8?B?VUxNbU56VlJHSzVyc1hNeXJGSisxZVg3VURzVlVhMGxQYnhxakk1Vk12UmJa?= =?utf-8?B?Q1puR2xhNEZYSEdxMU5lTlJEWFN6MGJOTUorazlZQWViQlVvRDEwa1ZlOEVv?= =?utf-8?B?YlBZaHdqZXJZSW1NZlVsWDZueVM2MEIxK2VVdG5EQ1pYZ1FsTlE1RXpqcnBE?= =?utf-8?B?MEVjZjNhWUhEU3hoVkg4aEpXelpscndVbjA3b1NNNWQ2NGhXbTE5NlJHLzNY?= =?utf-8?B?WlY2VXJCWW5YSXRGZU1nOHdGQ05DNUtSY3lOT0NXR2o2Sm1EaWZzMkZYbVZY?= =?utf-8?B?U091UGNTOU9xN2Q5QU9CVFdyaUdsRDQzZlAvUko1RFRPN25QTXhacnVLajEz?= =?utf-8?B?Njk3SUcrYmZLNWRvWjBsQUJ2dEo5eiswRWlNWFQ4U25ENU9yT0Uyc0YvWmxE?= =?utf-8?B?a002YnhFVTBITTlXWXNBcjlPaFpRNXpWeWhkMXhMUURBT1o0Wk90SE8yMFlW?= =?utf-8?B?QVN4NEwvVyt0Ymt5a2FrYmlmcUFyUnh0UWZjUTQxTG5Qa2ZzaXpUM0hveld5?= =?utf-8?B?K3hDRjQwZHU0SjFPWmJyVm1KT0gzUFE5NmdHZ1phN2FrSHVTbjArd2RRYVVx?= =?utf-8?B?MTcweE5RaWtPZm9ucS81R3J5bllyMHM0bEx2ZU81WTMycDdZMGMzd0w5cWEx?= =?utf-8?B?a1d1U1l0ZDlaMzNyU1RpSVFXaXlyNU1mVlFQQnB4UnZMdmFLNFROSmhrc0pE?= =?utf-8?B?M3d5YVdBcWlmK29CL2JaelVqSVVDb2ViT1BHSk54RGF5NGdJVDQyS2UyZHlE?= =?utf-8?B?ZmhQeDZnS0QyemRTWWFtZzI3M3ZJTm1YQ0ZSL3dTUk1RVEpXWkFhNGhLNHds?= =?utf-8?B?STk5TVIrS2RPbzBhdmRBQ2JHempWTjlMYmU0OVhWOEZrNTdSVDhEWXF3OVdD?= =?utf-8?B?MitEV1ZJa0tEak56bFVSV3J3cHEzRDZGNUI3TkhqeHNpWHJ5UkxlQlQrRVZr?= =?utf-8?B?R3g1WWVHZ0RHQWlIZGRGbkhrZ1BQa1l2WWMxa0pUb0NwZmo3SWgzUzVsdFR1?= =?utf-8?B?ZDFTQU9mSkZXS0JMYkhnS3F5bzlML3BVV0s2MHJGUU9vS0ttYStBc2VoNStq?= =?utf-8?B?NEc5NWVSL2hiYUpoSmcyTWhjTVg4NE1WaTRMMk5xdnBtZjEvVUlUaUlxeDkz?= =?utf-8?B?TFdxRDFYamU3YVppNVl1dUVIaWhKOWtEckQ4cjA0Y3A3MWMzTTRQS1B4Tk9J?= =?utf-8?B?bHpjeUdnclNUazhoZ21xMXZkUjdXSkQyNXlKa0ZSaysyOXpnNTN1VzJEcXps?= =?utf-8?Q?j4K/+QRXOCK6kWbnwn1fcQA=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: HK2PR04MB3891.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 259bd9d2-d83d-4181-f1b2-08d9eace4ddd X-MS-Exchange-CrossTenant-originalarrivaltime: 08 Feb 2022 06:43:23.9408 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 66c65d8a-9158-4521-a2d8-664963db48e4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Y/xTTEYuRAgOmKLaxUInqNpUon95Ff3CQB3nVZK8M9G7Q5nKCdKH4HinYFSh1wsT00PlsdvdUh7nT9I6MXaW9Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS2PR04MB3736 X-Proofpoint-GUID: HMKwnG6GCUs7J6FGXRXJxj-X7RC6JrVv X-Proofpoint-ORIG-GUID: HMKwnG6GCUs7J6FGXRXJxj-X7RC6JrVv X-Sony-Outbound-GUID: HMKwnG6GCUs7J6FGXRXJxj-X7RC6JrVv X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.816,Hydra:6.0.425,FMLib:17.11.62.513 definitions=2022-02-08_02,2022-02-07_02,2021-12-02_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 mlxlogscore=999 lowpriorityscore=0 clxscore=1015 spamscore=0 suspectscore=0 priorityscore=1501 adultscore=0 mlxscore=0 impostorscore=0 phishscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202080034 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From the exFAT spec, VolumeDirty should be cleared after updating the direc= tory entry. 1. Set the value of the VolumeDirty field to 1 2. Update the active FAT, if necessary 3. Update the active Allocation Bitmap 4. Create or update the directory entry, if necessary 5. Clear the value of the VolumeDirty field to 0, if its value prior to the= first step was 0 But VolumeDirty will be cleared first in writeback if 'dirsync' or 'sync' i= s not enabled. Refer the blktrace log of 'mkdir /mnt/test/dir1' as an example. 179,3 0 1 0.000000000 10 C WS 2623488 + 1 [0] <= =3D Set VolumeDirty 179,3 3 1 5.052262001 26 C W 2623488 + 1 [0] <= =3D Clear VolumeDirty 179,3 3 2 5.054685667 26 C W 2627584 + 1 [0] <= =3D Bitmap 179,3 3 3 5.056795667 26 C W 2628352 + 1 [0] <= =3D Body data of /test/ 179,3 3 4 5.066790001 26 C W 2628608 + 128 [0] <= =3D Body data of /test/dir1/ 179,3 3 5 5.075998667 26 C W 2628736 + 128 [0] <= =3D Body data of /test/dir1/ 179,3 3 6 5.078409334 0 C WS 2623488 + 1 [0] <= =3D Set VolumeDirty 179,3 3 7 20.239486002 0 C W 2628096 + 1 [0] <= =3D Body data of / After applying this patch, VolumeDirty will not be cleared until 'sync' or = 'umount' is performed. 179,3 2 1 0.000000000 0 C WS 2623488 + 1 [0] <= =3D Set VolumeDirty 179,3 0 1 30.221475670 9 C W 2627584 + 1 [0] <= =3D Bitmap 179,3 0 2 30.223794337 9 C W 2628352 + 1 [0] <= =3D Body data of /test/ 179,3 0 3 30.233164003 9 C W 2629376 + 128 [0] <= =3D Body data of /test/dir1/ 179,3 0 4 30.242449670 9 C W 2629504 + 128 [0] <= =3D Body data of /test/dir1/ 179,3 0 5 60.445985007 9 C W 2628096 + 1 [0] <= =3D Body data of / Reviewed-by: Andy.Wu Reviewed-by: Aoyama, Wataru -----Original Message----- From: Mo, Yuezhang=20 Sent: Tuesday, February 8, 2022 1:19 PM To: linkinjeon@kernel.org; sj1557.seo@samsung.com Cc: linux-fsdevel@vger.kernel.org; linux-kernel@vger.kernel.org Subject: [PATCH] exfat: do not clear VolumeDirty in writeback Before this commit, VolumeDirty will be cleared first in writeback if 'dirs= ync' or 'sync' is not enabled. If the power is suddenly cut off after clean= ing VolumeDirty but other updates are not written, the exFAT filesystem wil= l not be able to detect the power failure in the next mount. And VolumeDirty will be set again when updating the parent directory. It me= ans that BootSector will be written twice in each writeback, that will shor= ten the life of the device. Reviewed-by: Andy.Wu Reviewed-by: Aoyama, Wataru Signed-off-by: Yuezhang.Mo --- fs/exfat/super.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/fs/exfat/super.c b/fs/exfat/super.c index 8c9fb7dcec16..f4906c= 17475e 100644 --- a/fs/exfat/super.c +++ b/fs/exfat/super.c @@ -25,6 +25,8 @@ static char exfat_default_iocharset[] =3D CONFIG_EXFAT_DEFAULT_IOCHARSET; = static struct kmem_cache *exfat_inode_cachep; =20 +static int __exfat_clear_volume_dirty(struct super_block *sb); + static void exfat_free_iocharset(struct exfat_sb_info *sbi) { if (sbi->options.iocharset !=3D exfat_default_iocharset) @@ -64,7 +66,7 @= @ static int exfat_sync_fs(struct super_block *sb, int wait) /* If there are some dirty buffers in the bdev inode */ mutex_lock(&sbi->s_lock); sync_blockdev(sb->s_bdev); - if (exfat_clear_volume_dirty(sb)) + if (__exfat_clear_volume_dirty(sb)) err =3D -EIO; mutex_unlock(&sbi->s_lock); return err; @@ -139,13 +141,21 @@ int exfat_set_volume_dirty(struct super_block *sb) return exfat_set_vol_flags(sb, sbi->vol_flags | VOLUME_DIRTY); } =20 -int exfat_clear_volume_dirty(struct super_block *sb) +static int __exfat_clear_volume_dirty(struct super_block *sb) { struct exfat_sb_info *sbi =3D EXFAT_SB(sb); =20 return exfat_set_vol_flags(sb, sbi->vol_flags & ~VOLUME_DIRTY); } =20 +int exfat_clear_volume_dirty(struct super_block *sb) { + if (sb->s_flags & (SB_SYNCHRONOUS | SB_DIRSYNC)) + return __exfat_clear_volume_dirty(sb); + + return 0; +} + static int exfat_show_options(struct seq_file *m, struct dentry *root) { struct super_block *sb =3D root->d_sb; -- 2.25.1