On Tue, Aug 08, 2006 at 11:52:53AM +0200, Eric Dumazet ([EMAIL PROTECTED]) wrote: > On Tuesday 08 August 2006 09:44, Evgeniy Polyakov wrote: > > Network AIO, socket notifications. > > > > This patchset includes socket notifications and network asynchronous IO. > > Network AIO is based on kevent and works as usual kevent storage on top > > of inode. > > diff --git a/include/net/sock.h b/include/net/sock.h > index 324b3ea..c43a153 100644 > --- a/include/net/sock.h > +++ b/include/net/sock.h > > Why are you moving around SOCKET_I() and SOCK_INODE() ?
I used kevent notification above, which requires socket->inode transformation (to save some space inside struct sock/socket I use inode as storage both for socket and inode notifications) > diff --git a/kernel/kevent/kevent_naio.c b/kernel/kevent/kevent_naio.c > new file mode 100644 > index 0000000..98c357f > --- /dev/null > +++ b/kernel/kevent/kevent_naio.c > > > + if (!file->f_dentry || !file->f_dentry->d_inode) > > + goto err_out_fput; > > + if (file->f_op != &socket_file_ops) > > + goto err_out_fput; > > + > > + sk = SOCKET_I(file->f_dentry->d_inode)->sk; > > + > > > You dont need to acess the dentry to get the socket from the file pointer. > > (cf net/socket.c , function sock_from_file()) > > if (file->f_op != &socket_file_ops) > goto err_out_fput; > sk = file->private_data; > > (I repeat myself on this point, because I have a patch here so that only one > common dentry is allocated for all the sockets to reduce ram usage on big > servers : Everything but /proc/pid/fd is fine) It will not be struct sock, but struct socket, i.e. only those sockets which have userspace process attached. > Eric > -- Evgeniy Polyakov - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html