Received: by 2002:a05:6a10:9afc:0:0:0:0 with SMTP id t28csp1341602pxm; Thu, 24 Feb 2022 00:55:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJzkOqjreVMiXW3x1Mn7Vl/MdF2eCXCjvqYb+YAkCsEtTNd/L8d7sdlHvoMEjxFS0PFLGi4r X-Received: by 2002:a17:907:f81:b0:6ce:7247:557d with SMTP id kb1-20020a1709070f8100b006ce7247557dmr1475734ejc.308.1645692910183; Thu, 24 Feb 2022 00:55:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645692910; cv=none; d=google.com; s=arc-20160816; b=IHGo/BLPEyL9cyCO0ft7Qr0cr0oBkl0tOyArB1Gk6p/P8x/3I52W3T+tFrKoU3DWBw AQN0jp0vK+mGugnGGr+SS5eAKXHmEWGGv4cPkC/aEF/cVjzmSaFB/0esKTZtzz/Wgnph 0X4hTcSJIDrXqy2gEeJvlU2Q33nHngO5FmwWrMBo9Zkoy9hFB3xPwHs1SAOInlkXj35k zyAJotzXQG72UY8uuwSvV5j/ftePS8yrpzqG9fKW1WbKDw8j5c9oJsh06CeT6LbxXUWZ iGav8S3Juz74P2HdLCujLCn7zDP9d+lzTiSFcn11MV+7p91utWBrhhrDDFCIxV5NAEVd YgsA== 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:subject:user-agent:mime-version:date:message-id; bh=I7drJWW4PjY/rDn7benODtuS5Mk/XIG7xIaIuqmWhiU=; b=l6MHXe37qg6/lr5fxkUhJfEKPIlBETK8a50D87ExdDdPsssnVh161ga1B/lvLAgD5w YwgGdA4ZuauLtdTYjaHjCpadJnnkQ74cTQiOX8jrgKqz9SmcTlOc27JPPwU3/Bqsyp4B KqL04JNmRrs/zn9TzAqngRcfBwn1/0rk0CYh6UZr5c5r99ghTkhbEe75aqO8hIzOqzMt kLGpK67yXnoOzW+Ks3IpnwMzqC1sXM7Dzi49x8BPMH33AkUJPPv+UKXZRaJVHsHkUooZ sPBJZZ04Il9keFUNfnYLP9+vbeat9E+s6jYukxxD5ZFK26OFzA+YfQn2HpH+WUMak0Ww ARZQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id hq12si1357652ejc.694.2022.02.24.00.54.35; Thu, 24 Feb 2022 00:55:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-ext4-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-ext4-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231881AbiBXI3s (ORCPT + 99 others); Thu, 24 Feb 2022 03:29:48 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36876 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232002AbiBXI3o (ORCPT ); Thu, 24 Feb 2022 03:29:44 -0500 Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9E5A627791A for ; Thu, 24 Feb 2022 00:28:54 -0800 (PST) Received: from dggpeml500020.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4K45Y04K3Gzbbjh; Thu, 24 Feb 2022 16:24:20 +0800 (CST) Received: from dggpeml100016.china.huawei.com (7.185.36.216) by dggpeml500020.china.huawei.com (7.185.36.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Thu, 24 Feb 2022 16:28:52 +0800 Received: from [10.174.176.102] (10.174.176.102) by dggpeml100016.china.huawei.com (7.185.36.216) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Thu, 24 Feb 2022 16:28:52 +0800 Message-ID: <43391b1d-d58c-f954-e861-1176eac48443@huawei.com> Date: Thu, 24 Feb 2022 16:28:52 +0800 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101 Thunderbird/91.3.2 Subject: Re: [PATCH v2] resize2fs: resize2fs disk hardlinks will be error From: zhanchengbin To: Theodore Ts'o CC: , , linfeilong References: <9dcadf7a-b12a-c977-2de2-222e20f0cebe@huawei.com> In-Reply-To: <9dcadf7a-b12a-c977-2de2-222e20f0cebe@huawei.com> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 8bit X-Originating-IP: [10.174.176.102] X-ClientProxiedBy: dggpeml100026.china.huawei.com (7.185.36.103) To dggpeml100016.china.huawei.com (7.185.36.216) X-CFilter-Loop: Reflected X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-ext4@vger.kernel.org friendly ping.. 在 2022/1/4 22:23, zhanchengbin 写道: > Resize2fs disk hardlinks which mounting after the same name as tmpfs >  filesystem it will be error. The items in /proc/mounts are traversed, > when you get to tmpfs,file!=mnt->mnt_fsname, therefore, the > stat(mnt->mnt_fsname, &st_buf) branch is used, however, the values of >  file_rdev and st_buf.st_rdev are the same. As a result, the system > mistakenly considers that disk is mounted to /root/tmp. As a result > , resize2fs fails. > > example: > dev_name="/dev/sdc" (ps: a disk in you self) > mkdir /root/tmp > mkdir /root/mnt > mkfs.ext4 -F -b 1024 -E "resize=10000000" "${dev_name}" 32768 > mount -t tmpfs "${dev_name}" /root/tmp > mount "${dev_name}" /root/mnt > ln "${dev_name}" "${dev_name}"-ln > resize2fs "${dev_name}"-ln 6G > > Signed-off-by: zhanchengbin > Signed-off-by: Zhiqiang Liu > > --- >  lib/ext2fs/ismounted.c | 9 +++++++-- >  1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/lib/ext2fs/ismounted.c b/lib/ext2fs/ismounted.c > index aee7d726..463a82a6 100644 > --- a/lib/ext2fs/ismounted.c > +++ b/lib/ext2fs/ismounted.c > @@ -98,6 +98,7 @@ static errcode_t check_mntent_file(const char > *mtab_file, const char *file, >  { >      struct mntent     *mnt; >      struct stat    st_buf; > +    struct stat    dir_st_buf; >      errcode_t    retval = 0; >      dev_t        file_dev=0, file_rdev=0; >      ino_t        file_ino=0; > @@ -144,8 +145,12 @@ static errcode_t check_mntent_file(const char > *mtab_file, const char *file, >          if (stat(mnt->mnt_fsname, &st_buf) == 0) { >              if (ext2fsP_is_disk_device(st_buf.st_mode)) { >  #ifndef __GNU__ > -                if (file_rdev && (file_rdev == st_buf.st_rdev)) > -                    break; > +                if (file_rdev && (file_rdev == st_buf.st_rdev)) { > +                    if (stat(mnt->mnt_dir, &dir_st_buf) != 0) > +                        continue; > +                    if (file_rdev == dir_st_buf.st_dev) > +                        break; > +                } >                  if (check_loop_mounted(mnt->mnt_fsname, >                          st_buf.st_rdev, file_dev, >                          file_ino) == 1)