[prev in list] [next in list] [prev in thread] [next in thread]
List: opensolaris-fuse-discuss
Subject: Re: [fuse-discuss] code for review
From: Sarah Jelinek <Sarah.Jelinek () Sun ! COM>
Date: 2007-03-29 23:31:50
Message-ID: 460C4C66.1050903 () sun ! com
[Download RAW message or body]
Hi Sunil,
General comments:
-Generating a cscope database for changes would be good. I like to look
around and see how callers, consumers, etc.. of the interfaces are using
them. This helps me to get a fuller picture of what is going on.
-Obviously there is a lot of locking that needs to be added. There is no
locking on the fuse fs itself during lookup. Stuff like that.
Code comments:
-fuse_create_vnode():
It isn't clear to me why you made this change. I assume the 'iscreate'
is supposed to be for a exclusive create of a non-existent file?
-create_filehandle(): fuse_vnops.c
Is it ever possible that the msg buff you allocate with
fuse_setup_message() will be NULL or a failure would occur? You don't
check for an error or a null msgp pointer.
-It isn't clear to me why we issue a MKNOD call if the call to
FUSE_CREATE is not supported in the library. Can you explain? Comments
would be helpful as well.
-fuse_msg_refresh(): fuse_vnops.c
You are checking for == size and then > size, can't you check for >=
size? I am not clear why if it > size it must not be forcefree as well
to use the same buffer. Can you explain?
-Does fuse_buf_alloc() always return a valid pointer? Is there any error
checking that needs to happen after a call to this?
-fuse_fs_lookup():fuse_vnops.c
The following:
> /* Check if lookup needs to traverse beyond our filesystem */
> 915 if (nm[0] == '.' && nm[1] == '.' && nm[2] == '\0' &&
> 916 ((fuse_vnode_data_t *)(dvp->v_data))->nodeid == FUSE_ROOT_NODEID) {
> 917 DEBUG(" .. called from root directory, invoking VOP_LOOKUP \n");
> 918 err = VOP_LOOKUP(dvp->v_vfsp->vfs_vnodecovered, nm, vpp, pnp,
> 919 flags, rdir, credp);
> 920 goto out;
> 921 }
Doesn't check to see if vfs_vnodecovered is NULL. It is possible this
would be null if the fs was unmounted at the point the lookup was
called, correct? Because you are calling VOP_LOOKUP on the vnodecovered
which could be null and no null checking is happening in this function.
-Is it expected that the user level fs implementation will handle the
pathname parsing and lookup?
-Also, what about symbolic links, is this handled in the user level
fs?(I would assume so, just checking).
-Why would we create a vnode in the lookup call? How is it possible we
have a nodeid without an associated vnode in the cache?
thanks,
sarah
****
Sunil wrote:
> Hi all,
>
> I have implemented following vnode operations for fuse kernel module on
> Solaris:
>
> lookup
> create
> readlink
>
> The webrev generated diff's of the latest changes is available here:
> http://www-users.cs.umn.edu/~subram/webrev/
> Please feel free to provide any feedback. Depending on the review
> comments I would expect the changes to be committed in to the repository
> in a week or two.
>
> Thanks,
> Sunil
> _______________________________________________
> fuse-discuss mailing list
> fuse-discuss@opensolaris.org
> http://opensolaris.org/mailman/listinfo/fuse-discuss
_______________________________________________
fuse-discuss mailing list
fuse-discuss@opensolaris.org
http://opensolaris.org/mailman/listinfo/fuse-discuss
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic