Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp3767902pxj; Tue, 15 Jun 2021 08:13:51 -0700 (PDT) X-Google-Smtp-Source: ABdhPJww6zE4qGj4WzpalongoyzKJTkMlPjH0qmazj0zaIF2H16q/cHdMiaz3QoQmTQoNBNSNLSZ X-Received: by 2002:a05:6638:60b:: with SMTP id g11mr3663979jar.88.1623770031373; Tue, 15 Jun 2021 08:13:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623770031; cv=none; d=google.com; s=arc-20160816; b=V1ri6J3sGKCscI8G044onsiBkFDajHoSr2qKdAsZSyDTEjvXbzjP0J+yFPPg7B64Ik eAqQP2IPcmt/zYBfD13s+nqtI/sn9+J9hnSZTq7eJT1LIMcik05UgUoLNPrkE8N+TTgO r1d2nzUgdcHwQ0DreMG3qYO7t99XgOSuSExgjrdLo1CCLZ1j4QGBPJatlNno/iNhfVrh s4MQV3QkZ0aMCNaRPX5TZfSLhugg++mqYbbixQqmiSTgt8H4hrMzhGlRO3V5TwK7NqLP 3tlAyXQJ9aFcX+UpPzLdYC6k97z8pRFd3TcjmgvmT1OuUzdnpSJbnsx5o3BW2PdFrw5R lqXg== 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 :message-id:references:in-reply-to:cc:subject:to:from:date; bh=KKfCD0AXmcoHo0sqTxhgUsgJyy9/jEPW4IsGIpdItcE=; b=LO9wSeB6MRlmvafnIyXHEBrzDtxHBuCTjL9mnz7hhWcxB8D/f7W/u97aUCBvZWEpvO 38Y7c6PkA8uOXfI2+kqZZTimuvhhw2vpIM/QLIx4KYMz+SYhD0JOPdevP0h5WhxtJEmY y33XVEBD3ot8CwrH/x00xpTX+3bknHwEquDK6KOzfyYryxr6peq6HetdFFfGueIPzvrM eEKOu8IhQYmfFvNtx2j+684ufQPtoqOj6kl6dohzDKp7cw6NrNIBLubUO3dJlClOkiFK m3Jp9WbtDdn7VQ6JT/dJmEKu6jj/YbmauXR2/YolrdlSJ9xDzh0fAXzKO5rz8bsubeF7 xKmg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id a16si20985286ilr.155.2021.06.15.08.13.38; Tue, 15 Jun 2021 08:13:51 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-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-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230076AbhFOPP0 (ORCPT + 99 others); Tue, 15 Jun 2021 11:15:26 -0400 Received: from out20-15.mail.aliyun.com ([115.124.20.15]:53335 "EHLO out20-15.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230314AbhFOPP0 (ORCPT ); Tue, 15 Jun 2021 11:15:26 -0400 X-Alimail-AntiSpam: AC=CONTINUE;BC=0.0461472|-1;CH=green;DM=|CONTINUE|false|;DS=CONTINUE|ham_system_inform|0.235363-0.00113347-0.763503;FP=0|0|0|0|0|-1|-1|-1;HT=ay29a033018047194;MF=wangyugui@e16-tech.com;NM=1;PH=DS;RN=2;RT=2;SR=0;TI=SMTPD_---.KSiKe4N_1623769997; Received: from 192.168.2.112(mailfrom:wangyugui@e16-tech.com fp:SMTPD_---.KSiKe4N_1623769997) by smtp.aliyun-inc.com(10.147.41.187); Tue, 15 Jun 2021 23:13:18 +0800 Date: Tue, 15 Jun 2021 23:13:18 +0800 From: Wang Yugui To: "NeilBrown" Subject: Re: any idea about auto export multiple btrfs snapshots? Cc: linux-nfs@vger.kernel.org In-Reply-To: <162371103543.23575.13662722966178222587@noble.neil.brown.name> References: <20210613115313.BC59.409509F4@e16-tech.com> <162371103543.23575.13662722966178222587@noble.neil.brown.name> Message-Id: <20210615231318.F40F.409509F4@e16-tech.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Mailer: Becky! ver. 2.75.04 [en] Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Hi, NeilBrown > On Sun, 13 Jun 2021, Wang Yugui wrote: > > Hi, > > > > Any idea about auto export multiple btrfs snapshots? > > > > One related patch is yet not merged to nfs-utils 2.5.3. > > From: "NeilBrown" > > Subject: [PATCH/RFC v2 nfs-utils] Fix NFSv4 export of tmpfs filesystems. > > > > In this patch, an UUID is auto generated when a tmpfs have no UUID. > > > > for btrfs, multiple subvolume snapshot have the same filesystem UUID. > > Could we generate an UUID for btrfs subvol with 'filesystem UUID' + 'subvol ID'? > > You really need to ask this question of btrfs developers. 'mountd' > already has a special-case exception for btrfs, to prefer the uuid > provided by statfs64() rather than the uuid extracted from the block > device. It would be quite easy to add another exception. > But it would only be reasonable to do that if the btrfs team told us how > that wanted us to generate a UUID for a given mount point, and promised > that would always provide a unique stable result. > This is completely separate from the tmpfs patch you identified. Thanks a lot for the replay. Now btrfs statfs64() return 8 byte unique/stable result. It is based on two parts. 1) 16 byte blkid of file system. this is uniq/stable between btrfs filesystems. 2) 8 byte of btrfs sub volume objectid. this is uniq/stable inside a btrfs filesystem. the code of linux/fs/btrfs static int btrfs_statfs(struct dentry *dentry, struct kstatfs *buf) /* We treat it as constant endianness (it doesn't matter _which_) because we want the fsid to come out the same whether mounted on a big-endian or little-endian host */ buf->f_fsid.val[0] = be32_to_cpu(fsid[0]) ^ be32_to_cpu(fsid[2]); buf->f_fsid.val[1] = be32_to_cpu(fsid[1]) ^ be32_to_cpu(fsid[3]); /* Mask in the root object ID too, to disambiguate subvols */ buf->f_fsid.val[0] ^= BTRFS_I(d_inode(dentry))->root->root_key.objectid >> 32; buf->f_fsid.val[1] ^= BTRFS_I(d_inode(dentry))->root->root_key.objectid; for nfs, we need a 16 byte UUID now. The best way I though: 16 byte blkid , math add 8 byte btrfs sub volume objectid. but there is yet no a simple/easy way to get the raw value of 'btrfs sub volume objectid'. A simple but good enough way: 1) first 8 byte copy from blkid 2) second 8 byte copy from btrfs_statfs() the uniq/stable of multiple subvolume inside a btrfs filesystem is kept. Best Regards Wang Yugui (wangyugui@e16-tech.com) 2021/06/15