From: Nikolay Borisov <nborisov@suse.com>
To: Ilan Schwarts <ilan84@gmail.com>, Qu Wenruo <quwenruo.btrfs@gmx.com>
Cc: linux-btrfs <linux-btrfs@vger.kernel.org>
Subject: Re: Fwd: Fwd: Question regarding to Btrfs patchwork /2831525
Date: Sun, 14 Jan 2018 12:04:45 +0200 [thread overview]
Message-ID: <60b03797-ff8b-0e51-f72c-66e0ada596b7@suse.com> (raw)
In-Reply-To: <CAJUuSvFCNmCiXwPdswsBdofs2UmtuTJA-xTnhvPKwu6OT9+9Zw@mail.gmail.com>
On 14.01.2018 12:02, Ilan Schwarts wrote:
> First of all, Thanks for response !
> So if i have 2 btrfs file system on the same machine (not your
> everyday scenario, i know)
> Lets say a file is created on device A, the file gets inode number X
> is it possible on device B to have inode number X also ?
> or each device has its own Inode number range ?
Of course it is possible. Inodes are guaranteed to be unique only across
filesystem instances. In your case you are going to have 2 fs instances.
>
> I need to create unique identifier for a file, I need to understand if
> the identifier would be: GlobalFSID_DeviceID_Inode or DeviceID_Inode
> is enough.
>
> Thanks
>
>
>
>
>
> On Sun, Jan 14, 2018 at 11:13 AM, Qu Wenruo <quwenruo.btrfs@gmx.com> wrote:
>>
>>
>> On 2018年01月14日 16:33, Ilan Schwarts wrote:
>>> Hello btrfs developers/users,
>>>
>>> I was wondering regarding to fetching the correct fsid on btrfs from
>>> the context of a kernel module.
>>
>> There are two IDs for btrfs. (in fact more, but you properly won't need
>> the extra ids)
>>
>> FSID: Global one, one fs one FSID.
>> Device ID: Bonded to device, each device will have one.
>>
>> So in case of 2 devices btrfs, each device will has its own device id,
>> while both of the devices have the same fsid.
>>
>> And I think you're talking about the global fsid instead of device id.
>>
>>> if on suse11.3 kernel 3.0.101-0.47.71-default in order to get fsid, I
>>> do the following:
>>> convert inode struct to btrfs_inode struct (use btrfsInode =
>>> BTRFS_I(inode)), then from btrfs_inode struct i go to root field, and
>>> from root i take anon_dev or anon_super.s_dev.
>>> struct btrfs_inode *btrfsInode;
>>> btrfsInode = BTRFS_I(inode);
>>> btrfsInode->root->anon_super.s_dev or
>>> btrfsInode->root->anon_dev - depend on kernel.
>>
>> The most directly method would be:
>>
>> btrfs_inode->root->fs_info->fsid.
>> (For newer kernel, as I'm not familiar with older kernels)
>>
>> Or from superblock:
>> btrfs_inode->root->fs_info->super_copy->fsid.
>> (The most reliable one, no matter which kernel version you're using, as
>> long as the super block format didn't change)
>>
>> For device id, it's not that commonly used unless you're dealing with
>> chunk mapping, so I'm assuming you're referring to fsid.
>>
>> Thanks,
>> Qu
>>
>>>
>>> In kernel 3.12.28-4-default in order to get the fsid, i need to go
>>> to the inode -> superblock -> device id (inode->i_sb->s_dev)
>>>
>>> Why is this ? and is there a proper/an official way to get it ?
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at http://vger.kernel.org/majordomo-info.html
>>>
>>
>
>
>
next prev parent reply other threads:[~2018-01-14 10:04 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CAJUuSvFtEG=CZPjhACCvp8hVA83xFuFpJcScx4xAj4tPkW8uCw@mail.gmail.com>
[not found] ` <CAJUuSvHo6N+esmjX8+Ly+kV+Nm1bUB=f85Mv=_xoyiLaUFA-ug@mail.gmail.com>
[not found] ` <20170301180817.GJ4662@suse.cz>
[not found] ` <CAJUuSvHpP-GV50P9dDJxX-WyzqtoHZLiuOVdLTMvR8k9EL_08w@mail.gmail.com>
2018-01-14 8:33 ` Fwd: Fwd: Question regarding to Btrfs patchwork /2831525 Ilan Schwarts
2018-01-14 9:12 ` Qu Wenruo
2018-01-14 9:13 ` Qu Wenruo
2018-01-14 10:02 ` Ilan Schwarts
2018-01-14 10:04 ` Nikolay Borisov [this message]
[not found] ` <CAJUuSvGcx3oMMmj=goXurrMRsYpmxjSA8aPmGvrgMTjYbSGz+A@mail.gmail.com>
2018-01-14 10:13 ` Ilan Schwarts
2018-01-14 10:22 ` Qu Wenruo
2018-01-14 10:32 ` Ilan Schwarts
2018-01-14 10:40 ` Hugo Mills
2018-01-14 10:44 ` Qu Wenruo
2018-01-15 9:05 ` Ilan Schwarts
2018-01-15 9:59 ` Qu Wenruo
2018-01-15 9:24 ` Ilan Schwarts
2018-01-15 10:01 ` Qu Wenruo
2018-01-15 12:08 ` Ilan Schwarts
2018-01-15 12:13 ` Qu Wenruo
2018-01-17 14:36 ` Ilan Schwarts
2018-01-18 5:12 ` Qu Wenruo
[not found] ` <CAJUuSvFrGLYbTfLQjKb1Tcr_TRn9VAX-qmnHaVK4TRR5jMN=wA@mail.gmail.com>
2018-01-18 5:49 ` Qu Wenruo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=60b03797-ff8b-0e51-f72c-66e0ada596b7@suse.com \
--to=nborisov@suse.com \
--cc=ilan84@gmail.com \
--cc=linux-btrfs@vger.kernel.org \
--cc=quwenruo.btrfs@gmx.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).