[prev in list] [next in list] [prev in thread] [next in thread]
List: dragonfly-users
Subject: Re: your own filesystem
From: Matthew Dillon <dillon () apollo ! backplane ! com>
Date: 2012-09-07 16:35:31
Message-ID: 201209071635.q87GZVB5087716 () apollo ! backplane ! com
[Download RAW message or body]
> hi, all
> (thanx for the links to the books)
>
> i have added few handlers to
> my_vnops.c file (that originally was null_vnops.c of "nullfs")
>
> and (with intention to involve my handlers into execution flow)
> i have extended struct vop_ops (last 4 lines):
>
> struct vop_ops my_vnode_vops = {
> .vop_nresolve = null_nresolve,
> .vop_ncreate = null_ncreate,
> .vop_nmkdir = null_nmkdir,
> .vop_nmknod = null_nmknod,
> .vop_nlink = null_nlink,
> .vop_nsymlink = null_nsymlink,
> .vop_nwhiteout = null_nwhiteout,
> .vop_nremove = null_nremove,
> .vop_nrmdir = null_nrmdir,
> .vop_nrename = null_nrename,
> .vop_mountctl = null_mountctl,
> .vop_open = my_open,
> .vop_read = my_read,
> .vop_write = my_write,
> .vop_access = my_access
> };
>
> then i have noticed that my_*() handlers were never called no matter what \
> operations i perform on my test subject.
>
> the question is:
> (1) What am i doing wrong?
> (2) Is there any official description what is a purpose of each handler in struct \
> vop_ops and WHEN it shall be called?
This won't work for a nullfs mount because the underyling vnodes are
the vnodes for the underyling filesystem, NOT nullfs-specific vnodes.
Thus those vnodes point to the underlying filesystem's ops and not
nullfs's ops.
If you want to try your hand at creating your own filesystem then I
recommend starting with a self-contained memory filesystem like tmpfs.
-Matt
Matthew Dillon
<dillon@backplane.com>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic