On 01-Sep-2014 10:18 AM, "Pranay Srivastava" <pranjas@gmail.com> wrote:
On 30-Aug-2014 10:49 AM, "Joshi" <joshiiitr@gmail.com> wrote:
I am trying to obtain file name at block layer level (above IO
scheduler).
At this level I receive bio structure, within which page pointers are kept.
Thereby I do following to obtain the inode and dentry -
struct inode *inode_ptr = page->mapping->host; if (inode_ptr != NULL) /* Access dentry i.e. i_dentry in the inode */
Are you doing this in readpage(s) or writepage(s) callback? If that's the case your page would be locked and dentry/inode wouldn't go away.
If you are doing something else then first make sure you do lock_page and proceed only if you get that page lock.
Second you can try dget and dput before you start working with dentry.
This works usually. But problem is, inode and dentry may get released from inode and dentry cache at any time. While accessing inode/dentry I need to ensure that till the time I am accessing'em these structure remain valid in memory. Is it possible to ensure that? Which structures/locks I need to check for the purpose.
is this your observation from your test case? Can you explain your test case a bit.
Have you seen d_alias and see if that can help you with filename?
Appreciate any help.
Thanks!
-- Joshi
_______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies