Visit The New, Modern Unix Linux Community

What is my readl device id - BTRFS?

Thread Tools Search this Thread
Special Forums Hardware What is my readl device id - BTRFS?
# 1  
What is my readl device id - BTRFS?

I am monitoring file operations events (VFS).
I have a problem with BTRFS filesystem. BTRFS is using subvolumes. All highest hierarchy directories in btrfs has the same inode (256/512)

Short story:
When I receive file operation event, I receive the path and then resolve it to inode.
By resolving I mean: given a path, I get its dentry (user_path() call), from dentry i pull: dEntry->d_inode->i_ino
The problem is I receive same inode for different directories on the same Device.
I guess, BTRFS has some sort of abstraction layer, that create a "virtual" inode number (the identical ones are virtual) - there is no way for two identical inodes on same device id.
Proof for device id issue:
From kernel I receive device id 29:
Code: device id resolving: for a given path (/home) -> Get the dentry with user_path, then dEntry->d_inode->i_sb->s_dev
OR I run command: "grep btrfs /proc/self/mountinfo | less"
/proc/self/mountinfo return inode 29 also: 34 18 0:29 /home /home rw,noatime,nodiratime shared:19 - btrfs /dev/md127 rw,nospace_cache,subvolid=257,subvol=/home

From user space:
root@nas-B9-43-AA:/# stat /home
  File: `/home'
  Size: 90              Blocks: 0          IO Block: 4096   directory
Device: 21h/33d Inode: 256         Links: 1

root@nas-B9-43-AA:/# mountpoint -d /home

So I get 29 and 33 as device id.
Lets call device id 29 "actual id"", and 33 is "virtual id".
Is there a way to obtain the actual id from kernel code ? I am looking for replacement to dEntry->d_inode->i_sb->s_dev.. to obtain the same id as we receive from user mode.

Moderator's Comments:
Mod Comment Please wrap all code, data, files, input & output/errors in CODE tags.
It make it far easier to read and preservers spaces for indenting or fixed width data.
I have guessed what to add in. Perhaps you could edit this post and confirm what it should be.

Last edited by rbatte1; 02-15-2017 at 10:55 AM.. Reason: Added CODE tags
# 2  
Before we get too far in to this, can you confirm the OS & version you are running? The output from uname -a would be really useful. Please paste it into your message in CODE tags.

# 3  
This is an appliance that has its own "kernel".
Linux nas-B9-43-AA 4.1.21.x86_64.1

but under the hood it's:
root@nas-B9-43-AA:/# cat /etc/*release
NAME="Debian GNU/Linux"
VERSION="7 (wheezy)"

---------- Post updated 02-16-17 at 07:58 AM ---------- Previous update was 02-15-17 at 09:58 AM ----------

Instead of going to the dentry - inode - superblock - device id.
I get the device Id using the getattr(..) on the dentry.

My solution is taken from the Suse patch in the subject (after alot of google digging).

btrfs: stat(2) and /proc/pid/maps returns different devices - Patchwork

Last edited by rbatte1; 02-15-2017 at 11:06 AM.. Reason: Added CODE tags and corrected spelling

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Computers #880
Difficulty: Medium
SCADA systems that tie together decentralized facilities such as power, oil, gas pipelines, water distribution and wastewater collection systems were designed to be open, robust, easily operated and repaired, and highly secure.
True or False?

5 More Discussions You Might Find Interesting

1. HP-UX

Failed to open tape device /dev/rmt/0mn:Device busy (errno = 16)

Hi, Unable to make tape backup, please help. /opt/ignite/bin/make_tape_recovery -a /dev/rmt/?mn -I -v -m tar -x inc_entire=vg00 * Creating local directories for configuration files and archive. ======= 04/25/16 16:28:08 IST Started /opt/ignite/bin/make_tape_recovery. (Mon... (4 Replies)
Discussion started by: anuragr
4 Replies

2. Red Hat

Unable To Activate Ethernet Network Device in RHEL 5.5 - e100 device eth0 does not seem to be presen

Hi All, Could anyone please help to resolve the below problem. I installed RHEL5.5 in my desktop.But when i try to activate the ethernet connection then it gives me the error. I spent 2 days for the above and go through with several suggestion found by googling. But no luck. ... (0 Replies)
Discussion started by: Tanmoy
0 Replies

3. Linux

Tutorial for btrfs

By any chance anyone knows of any tutorials available for btrfs? I am having a difficult time finding one and I thought maybe someone had a reference to one already... :rolleyes: (0 Replies)
Discussion started by: EssenceNY
0 Replies

4. Solaris

Migrating non DID device in a metaset to DID device

One of my team colleague mistakenly added non DID device to a metaset in a cluster node and inturn it is again added to concat . In that metaset all devices are DID devices except only one . is it possible to convert this non DID device in metaset to DID device without recreating the whole... (0 Replies)
Discussion started by: sekarsamy
0 Replies

5. AIX

How to find all device on p570 when need do device firmware upgrade?

I need upgrade firmware for the device of p570, when I go to IBM FIX download website, there are a lot of device of p570 listed. How can I know what device I have on my p570? (4 Replies)
Discussion started by: rainbow_bean
4 Replies

Featured Tech Videos