Received: by 2002:a05:6a10:d5a5:0:0:0:0 with SMTP id gn37csp4764735pxb; Tue, 5 Oct 2021 09:50:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxj2FMqX1BqSFkJKYLL0aK+FJeD1UX+zI54W5u2vzFxtDpBEWQcTUHDTal//sFJVFXY1ogY X-Received: by 2002:a05:6402:336:: with SMTP id q22mr27243520edw.53.1633452636111; Tue, 05 Oct 2021 09:50:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633452636; cv=none; d=google.com; s=arc-20160816; b=f1bzuH3lBeTz1uE6xVBakjQUrjVQr+l8Pecod1PoGaUVI9uMiVClgENTAn9Y3eyxOE oxn65NQUG+xAHb4+oubr5r0sWe0/FbUAcaig4kJMWd/QIf0TTkYXPz0XQM8rvDzraYL0 UMX6CetST1JWX31FHjvGDUpfCedphBa3NBgDfaIY+QVLGO3dBSR8jSTqR9dbVg5amLbd sSuv+7jcifAP0V5e7MCzDkpaoY9KJ7WNxQ0UowLgxxx1otHgT0qIFgCh0NJXp5dgYs9Z NSUfruzm6Fu36CMGvFWjP3IhvctAyum4BI3POEkbSG0l6ggYGDjfpf/WCPmNn7J50D+A thjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:references :cc:to:from:content-language:subject:user-agent:mime-version:date :message-id:dkim-signature; bh=quBU1mR1RrqkwyVnquG48EtBwZjzQ1thh2lG+82YiH0=; b=xOJtBshdMyyYt2S475sNkl77g8yTsvKe0/NKfivsQaG9/v/ctZeK1JhhxWxLaOzyxL EZjOBzl/7ON5Y2On7O2mT0GPTllLrpNBNgUmV/ha10kafAloAuRigaaO7Sn4gw5YqfxU D7eSMXFRousOE9KUOpzEEDUCt9sS/hxPRQfCv/Jlo1kKqk0e39nfurr5q5xd8TQQNVeo mUvcU+SjxR+NIhs1zf2yHA2nkKanNCtQ64zXSirt2tWkXxE/SJvw4s1CQ2Zwj2hblysV Aljdww7NInW6ST4C3qdSMAZr99Lcl36IL4RTLYACuHGXMlkflJDRLHggL3bfHmWtRAlU x23A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@paragon-software.com header.s=mail header.b=XpJ7aZ2W; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=paragon-software.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b88si2051499edf.243.2021.10.05.09.50.11; Tue, 05 Oct 2021 09:50:36 -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=@paragon-software.com header.s=mail header.b=XpJ7aZ2W; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=paragon-software.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236446AbhJEQtp (ORCPT + 99 others); Tue, 5 Oct 2021 12:49:45 -0400 Received: from relaydlg-01.paragon-software.com ([81.5.88.159]:49202 "EHLO relaydlg-01.paragon-software.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236402AbhJEQto (ORCPT ); Tue, 5 Oct 2021 12:49:44 -0400 Received: from dlg2.mail.paragon-software.com (vdlg-exch-02.paragon-software.com [172.30.1.105]) by relaydlg-01.paragon-software.com (Postfix) with ESMTPS id B382D81FEE; Tue, 5 Oct 2021 19:47:52 +0300 (MSK) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=paragon-software.com; s=mail; t=1633452472; bh=quBU1mR1RrqkwyVnquG48EtBwZjzQ1thh2lG+82YiH0=; h=Date:Subject:From:To:CC:References:In-Reply-To; b=XpJ7aZ2WLz9rvu4Ut+a7ng6nhJ26TDt2nosis2qux4cZJh5BN0JKC94JrVNsbe1th ypJRC0qH9CTqLqlYBDUc5l1YoQ8ylR8LWGOJ/QslkddNs45ZD6y0hN2/II2pFX0mhl DZLRsoiiwcbCCJBm52PDbRYIi9GF2bvRaL30ZGlg= Received: from [192.168.211.181] (192.168.211.181) by vdlg-exch-02.paragon-software.com (172.30.1.105) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.2; Tue, 5 Oct 2021 19:47:52 +0300 Message-ID: <2dc232a1-effd-0c06-6b6a-7e4019bb9ace@paragon-software.com> Date: Tue, 5 Oct 2021 19:47:51 +0300 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.1.2 Subject: [PATCH 3/5] fs/ntfs3: Refactor ntfs_create_inode Content-Language: en-US From: Konstantin Komarov To: CC: , References: <98a166e4-f894-8bff-9479-05ef5435f1ed@paragon-software.com> In-Reply-To: <98a166e4-f894-8bff-9479-05ef5435f1ed@paragon-software.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: [192.168.211.181] X-ClientProxiedBy: vobn-exch-01.paragon-software.com (172.30.72.13) To vdlg-exch-02.paragon-software.com (172.30.1.105) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Set size for symlink, so we don't need to calculate it on the fly. Signed-off-by: Konstantin Komarov --- fs/ntfs3/inode.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/fs/ntfs3/inode.c b/fs/ntfs3/inode.c index d618b0573533..bdebbbd53e76 100644 --- a/fs/ntfs3/inode.c +++ b/fs/ntfs3/inode.c @@ -1488,7 +1488,10 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns, asize = ALIGN(SIZEOF_RESIDENT + nsize, 8); t16 = PtrOffset(rec, attr); - /* 0x78 - the size of EA + EAINFO to store WSL */ + /* + * Below function 'ntfs_save_wsl_perm' requires 0x78 bytes. + * It is good idea to keep extened attributes resident. + */ if (asize + t16 + 0x78 + 8 > sbi->record_size) { CLST alen; CLST clst = bytes_to_cluster(sbi, nsize); @@ -1523,14 +1526,14 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns, } asize = SIZEOF_NONRESIDENT + ALIGN(err, 8); - inode->i_size = nsize; } else { attr->res.data_off = SIZEOF_RESIDENT_LE; attr->res.data_size = cpu_to_le32(nsize); memcpy(Add2Ptr(attr, SIZEOF_RESIDENT), rp, nsize); - inode->i_size = nsize; nsize = 0; } + /* Size of symlink equals the length of input string. */ + inode->i_size = size; attr->size = cpu_to_le32(asize); @@ -1567,6 +1570,8 @@ struct inode *ntfs_create_inode(struct user_namespace *mnt_userns, inode->i_op = &ntfs_link_inode_operations; inode->i_fop = NULL; inode->i_mapping->a_ops = &ntfs_aops; + inode->i_size = size; + inode_nohighmem(inode); } else if (S_ISREG(mode)) { inode->i_op = &ntfs_file_inode_operations; inode->i_fop = &ntfs_file_operations; -- 2.33.0