Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1069142pxb; Tue, 19 Oct 2021 20:06:07 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyCbSoZxUoSklFfFjRVycewbppF7Jabf+pbvHjxZInuolEOW8SWqpyCw4dxazs6N3Ep++M+ X-Received: by 2002:a05:6402:32c:: with SMTP id q12mr55856979edw.378.1634699167104; Tue, 19 Oct 2021 20:06:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634699167; cv=none; d=google.com; s=arc-20160816; b=YxQ3fsD7Y7Fe1Wc52wisu01opeNTwKqwwcEga67N2OSlfXX+UIOWzW8uWaKU9f3qlP e/gXFftStp1XyUGTGgIhL4CmzkwhJrwzoiATUERSqCI7RjwH6dZqJS+oM0ayLF8unSY1 7ityCppPO0abnZYTn8hWiJ58+ZaG3m1lL+x0vS8ZKLv0bwbbv3HLVxEshq/1kp2/H3Tg 0OqA+9yBX1xNJDbAvUEA5C2RASwm3bFHr3AHNxTxKdFzjoCr37qY3qdflWcZEJoj5cpZ yx6js07KFk/o7HUPUhZNQFxAY0jAVldquEPb1JCiySv3tWGgF2QRqXpz8gMFkMCiJ8sn KCiw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=zlx0L5jstw2PpQLZHcSmG+QWur7xNj2LQUL+KebkNNQ=; b=V94DJYsbPD5/uLUUNgZ7CNKZAjLP2i5G2JxpK9jYbs4oYjoc+dgrS+lyiycPNfhqQR ApIfFdSbxAxXTMxQh8EO32Z4hMd9BezFcXDfVfXChFZAQjhyprCbThoT/T6EA32p1FJg wxg5UU5BeHrC6wS8Hqlwahwdv442WCq7Qo/Xlv3Fo7vdMPKERmP0pZMHl3LpL1cSmUaE 88JcqO/xWRDo8fWGWAp7DAtXiHPb7AATs20/lPY63vXawS6QhBKMJakn9Q6ZhKc2wBrj ehXuIzuq3YAV5ReJA1QKCsOw+CjmvjnZy1V4G0xxZYdX7fk21cyzveQR54dtttWk3tRy suEg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-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 t19si1803195edd.74.2021.10.19.20.05.43; Tue, 19 Oct 2021 20:06:07 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-ext4-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-ext4-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-ext4-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 S229741AbhJTDHp (ORCPT + 99 others); Tue, 19 Oct 2021 23:07:45 -0400 Received: from szxga01-in.huawei.com ([45.249.212.187]:29915 "EHLO szxga01-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229657AbhJTDHo (ORCPT ); Tue, 19 Oct 2021 23:07:44 -0400 Received: from dggeme754-chm.china.huawei.com (unknown [172.30.72.55]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4HYwNS097CzbnBN; Wed, 20 Oct 2021 11:00:56 +0800 (CST) Received: from huawei.com (10.175.127.227) by dggeme754-chm.china.huawei.com (10.3.19.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.15; Wed, 20 Oct 2021 11:05:28 +0800 From: Ye Bin To: , , CC: , , Ye Bin Subject: [PATCH -next v5 1/3] ext4: compare to local seq and nodename when check conflict Date: Wed, 20 Oct 2021 11:18:00 +0800 Message-ID: <20211020031802.2312022-2-yebin10@huawei.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211020031802.2312022-1-yebin10@huawei.com> References: <20211020031802.2312022-1-yebin10@huawei.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-Originating-IP: [10.175.127.227] X-ClientProxiedBy: dggems703-chm.china.huawei.com (10.3.19.180) To dggeme754-chm.china.huawei.com (10.3.19.100) X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org As mmp and check_mmp is point to the same data, so there will never detect conflict. To solve this issue just compare to local data. Signed-off-by: Ye Bin Reviewed-by: Jan Kara --- fs/ext4/ext4.h | 5 ++++- fs/ext4/mmp.c | 9 +++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h index 404dd50856e5..9a487a558787 100644 --- a/fs/ext4/ext4.h +++ b/fs/ext4/ext4.h @@ -2601,6 +2601,8 @@ struct ext4_features { #define EXT4_MMP_SEQ_FSCK 0xE24D4D50U /* mmp_seq value when being fscked */ #define EXT4_MMP_SEQ_MAX 0xE24D4D4FU /* maximum valid mmp_seq value */ +#define EXT4_MMP_NODENAME_LEN 64 /* mmp_nodename length */ + struct mmp_struct { __le32 mmp_magic; /* Magic number for MMP */ __le32 mmp_seq; /* Sequence no. updated periodically */ @@ -2610,7 +2612,8 @@ struct mmp_struct { * purposes and do not affect the correctness of the algorithm */ __le64 mmp_time; /* Time last updated */ - char mmp_nodename[64]; /* Node which last updated MMP block */ + /* Node which last updated MMP block */ + char mmp_nodename[EXT4_MMP_NODENAME_LEN]; char mmp_bdevname[32]; /* Bdev which last updated MMP block */ /* diff --git a/fs/ext4/mmp.c b/fs/ext4/mmp.c index cebea4270817..97d5a8136eb2 100644 --- a/fs/ext4/mmp.c +++ b/fs/ext4/mmp.c @@ -138,6 +138,7 @@ static int kmmpd(void *data) unsigned mmp_check_interval; unsigned long last_update_time; unsigned long diff; + char nodename[EXT4_MMP_NODENAME_LEN]; int retval = 0; mmp_block = le64_to_cpu(es->s_mmp_block); @@ -153,8 +154,8 @@ static int kmmpd(void *data) BUILD_BUG_ON(sizeof(mmp->mmp_bdevname) < BDEVNAME_SIZE); bdevname(bh->b_bdev, mmp->mmp_bdevname); - memcpy(mmp->mmp_nodename, init_utsname()->nodename, - sizeof(mmp->mmp_nodename)); + memcpy(nodename, init_utsname()->nodename, sizeof(nodename)); + memcpy(mmp->mmp_nodename, nodename, sizeof(mmp->mmp_nodename)); while (!kthread_should_stop() && !sb_rdonly(sb)) { if (!ext4_has_feature_mmp(sb)) { @@ -206,8 +207,8 @@ static int kmmpd(void *data) } mmp_check = (struct mmp_struct *)(bh_check->b_data); - if (mmp->mmp_seq != mmp_check->mmp_seq || - memcmp(mmp->mmp_nodename, mmp_check->mmp_nodename, + if (seq != mmp_check->mmp_seq || + memcmp(nodename, mmp_check->mmp_nodename, sizeof(mmp->mmp_nodename))) { dump_mmp_msg(sb, mmp_check, "Error while updating MMP info. " -- 2.31.1