From patchwork Wed Jul 6 02:34:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yuezhang.Mo@sony.com" X-Patchwork-Id: 12907250 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 D1556C43334 for ; Wed, 6 Jul 2022 02:35:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230398AbiGFCfQ (ORCPT ); Tue, 5 Jul 2022 22:35:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36204 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229485AbiGFCfN (ORCPT ); Tue, 5 Jul 2022 22:35:13 -0400 Received: from mx07-001d1705.pphosted.com (mx07-001d1705.pphosted.com [185.132.183.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 884C319286; Tue, 5 Jul 2022 19:35:12 -0700 (PDT) Received: from pps.filterd (m0209324.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 265NCw1Z027526; Wed, 6 Jul 2022 02:34:54 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=S1; bh=VV+AVS9/adkL1RNCzHO0ThPhchYVOuEgeWFzSzN8i38=; b=Y25jd3OH+MxuclPSt4FEFhUNEpeu+7h47Ha7Fw2+TVDCHoZqRr7X4CE9bmhxgmI86x+k 6LKIv3MqHxLbGL+SU1zAVGuLyylOmSaBkBXC9t/ZQ1751EZWeo79biDm1p/up79aELKL HbFkIwpkFU81bBpPFTEgih/PHk52sr8UNMRopG9en0zs7ppTTgaVz3NkFW6Q/ZS6QxBM dbKjtX8PTen1m4Umz40SlorfQkeA6DeTaOhiatne3APOLyLbzNN2/QVwze5fORBTbmpg F+4K1XJ8bm0MHPCKc29BWOjbC97LOrFVpksU/y8aGgShZ6Py97PjyhQegFr92RtRvTIg Gg== Received: from apc01-sg2-obe.outbound.protection.outlook.com (mail-sgaapc01lp2113.outbound.protection.outlook.com [104.47.26.113]) by mx08-001d1705.pphosted.com (PPS) with ESMTPS id 3h4uq2raa7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 06 Jul 2022 02:34:53 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=UBseFHacbKhMUTGupz9IGpbcQ0ZdYg8VY6yf9LKFvmNuwe6yBv20BTeIg3NCRAYESKfac2W1IiEDcuA0Wd/lc/Urol19lvaymC3yVEYGKGkiOUKqsjc9mXUb5fsaL7qF34YbUMw61Ey1bhMeqLieYgA4sOtG+QAPG+hEAU/7BG4oMlYz7cczGYWruKMxFQ48vqGXz8hM/4TcFMJLT7N87ucZjyNMCMp7QNTVH1dz0vdGAjE2pQ34SjZajYjPEXLcP9NGE11FWdUiWSVsjrcPda5+muFzoLS+8yaprcpHcrsRjQvAjQe8aPgG/HUdlehE4PbSrcTxrHtMlNxFFg6sQg== 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=VV+AVS9/adkL1RNCzHO0ThPhchYVOuEgeWFzSzN8i38=; b=VaMD9gRm6BWKoGb2Zr8s7e4LsxNarQtrdboIgnZ9Sv1SwgMMUp7Uz6WeJdyQqzNYzttbzH0u4pRVxUC9FuHXfvr+YeqnwM39AudAhzulD1KDNkcDwhKXeaouPBhWGxmgmdFMF+jtTsCWv3mg+eb2GnuXUNPGbSmjC2b065OhkdQOjNCPkP8ZUvR/w7dUbPt4kjgN2EuH2EKeRCaL6Dtzr9lbsirol6luDNIsr/TRseUzYDU+UT11W8FjeGdXnsHkxWo9kTqYRoZcsyYJEVj/rBTanHKT+cgtMoTAFQcsVkcF4m/QON9k88YpU7HixhgU6rKepYJ0SCzoQpDzI3drxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sony.com; dmarc=pass action=none header.from=sony.com; dkim=pass header.d=sony.com; arc=none Received: from SG2PR04MB3899.apcprd04.prod.outlook.com (2603:1096:4:94::11) by SEZPR04MB5972.apcprd04.prod.outlook.com (2603:1096:101:65::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Wed, 6 Jul 2022 02:34:48 +0000 Received: from SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a]) by SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a%6]) with mapi id 15.20.5395.017; Wed, 6 Jul 2022 02:34:48 +0000 From: "Yuezhang.Mo@sony.com" To: Namjae Jeon , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Andy.Wu@sony.com" , "Wataru.Aoyama@sony.com" Subject: [PATCH v1 1/3] exfat: reuse __exfat_write_inode() to update directory entry Thread-Topic: [PATCH v1 1/3] exfat: reuse __exfat_write_inode() to update directory entry Thread-Index: AdiQ30/QdgNcxH9sSaq73tXNMdE/og== Date: Wed, 6 Jul 2022 02:34:48 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f4be08c9-e213-467f-f31d-08da5ef818a4 x-ms-traffictypediagnostic: SEZPR04MB5972:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JbT6J/Ly6YgENk3w/Sf5fwgO9Kc+yZpnn8bZlnu58F7mfvkVIm0L+kc5/Hy29zd2xkfgIXzJIRMfo10UupkLPNpsVCaht8TDZF4Uiw0I9EASSb5iczsRfAmBV8aAW5qTzRKhSWQFWXUdh4fgtbe3uN9u7Onqzt8KlKEFCZxVCnvSFSl/C7HxkYLHOKDuj1ZqJsEANfP+hdIQFCEbOjAZhNRZBtnVy1pTT9sri7k1PU+tbhCz46A8O+l0VDB0BwxZK3Y+obF3NOox18NY2NRj0pBLL7745EpV8NhDUwgne3jpwlWbZ01qt9vsfG4hSbRr9jFfGKj9npE3/2Oo3Lee9iNf5qFmtwnHWrsYGhlV/hPFejTXyjbQnC/SS6SY6P6Lsyyp8ud+9I49UM4r9w1uWJToEk4NaxNGup3lzq1Mn+tT1xX/dSZXUyJcWhSeE84gRNdJoV8uUpfzm1CdEjkht8y6R1KP5GH31tYv0Asuxuml3zz8HY/e8YhsYtNFZZeG3YHmAAEwwwDbGQQTwaQzAil/u+2gBShiD12K6Tl7Sx2f/c8spfr4nNzXRdkNpZJoTtJSgMWaerUc80+6OHNYpugGkT3j5E4pzZsJeT2FNdDjlJRfm1fdquX0kKvmQKNRDI4T8oas9s0skXVIcGeAfARDCUZcgyGzVoKyPiMMyqrmXjU9MfRwHEJLWhnhB0M2PmL8670gTx5lcfeunkaxwdBmMvM8qj2kDuC5lDewgoIuHMtmHiM++nqfILw/09zM3aSx1/EsspcQwcAWSKaWrl3cA35TVaUWszZBTm+PEqiFr0qWDYjQEo2iYXhy9/NQ x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR04MB3899.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(366004)(136003)(39860400002)(376002)(346002)(83380400001)(99936003)(82960400001)(122000001)(38070700005)(38100700002)(54906003)(110136005)(316002)(71200400001)(52536014)(8936002)(5660300002)(4326008)(8676002)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(107886003)(9686003)(186003)(26005)(2906002)(478600001)(15650500001)(6506007)(41300700001)(7696005)(55016003)(33656002)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?S4/nv0h4GuLqXLwF8ukZQ7i2uEmz?= =?utf-8?q?tx0hYi8IwFmmYbI9XfvVjSZJwbNqRJDC7NTxq9+RzNFdvOlxMjlWgvkNk0mf+1kI8?= =?utf-8?q?TXaZlJzqj8nBXuXpaISbgpOANFphbHCAxcbS5exfQFdKP6dVlUpzC40BRkfg3IkmC?= =?utf-8?q?7HcqKwSN47zmMdVlHsj89f4a8mfw7ZWabSgt9V58S2/4x88lZ5+rzXyh8lkWjehb8?= =?utf-8?q?PJ9DLW1uRanr/omiIhHXdg+N3BAkropeWNx2GVFsi7xdR3AMablSFmeNBtuLtmesQ?= =?utf-8?q?ai8zJPi7hMxCtMAZoejiM9Xnr+MLJaDPkcwL44PsKT3fFeHZxverZXW8TRxd4CB5b?= =?utf-8?q?f+ntU60X7XSvRZgltfOYn/YvSvBt8qEDf0bdGTRoUv0sHmLiTke01VdI9zbzXAnhg?= =?utf-8?q?e2z7uOG8mjTTXueR2zMWpl/JfUXjs/y/V/Kkz+8JHjOoczcAj6rF8enpS6YnKodN5?= =?utf-8?q?FVwTIihmcy9+nuZYR5e+MrhpQC4xDEnWMhaaxPbiSqlDTpiHKJS0kMeyfVYoNzHlX?= =?utf-8?q?43a6R990q2mHQhsTYuGuSFZ7huhr2HCwJR8Rk9bZ6FddCLCj5bNL1P5LyJFClQKeb?= =?utf-8?q?cObwjvsuQL/+oA7ZNywK8vttMJVWc2shiaqqhtZ5eFWB3XuLlW7Ze4lzoDdDvu2Nh?= =?utf-8?q?+vsaNCy5jmCls1Nrv/9Cx6eelxciQ87OfkfrgcRgvM9hACvcB8TvTTOiYTXUhcSqA?= =?utf-8?q?kbAWzBV0MxYsSgq8d11N7XKvOMK87IfxzMHLCfG0C6rt4c8votkPsvnBAEzzRdR7t?= =?utf-8?q?/tz2VgCrCJrEa5frVnmCZ+5+Y8MO1iEHjioO65meJtzIyLtIzPtEB/gNncgfDeGPC?= =?utf-8?q?llrPvBw3iGl1h0iCpP3i3/q6lcXjnqJyFj5N4SSUC3h5NHD83jhoHwcB5LIP4mn2B?= =?utf-8?q?BoH+jcecw2OnOpyME/GTkrLS78hoNL/yj5AGbVQSJDZNrmEYOr4z6vrdjsNE5XuZy?= =?utf-8?q?Z+KX4wrtN/BzQle5lvh6HjnyjTbFISNdYXtKhCcRT/WUupN1ZEIjF2Hf3a6GjLx6Y?= =?utf-8?q?IdpFBHCZdq0W4a9bD26x5eJb4Ccl5MHdBKYFmfagL3fPCNFf5csFIuN/5+fOH6bK6?= =?utf-8?q?kYLyVvZMhhN6mIkb+dhH78bdOw1lXNULk/eGmXd/RbIRKslP63DhJlks6BY7WQ1zR?= =?utf-8?q?sLMrMP84kzgx097v8zLWYFEZ0plVA1a/xVajrR9p7AcDZ22vlpp6XQbcmmNwaj/cK?= =?utf-8?q?1dWW1ss64RM3WGMlKepMIxHOwCuc8GhhyN+95D/+9BVPQJOhllD1RLQ+MgYwW4ANI?= =?utf-8?q?qUZT7rXowd82AkcIS4b3cOv4U8xgiH5GW/FIMrkyk1UauMF4ZXzw5JnrjGSb9WQZ8?= =?utf-8?q?hnACioKWRxaJ5rtQcvX9ICpvgjmLWXmiBuzHR2jclvAKGKoF0e6MNq6y7Aiu6B3xL?= =?utf-8?q?swCjbDcbM7lfiAAysaYOcVw6/vGOZVIpbapRxXC8nDj5u4Xl+bEsFBlAexyIXS7KB?= =?utf-8?q?FOFMAM0i3YGiH+rtuEmVPu1vblaoxdOgMUpUGk7TUWyLLAdYhr5fGfqzdPmVzUpYJ?= =?utf-8?q?r5mVvLSj5474?= MIME-Version: 1.0 X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SG2PR04MB3899.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f4be08c9-e213-467f-f31d-08da5ef818a4 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2022 02:34:48.4553 (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: UlTSIRL4GiEKlB4xzxb09l6ZVZvYgPF6q1MYDvbj4/T3rKlyNyldscXOFW9mk68JmsU9o6h63yyncSknCT0Hrw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR04MB5972 X-Proofpoint-GUID: xntBE6vPKKVsdLfR810Al6v9teuo6nuw X-Proofpoint-ORIG-GUID: xntBE6vPKKVsdLfR810Al6v9teuo6nuw X-Sony-Outbound-GUID: xntBE6vPKKVsdLfR810Al6v9teuo6nuw X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-06_02,2022-06-28_01,2022-06-22_01 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org __exfat_write_inode() is used to update file and stream directory entries, except for file->start_clu and stream->flags. This commit moves update file->start_clu and stream->flags to __exfat_write_inode() and reuse __exfat_write_inode() to update directory entries. Signed-off-by: Yuezhang Mo Reviewed-by: Andy Wu Reviewed-by: Aoyama Wataru Reviewed-by: Daniel Palmer --- fs/exfat/exfat_fs.h | 1 + fs/exfat/file.c | 47 +++------------------------------------------ fs/exfat/inode.c | 37 +++++++++++------------------------ fs/exfat/namei.c | 20 ++----------------- 4 files changed, 17 insertions(+), 88 deletions(-) diff --git a/fs/exfat/exfat_fs.h b/fs/exfat/exfat_fs.h index 4a7a2308eb72..708d972700c0 100644 --- a/fs/exfat/exfat_fs.h +++ b/fs/exfat/exfat_fs.h @@ -483,6 +483,7 @@ struct inode *exfat_build_inode(struct super_block *sb, void exfat_hash_inode(struct inode *inode, loff_t i_pos); void exfat_unhash_inode(struct inode *inode); struct inode *exfat_iget(struct super_block *sb, loff_t i_pos); +int __exfat_write_inode(struct inode *inode, int sync); int exfat_write_inode(struct inode *inode, struct writeback_control *wbc); void exfat_evict_inode(struct inode *inode); int exfat_block_truncate_page(struct inode *inode, loff_t from); diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 20d4e47f57ab..08e5ffd78b10 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -101,7 +101,6 @@ int __exfat_truncate(struct inode *inode, loff_t new_size) struct super_block *sb = inode->i_sb; struct exfat_sb_info *sbi = EXFAT_SB(sb); struct exfat_inode_info *ei = EXFAT_I(inode); - int evict = (ei->dir.dir == DIR_DELETED) ? 1 : 0; /* check if the given file ID is opened */ if (ei->type != TYPE_FILE && ei->type != TYPE_DIR) @@ -150,49 +149,9 @@ int __exfat_truncate(struct inode *inode, loff_t new_size) ei->attr |= ATTR_ARCHIVE; /* update the directory entry */ - if (!evict) { - struct timespec64 ts; - struct exfat_dentry *ep, *ep2; - struct exfat_entry_set_cache *es; - int err; - - es = exfat_get_dentry_set(sb, &(ei->dir), ei->entry, - ES_ALL_ENTRIES); - if (!es) - return -EIO; - ep = exfat_get_dentry_cached(es, 0); - ep2 = exfat_get_dentry_cached(es, 1); - - ts = current_time(inode); - exfat_set_entry_time(sbi, &ts, - &ep->dentry.file.modify_tz, - &ep->dentry.file.modify_time, - &ep->dentry.file.modify_date, - &ep->dentry.file.modify_time_cs); - ep->dentry.file.attr = cpu_to_le16(ei->attr); - - /* File size should be zero if there is no cluster allocated */ - if (ei->start_clu == EXFAT_EOF_CLUSTER) { - ep2->dentry.stream.valid_size = 0; - ep2->dentry.stream.size = 0; - } else { - ep2->dentry.stream.valid_size = cpu_to_le64(new_size); - ep2->dentry.stream.size = ep2->dentry.stream.valid_size; - } - - if (new_size == 0) { - /* Any directory can not be truncated to zero */ - WARN_ON(ei->type != TYPE_FILE); - - ep2->dentry.stream.flags = ALLOC_FAT_CHAIN; - ep2->dentry.stream.start_clu = EXFAT_FREE_CLUSTER; - } - - exfat_update_dir_chksum_with_entry_set(es); - err = exfat_free_dentry_set(es, inode_needs_sync(inode)); - if (err) - return err; - } + inode->i_mtime = current_time(inode); + if (__exfat_write_inode(inode, inode_needs_sync(inode))) + return -EIO; /* cut off from the FAT chain */ if (ei->flags == ALLOC_FAT_CHAIN && last_clu != EXFAT_FREE_CLUSTER && diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index 0133d385d8e8..ebc64fa5c2de 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -17,7 +17,7 @@ #include "exfat_raw.h" #include "exfat_fs.h" -static int __exfat_write_inode(struct inode *inode, int sync) +int __exfat_write_inode(struct inode *inode, int sync) { unsigned long long on_disk_size; struct exfat_dentry *ep, *ep2; @@ -75,6 +75,13 @@ static int __exfat_write_inode(struct inode *inode, int sync) ep2->dentry.stream.valid_size = cpu_to_le64(on_disk_size); ep2->dentry.stream.size = ep2->dentry.stream.valid_size; + if (on_disk_size) { + ep2->dentry.stream.flags = ei->flags; + ep2->dentry.stream.start_clu = cpu_to_le32(ei->start_clu); + } else { + ep2->dentry.stream.flags = ALLOC_FAT_CHAIN; + ep2->dentry.stream.start_clu = EXFAT_FREE_CLUSTER; + } exfat_update_dir_chksum_with_entry_set(es); return exfat_free_dentry_set(es, sync); @@ -216,32 +223,10 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset, num_clusters += num_to_be_allocated; *clu = new_clu.dir; - if (ei->dir.dir != DIR_DELETED && modified) { - struct exfat_dentry *ep; - struct exfat_entry_set_cache *es; - int err; - - es = exfat_get_dentry_set(sb, &(ei->dir), ei->entry, - ES_ALL_ENTRIES); - if (!es) + if (modified) { + if (__exfat_write_inode(inode, inode_needs_sync(inode))) return -EIO; - /* get stream entry */ - ep = exfat_get_dentry_cached(es, 1); - - /* update directory entry */ - ep->dentry.stream.flags = ei->flags; - ep->dentry.stream.start_clu = - cpu_to_le32(ei->start_clu); - ep->dentry.stream.valid_size = - cpu_to_le64(i_size_read(inode)); - ep->dentry.stream.size = - ep->dentry.stream.valid_size; - - exfat_update_dir_chksum_with_entry_set(es); - err = exfat_free_dentry_set(es, inode_needs_sync(inode)); - if (err) - return err; - } /* end of if != DIR_DELETED */ + } inode->i_blocks += num_to_be_allocated << sbi->sect_per_clus_bits; diff --git a/fs/exfat/namei.c b/fs/exfat/namei.c index 76acc3721951..f6f8725803dc 100644 --- a/fs/exfat/namei.c +++ b/fs/exfat/namei.c @@ -318,7 +318,6 @@ static int exfat_find_empty_entry(struct inode *inode, unsigned int ret, last_clu; loff_t size = 0; struct exfat_chain clu; - struct exfat_dentry *ep = NULL; struct super_block *sb = inode->i_sb; struct exfat_sb_info *sbi = EXFAT_SB(sb); struct exfat_inode_info *ei = EXFAT_I(inode); @@ -384,23 +383,8 @@ static int exfat_find_empty_entry(struct inode *inode, size = EXFAT_CLU_TO_B(p_dir->size, sbi); /* update the directory entry */ - if (p_dir->dir != sbi->root_dir) { - struct buffer_head *bh; - - ep = exfat_get_dentry(sb, - &(ei->dir), ei->entry + 1, &bh); - if (!ep) - return -EIO; - - ep->dentry.stream.valid_size = cpu_to_le64(size); - ep->dentry.stream.size = ep->dentry.stream.valid_size; - ep->dentry.stream.flags = p_dir->flags; - exfat_update_bh(bh, IS_DIRSYNC(inode)); - brelse(bh); - if (exfat_update_dir_chksum(inode, &(ei->dir), - ei->entry)) - return -EIO; - } + if (__exfat_write_inode(inode, IS_DIRSYNC(inode))) + return -EIO; /* directory inode should be updated in here */ i_size_write(inode, size); From patchwork Wed Jul 6 02:34:52 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yuezhang.Mo@sony.com" X-Patchwork-Id: 12907252 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 E0853C433EF for ; Wed, 6 Jul 2022 02:35:31 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231139AbiGFCf3 (ORCPT ); Tue, 5 Jul 2022 22:35:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36264 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230411AbiGFCfQ (ORCPT ); Tue, 5 Jul 2022 22:35:16 -0400 Received: from mx07-001d1705.pphosted.com (mx07-001d1705.pphosted.com [185.132.183.11]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F07581A046; Tue, 5 Jul 2022 19:35:15 -0700 (PDT) Received: from pps.filterd (m0209329.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 265NgBh3003384; Wed, 6 Jul 2022 02:34:58 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=S1; bh=4QQoi3s9H62iOspt2lF7zTwpjvxISzs+X/s4Jk6b5iQ=; b=PTlhH9X1z6A/xUKrEsNwKRIRXPciMqQMpQWwQSENg4rGFG1Qn5AHYKY5tp3NtYwPwc8T OP7Tk541Ia+QC3OIi6fVov2l2UtoTQlc14lLyeMktCnzgWZ6s8w5Gn1p7QBQQEmWkC/L kDjN//VfTW3CKSKw2+5+5cNEyid2v8pVq07v4QjKgqIKlfyJAyFMOFCvtptiUZvSEqXF wP7Hs0gQWZ1/Kg+StmTE1235C0SNTcF+Zona8Qn15yYdc/psaVWFKVfgD6l0SuI15Hu9 f7d+kNYjwyCeuz27bSdfNXEWhplva4yNQe6A38kujyENpXMUG1Cfq/nVsujhOoWdroHn BA== Received: from apc01-sg2-obe.outbound.protection.outlook.com (mail-sgaapc01lp2105.outbound.protection.outlook.com [104.47.26.105]) by mx08-001d1705.pphosted.com (PPS) with ESMTPS id 3h4urcgab7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 06 Jul 2022 02:34:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=L9jLlQh28lONrLgKn2Q+8L2lS90A8tXrouWqNoQJy2Trg0oaSlgjD/Aut81LBukQT0cgM54QzNTVZxx4HDDPUGZqqu28+jp8PIDXflTvcd+xhAKbqv0AmAUjMMSjE8G24NRe+i0qIrzhMXfwKleTxvQWRDl1a0VDEuIc2yOq4iG7Ir5wmUw8xH0xO8LKSjZnSe2B6u9MevB5qDC7BjyNrKgpHZcpfqjb0Eq33gwgZY3dTHZv+wUTrmn5WMIV0JE6dh+C7N70bCcNmcv3AQbRfwYC/3SWiJyOBDN6mX6eHsmYBNj1V0cbx6Cgra2uJ0dYQaE0ruwabpuyvYJJ679fhg== 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=4QQoi3s9H62iOspt2lF7zTwpjvxISzs+X/s4Jk6b5iQ=; b=LYhy4rcsfC0d8SCXD7dAYBtVHrLPuM5U7YsqIplsjjc85kdfns8hIH1wUmV/IWuJfHQMDzkBwmrajmTsfVNwmUy16A2LAJSpTLMu4EkWA1aUAMrZD1fXxnfy2wGsk3MbuEkLR/KoR73BoFO9UUM0PUdpR/jd+gVXR/YlaIWCorh+bjaIdhdgJQMwqtmLpeS+xcANJJFrLP6hdemJdngcTSGw2U46r1G+GU1p/TEPPFis++A18XpYZl+bUzEXYLX3s2gDE38ImRqhFP6wiV1efqUhs/neFgiQR8TfXC7EQFiFNglq0UUNW0K8rURLirLlN01BlrADSskN5joZJrjbcw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sony.com; dmarc=pass action=none header.from=sony.com; dkim=pass header.d=sony.com; arc=none Received: from SG2PR04MB3899.apcprd04.prod.outlook.com (2603:1096:4:94::11) by SEZPR04MB5972.apcprd04.prod.outlook.com (2603:1096:101:65::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5417.15; Wed, 6 Jul 2022 02:34:53 +0000 Received: from SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a]) by SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a%6]) with mapi id 15.20.5395.017; Wed, 6 Jul 2022 02:34:52 +0000 From: "Yuezhang.Mo@sony.com" To: Namjae Jeon , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Andy.Wu@sony.com" , "Wataru.Aoyama@sony.com" Subject: [PATCH v1 2/3] exfat: remove duplicate write inode for truncating file Thread-Topic: [PATCH v1 2/3] exfat: remove duplicate write inode for truncating file Thread-Index: AdiQ32NodxpH5hhMTdGIdMWLRFebXg== Date: Wed, 6 Jul 2022 02:34:52 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 17e16485-f0d4-4aca-e030-08da5ef81b42 x-ms-traffictypediagnostic: SEZPR04MB5972:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: juHTuDmNpR1JkCdXqZeqpDikrLvxqfAkEoIQlvhXyJp7W362kL6awbHOR0+3yWwa/QtrzZvxTCSOSai+ccuikV+agGSM2aWcDIXD7IdNKNgxKUnHAAHz7rwgPVFQx75Qz/SBT7mJlTIMlZl9iaP5FhG6MfewwsaBBOVPo48u39EGBKj/bd5PjSEQuguTZmRVwomA3u/hohf4P3Mjo9mumkD5W0sngqODswFv4SXJSI8m5Zh28mOcqstvnpbdvusNF+jrC85f72WLk8cyQUwFoO9FjdU0hVIDM6DXvasExk5XAetvATs9Qz0gVfRUj/OHdEX5nYgboPf69yqvgMprOUCL4UG3f8x74kmiG1JJHK/220GITMUW7dF6bIh+1sxxnn0cd9cszFEqZYBVR1uak+EsrDTcLFvkWC4qmAkJQ+98xjLbCa23dd5dFIGkDwrmF6V/kgXnpFzKeyjXtg3iR3pAqbkQk0WPdbniglUIv5r7AhM4bKwjKWOwHrWwmbRnkqusvocNlSVNIVIx+oBt1fpBvx2M80y9/EX235NcK8kf7P8IQQzVToBpy99EGfXNonh9laetdZ1rD7BfnnWFdfY2f+EAleyn1HoQesl1uirGIhqwtR5u4FM9C51V3NU/gHcn4pqNOOBz6kldCLuk22fzXgSLVnlJGcyAmsPIfG2JTTqQpX+PAGws3ZS0jpXa/hIJ432ZARWY4+hxh6601YeqkRkfvKnk+TMfV5EH1vn3ihM1JwakuRibO22S17VA3xxBJYWVGU5xHQK2EdLvR9F6IIq5kmej5CHNbLB/kjStsH01SJ4xDhWuGTuxDeD8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR04MB3899.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(396003)(366004)(136003)(39860400002)(376002)(346002)(83380400001)(99936003)(82960400001)(122000001)(38070700005)(38100700002)(54906003)(110136005)(316002)(71200400001)(52536014)(8936002)(5660300002)(4326008)(8676002)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(107886003)(9686003)(186003)(26005)(2906002)(478600001)(6506007)(41300700001)(7696005)(55016003)(33656002)(86362001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?ZSm1f6mHFzsw5JWDy0jlSbAEriTS?= =?utf-8?q?kbUICkGcZpXlcRzZlKSRJNt7yZS0yWOYbSiBpnvFbYPW9qam+O+XCGRmhYqV6Z8M5?= =?utf-8?q?0FRaOK7Z8HdjBt/utuaFbZ3IOY36FvSBDt8TTz0oWhXSCLmI3jTFloVe2V7QLVEKj?= =?utf-8?q?pS7D33oFrjMEMLIyop8ZXybDj9nYZ1fIwtf9ZomQ5NPVrmb4JuC2HEa71ZOF03fVR?= =?utf-8?q?AQ7KcgaGv2zlR1aLOc2sJGRj5BXKzuMSAzxD0KigoNIAhRBmSbZurDCWQDTJ+80BL?= =?utf-8?q?mjmqeVbqV1xFmpAuB5YjxmAXGfi11wru5ZRn3/HQ4J/AzmEcOr/8HGxRI9aW3j31L?= =?utf-8?q?01HeeRrSkP7fx8VWdu+co1Js28yiLNz4H5nBT+K46Kwj+saPb5sYdDk8k70o54q5I?= =?utf-8?q?fl385oDBs4iW4Lc0a4ENs0Cad5OIppuWPcpmm1/UGtsXoF+7A0bGcrsvfHDc8gMi9?= =?utf-8?q?MKyevFEzGV/qxWQGafQy9p9LKlYWC1kfdr+nNso0/ZqQZBmb0Qr7TWsGug/wum2y/?= =?utf-8?q?713BQbjuPKv7SAJv+IZ+S17Oxn4uk8sJtQduFZZ1z0nrWDtEO7QIx6f8IhWPBUEMx?= =?utf-8?q?hr1QeP5vMo9Cp5TbGaimSSFdVAKHcCGNsX3kYzH+2sfjK/QvQs70BJBP263l+4Bto?= =?utf-8?q?AFupXWd5U/0RqoD1DAwPyVLyZzeCsxQc0cb7UkB7vPrDpjkCkE8A6kxwWFie7UVfJ?= =?utf-8?q?Tg5JZ9xv1PwYBzTomTzCeJVinz+lprxMCW3oolDmGZuSzlLMzvyJV/iTCMFgJ1Auc?= =?utf-8?q?GJfarw/bKrT9cyHf4i9rGUnilN1IkpWyw8MYB1dbnyxX2LqBfrh6kEv5TDYGX+wV+?= =?utf-8?q?h1bqZZdjPZQez/v0M+CatXa0QtSeVdw0KMvhV7FR7rTH90VxHt1EhXaRGD1YbFQg8?= =?utf-8?q?x0sxvh/Xc2Elmd4vOQyX+/J7AmFF4/eXM4jumtsvX9eToXvTNOznSD4cOqa3XB7zx?= =?utf-8?q?En2pZ5NzhS6HKXQpI9qhaU2HKfYFNkZjGkSUOfc6PnpAdaaEHofr0nVGfkVxeRaHZ?= =?utf-8?q?bisw7kC/4g0ZsMV4hCkb7VCJ0TaDZFfqaTMOduC8iahulPt/PrrmY8GPgFsJZFg6C?= =?utf-8?q?ZygqEK6FAFHIITRyhyvim9uPG4MCelI51FIEATdTDUboXWzocbi2mTXHwJe3guzvu?= =?utf-8?q?9NPBNiW5NxjLAruJLCY068Gbt5QU9NPObnPJa4geQ/XYgEQ3A9D7E827TAKzQ56/q?= =?utf-8?q?TsHhpWQ7CJHuy1NgZRkxPxd8jSSBak/sMZiFkSbCLbftVruaVrn6eAeukmjnKhhTl?= =?utf-8?q?OIsPMMzR8wGLtXSImsQ3pQ8wJCyWYtb+ad0nAUEPbMBKqQib7uUDnRyWWgaKUSniF?= =?utf-8?q?uOZgznvuk+ggEdPb8RqqOxnCDpVYcaPma+O10glcOH83NrH3mNvBPzHL2HPH9jPKm?= =?utf-8?q?lzsEgMIP6iB2IEIzyP3g8xqQhScIsb298fk4kzHiFbGC0/n5IKdwB/lQN7huWlzL5?= =?utf-8?q?xoCIBFfJdxrmS3W7W6egVMrkLKD3Mi8XkJkmy21G5pbZ9XQzyWzD/ODir8bG8DmLW?= =?utf-8?q?jjteK0F/N1Zv?= MIME-Version: 1.0 X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SG2PR04MB3899.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17e16485-f0d4-4aca-e030-08da5ef81b42 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2022 02:34:52.8145 (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: H9q9EA/10eZKK8+0wj0pxWVAXPGkjX/P+9snXPG0RrlIp3p+ZB4p2TEdkIjFCUcGElB2qFOEQl/9imcwGwPgiA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SEZPR04MB5972 X-Proofpoint-GUID: CBIvfy6bHPAanbx2Ktzjup9zWTAeBtAP X-Proofpoint-ORIG-GUID: CBIvfy6bHPAanbx2Ktzjup9zWTAeBtAP X-Sony-Outbound-GUID: CBIvfy6bHPAanbx2Ktzjup9zWTAeBtAP X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-06_02,2022-06-28_01,2022-06-22_01 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org This commit moves updating file attributes and timestamps before calling __exfat_write_inode(), so that all updates of the inode had been written by __exfat_write_inode(), mark_inode_dirty() is unneeded. Signed-off-by: Yuezhang Mo Reviewed-by: Andy Wu Reviewed-by: Aoyama Wataru Reviewed-by: Daniel Palmer --- fs/exfat/file.c | 37 ++++++++++++++++++++++++------------- fs/exfat/inode.c | 1 + 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/fs/exfat/file.c b/fs/exfat/file.c index 08e5ffd78b10..4e0793f35e8f 100644 --- a/fs/exfat/file.c +++ b/fs/exfat/file.c @@ -148,8 +148,17 @@ int __exfat_truncate(struct inode *inode, loff_t new_size) if (ei->type == TYPE_FILE) ei->attr |= ATTR_ARCHIVE; - /* update the directory entry */ - inode->i_mtime = current_time(inode); + /* + * update the directory entry + * + * If the directory entry is updated by mark_inode_dirty(), the + * directory entry will be written after a writeback cycle of + * updating the bitmap/FAT, which may result in clusters being + * freed but referenced by the directory entry in the event of a + * sudden power failure. + * __exfat_write_inode() is called for directory entry, bitmap + * and FAT to be written in a same writeback. + */ if (__exfat_write_inode(inode, inode_needs_sync(inode))) return -EIO; @@ -202,12 +211,6 @@ void exfat_truncate(struct inode *inode, loff_t size) if (err) goto write_size; - inode->i_ctime = inode->i_mtime = current_time(inode); - if (IS_DIRSYNC(inode)) - exfat_sync_inode(inode); - else - mark_inode_dirty(inode); - inode->i_blocks = round_up(i_size_read(inode), sbi->cluster_size) >> inode->i_blkbits; write_size: @@ -289,6 +292,12 @@ int exfat_setattr(struct user_namespace *mnt_userns, struct dentry *dentry, attr->ia_valid &= ~ATTR_MODE; } + if (attr->ia_valid & ATTR_SIZE) + inode->i_mtime = inode->i_ctime = current_time(inode); + + setattr_copy(&init_user_ns, inode, attr); + exfat_truncate_atime(&inode->i_atime); + if (attr->ia_valid & ATTR_SIZE) { error = exfat_block_truncate_page(inode, attr->ia_size); if (error) @@ -296,13 +305,15 @@ int exfat_setattr(struct user_namespace *mnt_userns, struct dentry *dentry, down_write(&EXFAT_I(inode)->truncate_lock); truncate_setsize(inode, attr->ia_size); + + /* + * __exfat_write_inode() is called from exfat_truncate(), inode + * is already written by it, so mark_inode_dirty() is unneeded. + */ exfat_truncate(inode, attr->ia_size); up_write(&EXFAT_I(inode)->truncate_lock); - } - - setattr_copy(&init_user_ns, inode, attr); - exfat_truncate_atime(&inode->i_atime); - mark_inode_dirty(inode); + } else + mark_inode_dirty(inode); out: return error; diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index ebc64fa5c2de..3acfbec1a0d4 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -369,6 +369,7 @@ static void exfat_write_failed(struct address_space *mapping, loff_t to) if (to > i_size_read(inode)) { truncate_pagecache(inode, i_size_read(inode)); + inode->i_mtime = inode->i_ctime = current_time(inode); exfat_truncate(inode, EXFAT_I(inode)->i_size_aligned); } } From patchwork Wed Jul 6 02:34:55 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yuezhang.Mo@sony.com" X-Patchwork-Id: 12907251 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 53AAEC43334 for ; Wed, 6 Jul 2022 02:35:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230484AbiGFCf2 (ORCPT ); Tue, 5 Jul 2022 22:35:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230393AbiGFCfQ (ORCPT ); Tue, 5 Jul 2022 22:35:16 -0400 Received: from mx08-001d1705.pphosted.com (mx08-001d1705.pphosted.com [185.183.30.70]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D353B19036; Tue, 5 Jul 2022 19:35:14 -0700 (PDT) Received: from pps.filterd (m0209322.ppops.net [127.0.0.1]) by mx08-001d1705.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 2660vTjl006040; Wed, 6 Jul 2022 02:35:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sony.com; h=from : to : cc : subject : date : message-id : content-type : mime-version; s=S1; bh=4iY+732/IzvDi4TF2xB99Sv3OTEHAzblTdM17pFppQ4=; b=lAx3lP96KsqrL5XnJ0k1vGbveZwPamHTkspzWstMkxGjifgqqny30AcIzol2Mzp6+Rb5 eSmlWo5X+sUTUNYozEbR77HYcsf9vJY1IH9kjh5iK9Iz9dNqONyhCzsoFYUZQsitJCcB p8y/tTrfu+fVEuH/yoKeWZHacXoyBQJyHVY24bMD9f402IuKkhwGA5iP7bJUljJTG37J EE2t9rxa3Y6paeYtxwe1+WTaJLCqeH41QFWVX0hGGs9gbBPZfVTi2E5TVNQz2U3kfrwE YPLsGo4ijKaMrm7KdGCIH0M0QBWCW8ZVE+GMRtorEHoZEtlLw1hO5UjfRvU115Kfvyet jg== Received: from apc01-tyz-obe.outbound.protection.outlook.com (mail-tyzapc01lp2040.outbound.protection.outlook.com [104.47.110.40]) by mx08-001d1705.pphosted.com (PPS) with ESMTPS id 3h4ub48b32-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 06 Jul 2022 02:35:05 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=h3l3gmH0b+pmpbhM55CMda6PqTZCsALf6p4ZoUW+zmVzEC4ycMhCm33VZZ3audxCtWA55iuIP6w3+aNAV6RkG0DRXlw8fXfTC3l5bc0eo828DvFlV88qq0JjyHEceQqxDX1p26kEd1+rlaKaaBxGuYiHnbyXexKI4iv5WacFmMFmoVIjSb1vR1cbs1fpH1wWNfV+HPSvEGf2ZcYb8YL3PV09RbXs7spTbulJx00UDtb5teyTxF0krlWBip00MU/KkfpUMLFHLGc7tOwXxCP9x+swMx1KoVAORbnoe/Ly1/pSmWzGWy5ZQqPilMCoP9OLgeC/idD671NTjWSYA8Xh6Q== 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=4iY+732/IzvDi4TF2xB99Sv3OTEHAzblTdM17pFppQ4=; b=SaRLTTe3N+zHYqFKtyASK0iF4DQvM/p5NUJSffbxiG1Q4pOn0KKfq7PaMHgnaCABB5vqpJCVOKScoEAnSSsa6WH478CuNGHlsWHoDgEcs2J6XtzCh3gKJ9mx6WIvXQVNFWJKDEBA/TY8xWfFLYVw8u/wSaC2p8bjV2LsrFY4Utzvn4vi/WjTkXa343YBQJ8Y7JfZ4wdNbgWzoQkLbNzUvOsB9WJ7wH2pYgt+qyq3k7Q3KD8a71+8oMOEe7sHpY9QNfsAwehxV/+EFX1mFIY9SlaCWYCZLDwmTdaJslfO+iNZGkiOsyRUG4lxvj/5kNdpa4XH4jB/4Qt1oluAT0CFGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=sony.com; dmarc=pass action=none header.from=sony.com; dkim=pass header.d=sony.com; arc=none Received: from SG2PR04MB3899.apcprd04.prod.outlook.com (2603:1096:4:94::11) by PS1PR04MB2792.apcprd04.prod.outlook.com (2603:1096:803:44::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5395.19; Wed, 6 Jul 2022 02:34:55 +0000 Received: from SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a]) by SG2PR04MB3899.apcprd04.prod.outlook.com ([fe80::9076:c0a7:6016:599a%6]) with mapi id 15.20.5395.017; Wed, 6 Jul 2022 02:34:55 +0000 From: "Yuezhang.Mo@sony.com" To: Namjae Jeon , "sj1557.seo@samsung.com" CC: "linux-fsdevel@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Andy.Wu@sony.com" , "Wataru.Aoyama@sony.com" Subject: [PATCH v1 3/3] exfat: remove duplicate write inode for extending dir/file Thread-Topic: [PATCH v1 3/3] exfat: remove duplicate write inode for extending dir/file Thread-Index: AdiQ38Q7UTVVpY/QSjGfFgl0xxwZdA== Date: Wed, 6 Jul 2022 02:34:55 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 584b5cdd-4d16-4641-7b0f-08da5ef81cc7 x-ms-traffictypediagnostic: PS1PR04MB2792:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: wWcaBDrGmtqNn1ypLOtfq0pJUbzK+6KLPVysdEYNLyZOoj6nme+7abBg+ro0DyWJzh1VHOpV7OV9oJ3eeB+0oh96ISDfCf0ZBY+Vlihd/p20HjzJJCqmEWAMGjrxls8H3iyClZ1oLAQPuA+PDymWA8dV0CfGmzl6d+/kJPGs9+5NIBNkFysrVtqnY89h1BMfWFd7uJpgC8glWCUdn5V3UXs8v9fGUN/7Bhymf4wFBCVupFIHNe+gIpWEyGv3t4XUQzqAsE+QlK0BoLJS5Ot5QFDTSrcnSbace62DHliOw0yxD9d4eBSPqhj/8LCSmXozej3pEWsdXbuxfyh0M0G+H+H3ZsKs1IKFeznKG56cDXzt3NqHUHg8FMjHvw9hltx3DceRmljcpoNOnYrWI1Stmge090iQr30oLuVoYMOBwmBlyq1nD8Wewm4of/+4vqrWGSaswM0SlkMemGcNBZJtGJf6BXINjUNxNxa3oigUibtFgtiwLmuzr+0s4sDLApEOc5CPGEQw33a++0gFRVUVzAoghPK7/CtgJj98EWvQSMJHrEpWGqO/ahXfzNlye70v1mQS/uUCj6PcGHcyNXCrqXg8ZjeSI7z/H9RBlEvfRr1wK90UWYmatv0AgAqtSa+uU0ovAJeFS7UBn4CiQXof8tdvrmekQ7DXQRBF9hWdKzj0ilUj4Lce96S3Ucq3Y0STVUMG+7/8TvfDdXse/Tv7+o+c4Q4GJQSp5sO1WgDIjNTzk/9j5s+XyEClqJxo0oRlIjLrK9QP1nwis6gEF/hRGzF1Kas557VpR8ny3rHEkfMkOZUT6T3iTkTpzzaUW0P2 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SG2PR04MB3899.apcprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230016)(4636009)(346002)(39860400002)(376002)(396003)(136003)(366004)(478600001)(316002)(82960400001)(64756008)(99936003)(41300700001)(110136005)(54906003)(71200400001)(38070700005)(66556008)(4326008)(2906002)(76116006)(66446008)(107886003)(186003)(66946007)(83380400001)(66476007)(55016003)(122000001)(8676002)(38100700002)(7696005)(6506007)(9686003)(26005)(52536014)(33656002)(86362001)(8936002)(5660300002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?q?pCZlac5DPsbAzEptchbaZVmkk6dP?= =?utf-8?q?Vcut6LyQ79lESnFiabPL3cL3RyvnQrnPeBcd+eEjiMdj691bq7kEscHGPUeO/fRCc?= =?utf-8?q?qaXXnrGSGS9x4AAlTQBmNazup4Jls379vQKGOTCFlY2JPv/AEYz9nPPhhH5erNRtS?= =?utf-8?q?diMtkcWHGuftMRmgpdMrRmfiSrNenAoYiO/xCoohTAAJGEXhDRiu5BSauDbPhZ44/?= =?utf-8?q?pKsViMK8dFcyMVAztNVtwnaGyFo97AaK2sFfqKQB76XQRQnE5gT5qObL2KjAb6g0B?= =?utf-8?q?H4jzQzlsMCTdQp2AAjLmOodLITkpOJICXZ1d8SzZ8rbYyrFoZqa25pJwRbfO29IP+?= =?utf-8?q?JWfUfWDzlPNvmvqXhfQhPNgAwVV/GQPn4UMPLvoD1WL7eykKCB2UNnueYV4fT/lEa?= =?utf-8?q?4M6UgVI6OGBvPdHO5JWpmU0SxTIPhibbO6hK3Cpf74lWdvGVDkLvnfoZwbE597oJh?= =?utf-8?q?JrWIN6VnBHDPCe3s8aJhgTNLHm0OFZmxewxT54bSoTT3xuElFs5OCyLG0/o3JmakF?= =?utf-8?q?NnkmF+/mfTnXOJWUh2pnmg4Cn4L4CnL0i6+lQpelZgfSFn9R4J09mQDR2KoKSl5gn?= =?utf-8?q?KtREd71N7dCv557fyaEZtwY0MJxLMBc81pMvJRzTOpWKNaTX3wilk/XI+dZ5afP7e?= =?utf-8?q?GwAP0gZT3bw7ILPLwKI1a9mqPJq7zFbq4RlHO6IKcf0kukTYhaQ5dfNfpCLJGP5hB?= =?utf-8?q?hm4kFRo6r8i+8RJT8xgRgoBjweGYDMiUQJEtVWOGDB9M0LoGsBsVEXwhSTmFy4Ejq?= =?utf-8?q?7LUv6OVi3KqqVBumDmYrkYCs0Ul8IGgb9NPi9KTz5vIAFise2mgXr8xhQpQ4Tmj12?= =?utf-8?q?jf87FzbDIlnSR9kUx5CAWe1zWaGrKldTt0Mi3wBiIsS6xMDAXDEwYsNVwvSZChwjH?= =?utf-8?q?ZeTCHusRcrtyuQc1Op61ketkB1PKS88wo6wvdoF0SEdc59nK3KHUviJUiHWZLqI4W?= =?utf-8?q?Q/sOc14WXOWKY5y0QDHUQ+sxO5Wxu7Mv2z/AT5+C2/ZpOWD3wCeYCovzdyD6r+Sas?= =?utf-8?q?nNse9L18Prxl8jTb2fH5+90I80LRKouqNt7R3I52gmrU1IDs4zWrhbzY2vQec+Moz?= =?utf-8?q?r7FrgD1s1xSza1xw1mm7JgAmG0jBiGMibNbCXbLjnrub/qQEM89T3dkcjXOzhRYsj?= =?utf-8?q?D+X5+Mtw9G5DwCKrngseSmRRv5dWVbWcy58LdTTFXmLO5xqRpeqUQX43K7z08V/4o?= =?utf-8?q?JEEoA9DZ1QywPB0DbjpvQGTZTn2taSd1F3PpEABtEHkyvhvQ7U7jkpr3TG/EHofEA?= =?utf-8?q?wBzfScJ28ujHQl2JM9WM3qXYbeVp0AjR+/OKMDfFEnK/jSW5o/Ibrx1L35Y7OW39f?= =?utf-8?q?IchLEHM+KUyASqCLSoKjv2ZWnIILd24ZkixqQ/q9Ui6JeN9UAH0+PxLSOkmE/RZiJ?= =?utf-8?q?O+YpgCDviVKgUMzdw+gDMUi/2FpCw5rrSw1pjh+KxiScWGEdeNx9PEe8J3W4z4oGD?= =?utf-8?q?zvRvgXKqPUj/muYqEvMeYyWRlk5fOmrvBD2nigDPxxOepHYbXw44WoM6ur249fYTm?= =?utf-8?q?s+ht4WcTereC?= MIME-Version: 1.0 X-OriginatorOrg: sony.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SG2PR04MB3899.apcprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 584b5cdd-4d16-4641-7b0f-08da5ef81cc7 X-MS-Exchange-CrossTenant-originalarrivaltime: 06 Jul 2022 02:34:55.3769 (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: 100kl9gxh19Ycne6A53/62SmJ3G1ycfjp/xwAmNgEtzsRWs4PO8g5AzUb5fkc4HBQGNwBO3tTvLwCzyxDi7EWA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PS1PR04MB2792 X-Proofpoint-GUID: r3h8Mq4R8FkUE_PuotP0xpbMiwQ8nfWx X-Proofpoint-ORIG-GUID: r3h8Mq4R8FkUE_PuotP0xpbMiwQ8nfWx X-Sony-Outbound-GUID: r3h8Mq4R8FkUE_PuotP0xpbMiwQ8nfWx X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-06_02,2022-06-28_01,2022-06-22_01 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Since the timestamps need to be updated, the directory entries will be updated by mark_inode_dirty() whether or not a new cluster is allocated for the file or directory, so there is no need to use __exfat_write_inode() to update the directory entries when allocating a new cluster for a file or directory. Signed-off-by: Yuezhang Mo Reviewed-by: Andy Wu Reviewed-by: Aoyama Wataru Reviewed-by: Daniel Palmer --- fs/exfat/inode.c | 9 +-------- fs/exfat/namei.c | 4 ---- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/fs/exfat/inode.c b/fs/exfat/inode.c index 3acfbec1a0d4..a795437b86d0 100644 --- a/fs/exfat/inode.c +++ b/fs/exfat/inode.c @@ -112,7 +112,7 @@ void exfat_sync_inode(struct inode *inode) static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset, unsigned int *clu, int create) { - int ret, modified = false; + int ret; unsigned int last_clu; struct exfat_chain new_clu; struct super_block *sb = inode->i_sb; @@ -203,7 +203,6 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset, if (new_clu.flags == ALLOC_FAT_CHAIN) ei->flags = ALLOC_FAT_CHAIN; ei->start_clu = new_clu.dir; - modified = true; } else { if (new_clu.flags != ei->flags) { /* no-fat-chain bit is disabled, @@ -213,7 +212,6 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset, exfat_chain_cont_cluster(sb, ei->start_clu, num_clusters); ei->flags = ALLOC_FAT_CHAIN; - modified = true; } if (new_clu.flags == ALLOC_FAT_CHAIN) if (exfat_ent_set(sb, last_clu, new_clu.dir)) @@ -223,11 +221,6 @@ static int exfat_map_cluster(struct inode *inode, unsigned int clu_offset, num_clusters += num_to_be_allocated; *clu = new_clu.dir; - if (modified) { - if (__exfat_write_inode(inode, inode_needs_sync(inode))) - return -EIO; - } - inode->i_blocks += num_to_be_allocated << sbi->sect_per_clus_bits; diff --git a/fs/exfat/namei.c b/fs/exfat/namei.c index f6f8725803dc..6bf9abc45090 100644 --- a/fs/exfat/namei.c +++ b/fs/exfat/namei.c @@ -382,10 +382,6 @@ static int exfat_find_empty_entry(struct inode *inode, p_dir->size++; size = EXFAT_CLU_TO_B(p_dir->size, sbi); - /* update the directory entry */ - if (__exfat_write_inode(inode, IS_DIRSYNC(inode))) - return -EIO; - /* directory inode should be updated in here */ i_size_write(inode, size); ei->i_size_ondisk += sbi->cluster_size;