2008-09-22 16:57:34

by Rohit Sharma

[permalink] [raw]
Subject: vfsmount

I am interested in getting the vfsmount structure of the mounted file
system from my module.
I used filp = get_empty_filp() (filp is file pointer)
function to create an empty file object (as this contains pointer to
vfsmount structure)
file object has a field f_vfsmnt which points to the vfsmount structure
i am storing this in my own my_vfsmnt structure of type vfsmount.
my_vfsmnt = filp->f_vfsmnt
but i am getting my_vfsmnt as NULL ??

is there any other way of getting the vfsmount structure ??


2008-09-25 06:43:28

by Manish Katiyar

[permalink] [raw]
Subject: Re: vfsmount

On Mon, Sep 22, 2008 at 10:27 PM, Rohit Sharma <[email protected]> wrote:
> I am interested in getting the vfsmount structure of the mounted file
> system from my module.
> I used filp = get_empty_filp() (filp is file pointer)
> function to create an empty file object (as this contains pointer to
> vfsmount structure)
> file object has a field f_vfsmnt which points to the vfsmount structure
> i am storing this in my own my_vfsmnt structure of type vfsmount.
> my_vfsmnt = filp->f_vfsmnt
> but i am getting my_vfsmnt as NULL ??
>
> is there any other way of getting the vfsmount structure ??

Will this help ??

[[email protected] test]# insmod katiyar.ko
err=0, Path = /
[[email protected] test]# cat nngfs.c
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/mount.h>
#include <linux/namei.h>

#define MOD_AUTHOR "Manish Katiyar"
#define MODULE_DESC "A Simple test module "

static int nngfs_fs_init(void){
int err;
struct vfsmount *tmp;
struct nameidata nd;
err = path_lookup(".",LOOKUP_FOLLOW | LOOKUP_DIRECTORY,&nd);
tmp = nd.path.mnt;
printk(KERN_CRIT "err=%d, Path = %s\n",err,tmp->mnt_root->d_name.name);
return err;
}

static void nngfs_fs_exit(void){
printk(KERN_INFO "Unregistering \n");
return ;
}

module_init(nngfs_fs_init);
module_exit(nngfs_fs_exit);

MODULE_AUTHOR(MOD_AUTHOR);
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION(MODULE_DESC);


Thanks -
Manish

> --
> To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

2008-09-25 11:53:21

by Srikanth Srinivasan

[permalink] [raw]
Subject: Re: vfsmount

On Thu, Sep 25, 2008 at 12:13 PM, Manish Katiyar <[email protected]> wrote:
>
> On Mon, Sep 22, 2008 at 10:27 PM, Rohit Sharma <[email protected]> wrote:
> > I am interested in getting the vfsmount structure of the mounted file
> > system from my module.
> > I used filp = get_empty_filp() (filp is file pointer)
> > function to create an empty file object (as this contains pointer to
> > vfsmount structure)
> > file object has a field f_vfsmnt which points to the vfsmount structure
> > i am storing this in my own my_vfsmnt structure of type vfsmount.
> > my_vfsmnt = filp->f_vfsmnt
> > but i am getting my_vfsmnt as NULL ??
> >
> > is there any other way of getting the vfsmount structure ??
>
> Will this help ??
>
> [[email protected] test]# insmod katiyar.ko
> err=0, Path = /
> [[email protected] test]# cat nngfs.c
> #include <linux/module.h>
> #include <linux/fs.h>
> #include <linux/mount.h>
> #include <linux/namei.h>
>
> #define MOD_AUTHOR "Manish Katiyar"
> #define MODULE_DESC "A Simple test module "
>
> static int nngfs_fs_init(void){
> int err;
> struct vfsmount *tmp;
> struct nameidata nd;
> err = path_lookup(".",LOOKUP_FOLLOW | LOOKUP_DIRECTORY,&nd);
> tmp = nd.path.mnt;
> printk(KERN_CRIT "err=%d, Path = %s\n",err,tmp->mnt_root->d_name.name);
> return err;
> }
>
> static void nngfs_fs_exit(void){
> printk(KERN_INFO "Unregistering \n");
> return ;
> }
>
> module_init(nngfs_fs_init);
> module_exit(nngfs_fs_exit);
>
> MODULE_AUTHOR(MOD_AUTHOR);
> MODULE_LICENSE("GPL");
> MODULE_DESCRIPTION(MODULE_DESC);
>
>
> Thanks -
> Manish
>
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-ext4" in
> > the body of a message to [email protected]
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> >


>From kernel version 2.6.25 on you could directly use the
"current->fs->altroot.mnt" to retrieve the vfsmount structure.


Thanks -
Srikanth