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. Or from superblock: btrfs_inode->root->fs_info->super_copy->fsid. 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 majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html >
signature.asc
Description: OpenPGP digital signature