From mboxrd@z Thu Jan 1 00:00:00 1970 From: rishi.b.agrawal@gmail.com (Rishi Agrawal) Date: Mon, 13 Aug 2012 14:17:08 +0530 Subject: How to get the inode - no path_lookup In-Reply-To: References: Message-ID: To: kernelnewbies@lists.kernelnewbies.org List-Id: kernelnewbies.lists.kernelnewbies.org On Thu, Aug 9, 2012 at 12:39 PM, Rohan Puri wrote: > > > On Thu, Aug 9, 2012 at 8:45 AM, Rishi Agrawal wrote: > >> >> >> On Wed, Aug 8, 2012 at 12:46 PM, Rohan Puri wrote: >> >>> >>> >>> On Tue, Aug 7, 2012 at 8:11 PM, Rishi Agrawal >> > wrote: >>> >>>> Hi All, >>>> >>>> >>>> I had a module which used the path_lookup function to print the details >>>> of any file's inode. I now want to rewrite that module in order to show >>>> some juniors how to write some code in kernel. >>>> >>>> I am using 3.4.6 kernel, I tried finding out path_lookup but google >>>> showed that it has been removed. >>>> >>>> I tried the following code then which did not work >>>> >>>> . >>>> . >>>> . >>>> dentry = kern_path_create(AT_FDCWD, filename, &path, 1); >>>> >>>> if (IS_ERR(dentry)) { >>>> printk("Failed to obtain the dentry"); >>>> return; >>>> } >>>> >>>> its not returning dentry >>>> >>>> I again tried after seeing the implementation of vfs_stat function >>>> >>>> user_path_at(AT_FDCWD, filename, lookup_flags, &path); >>>> >>>> but this also fails. >>>> >>>> >>>> I am using a proc interface to pass the filename, and copying the >>>> filename into a kernel buffer. >>>> >>>> How can I get a copy of vfs inode for a file name. >>>> >>>> >>>> Need to use vfs_path_lookup for this, present in fs/namei.c file, which >>> would give you filled nameidata nd that contais inodes pointer. >>> >>>> -- >>>> Regards, >>>> Rishi Agrawal >>>> >>>> >>>> _______________________________________________ >>>> Kernelnewbies mailing list >>>> Kernelnewbies at kernelnewbies.org >>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >>>> >>>> >>> - Rohan >>> >> >> vfs_path_lookup needs a dentry/mountpoint for the current path. >> >> How will I get those. >> >> >> /** >> * vfs_path_lookup - lookup a file path relative to a dentry-vfsmount pair >> * @dentry: pointer to dentry of the base directory >> * @mnt: pointer to vfs mount of the base directory >> * @name: pointer to file name >> * @flags: lookup flags >> * @path: pointer to struct path to fill >> */ >> >> >> -- >> Regards, >> Rishi Agrawal >> >> If you dont have vfsmount's ptr, then you can make use of kern_path api > with the LOOKUP_FOLLOW as second parameter. This will return the struct > path ptr which contains vfsmount and the dentry's ptr. Now the dentry's ptr > will contain the inode that you require. > > - Rohan > Thanks, used that and its working now -- Regards, Rishi Agrawal -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20120813/effeee59/attachment.html