On 14 August 2008 21:43:29 Roman Divacky wrote:
> On Thu, Aug 14, 2008 at 09:20:12PM +0300, Uladzislau Rezki wrote:
> > Hello folks,
> >
> > I'm using "textvp_fullpath" function to get full path from vnode up to
> > root dir. The problem is that, sometimes it works, sometimes no.
> >
> > I know that "textvp_fullpath" goes through the cache of the vnode and
> > try to build full path.
> >
> > Are there any other ways to get full path?
> > I haven't had any ideas yet, that is why I am asking you.
>
> no... the vnode->full_path lookup is unreliable by definition
Yes , I've already got it.

> in FreeBSD... what exactly are you trying to acomplish? I believe
> there might be other way to do whatever you want to do..
>
Well, I will try to describe it in more detail what i want to do, see below:

The main task is, to pass information from the kernel space to user land
about modification of file system via character device.

For instance, we do something like that:
        echo 123 >> /etc/passwd

we intercept the "write" system call and from this point we are within our own 
call:

static int
our_own_write_syscall (struct proc *p, struct write_args *uap)
{
        struct vnode *vn = NULL;
        struct file *file;
        int sys_error;

        /* do system call */
        sys_error = write(p, uap);
        if (sys_error != 0)
                goto leave_call;

        /* get the file */
        file = p->p_fd->fd_ofiles[uap->fd];

        /* get the vnode */
        vn = (struct vnode *) file->f_data;
        ...
}

We have to to do a few thinks:

1) do original "write" sys call;
2) get full path (/etc/passwd);
3) put all this information to user land through the character device.

I get stuck in point 2. I need to get full path, but how ...

Thanks in advance.

--
Uladzislau Rezki
_______________________________________________
freebsd-hackers@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to