Yeah, as much as other character devices are. As long as uevent works,
most stuff should keep working.
Will do.
Hmm... I thought it was like any other integral types, no?
Both are protected by cuse_disconnect_lock. Will add comment.
Will convert to functions.
The thing is when error handling paths are lumped up using "if (xxx)
destroy(xxx);", it's a good idea to always initialize variables which
will carry allocated resource. For this iteration, it doesn't make any
difference but later if the order of initialization changes and/or a new
sequence is added before cc initialization, it's all to easy to forget
whether cc was initialized to NULL or not. gcc will catch it most of
the time but there's no guarantee, so I think it's better to keep it
this way.
Yeah, reading an undocumented parsing function is really painful. Sorry
about lack of comments there. With too many components to update at
hands, I kinda ran out of steam in the last stages where I do the final
review pass through patches and add comments.
The input is packed strings - "key0=val0\0key1=val1\0" - and parse one
pulls one key/val pair out of it.
CUSE initialization worker, it is, meaning that it's a kernel thread
worker for session initialization.
Yeap, will do.
These will be feeded to uevent verbatim. The only reason why it's
called hotplug_info instead of uevent_envp is because FUSE works on
other platforms and I didn't want to put too much Linuxism into naming.
It's briefly mentioned in comment below. It's because the
initialization needs to talk with userland and the talk should happen
over a file which the following cuse_channel_open() creates. So,
cuse_channel_open() can't really talk with the client without completing
open while creating the device needs more information from user.
Not much. It's just the name of the worker. The name differentiation
is mainly to help debugging a bit when something went wrong and doesn't
have to be unique.
Yes, and from the comment at the top of the file.
* channel : file handle connected to the userland CUSE client
...
* Note that 'channel' is what 'dev' is in FUSE. As CUSE deals with
* devices, it's called 'channel' to reduce confusion.
*
* channel determines when the character device dies. When channel is
* closed, everything should begin to destruct. As cuse_conn and mnt
...
"waiting" and "abort" are what fuse exports as controls in fuse control
fs (fs/fuse/control.c). These are CUSE's counterparts.
Only by listing every member. I can't think of a good way to inherit
all and then override some in C initialization. Hmmm.... then again,
maybe it's better to list every member.
Is it something you object strongly?
It's just like FUSE protocol version. FUSE clients seem to distinguish
supported functionality with it. So, it's more "I'm who" kind of thing
which doesn't have much meaning for the initial version.
Sorry about that. I'll add proper comments on the next round.
Thanks.
--
tejun
--