From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E3AAA808; Mon, 25 Dec 2023 02:33:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=huawei.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=huawei.com Received: from mail.maildlp.com (unknown [172.19.163.252]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4Sz24571ttzvSYc; Mon, 25 Dec 2023 10:32:21 +0800 (CST) Received: from dggpeml500021.china.huawei.com (unknown [7.185.36.21]) by mail.maildlp.com (Postfix) with ESMTPS id 6D31B18005E; Mon, 25 Dec 2023 10:33:21 +0800 (CST) Received: from [10.174.177.174] (10.174.177.174) by dggpeml500021.china.huawei.com (7.185.36.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 25 Dec 2023 10:33:20 +0800 Message-ID: Date: Mon, 25 Dec 2023 10:33:20 +0800 Precedence: bulk X-Mailing-List: linux-ext4@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.1.2 Subject: Re: [PATCH] ext4: fix WARNING in lock_two_nondirectories Content-Language: en-US To: Al Viro CC: Edward Adam Davis , , , , , , , , yangerkun , Baokun Li References: <000000000000e17185060c8caaad@google.com> <20231225020754.GE1674809@ZenIV> From: Baokun Li In-Reply-To: <20231225020754.GE1674809@ZenIV> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggpeml500021.china.huawei.com (7.185.36.21) On 2023/12/25 10:07, Al Viro wrote: > On Mon, Dec 25, 2023 at 09:38:51AM +0800, Baokun Li wrote: > >> In my opinion, it doesn't make sense to call lock_two_nondirectories() >> here to determine if the inode is a regular file or not, since the logic >> for dealing with non-regular files comes after the locking, so calling >> lock_two_inodes() directly here will suffice. > No. First of all, lock_two_inodes() is a mistake that is going to be > removed in the coming cycle. Okay, I didn't know about this. > What's more, why the hell do you need to lock *anything* to check the > inode type? Inode type never changes, period. > > Just take that check prior to lock_two_nondirectories() and be done with > that. Since in the current logic we update the boot loader file via swap_inode_boot_loader(), however the boot loader inode on disk may be uninitialized and may be garbage data, so we allow to get a bad boot loader inode and then initialize it and swap it with the boot loader file to be set. When reinitializing the bad boot loader inode, something like an inode type conversion may occur. Cheers, Baokun