What is my readl device id - BTRFS?

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

Hello,
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:
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"
output:
/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:
---------------------
Code:
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
0:33

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  
Old 02-15-2017
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.


Thanks,
Robin
# 3  
Old 02-16-2017
This is an appliance that has its own "kernel".
Code:
Linux nas-B9-43-AA 4.1.21.x86_64.1

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

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

Hi,
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
Login or Register to Ask a Question

Previous Thread | Next Thread

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
Login or Register to Ask a Question