Thank you Valids. That worked!
For others who may look for this info:
If you have access to the struct file *
then you could obtain this info with the following
condition check:
============================================
condition check:
============================================
struct file *filp = <blah blah>;
if (filp->f_path.mnt->mnt_flags & MNT_NODEV)
pr_info("ramfs node\n");
else
pr_info("persist storage backed node\n");
============================================
============================================
On Wed, Jul 20, 2016 at 7:49 PM, <Valdis.Kletnieks@xxxxxx> wrote:
On Wed, 20 Jul 2016 18:46:47 -0700, Manoj Rao said:
> However, I need to run this for each and every read system call which
> includes all the procfs, sysfs and other RAM fs based file reads. My
> code is causing the kernel to panic at some point due to an illegal
> memory access while trying to obtain the starting sector/block for the
> file that's currently being read. My hunch is the crash occurs when
> file being read is on a non-persistent fs such as a sysfs node
> I have gotten hold of the inode structure and I'm trying to find if
> a given inode is stored persistently or not and I've been unable to
> find this information so far.
Hint: First, check if the filesystem is a pseudo filesystem before bothering
to look for baking store. If you need to know how to do that, steal the
code from the code that prints /proc/filesystems - if it says 'nodev', you'll
only find pain looking for backing storage.
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies