Thread (180 messages) 180 messages, 22 authors, 2006-08-22

Re: [take5 3/4] kevent: Network AIO, socket notifications.

From: Evgeniy Polyakov <hidden>
Date: 2006-08-08 10:03:26

On Tue, Aug 08, 2006 at 11:52:53AM +0200, Eric Dumazet (dada1@cosmosbay.com) wrote:
quoted hunk ↗ jump to hunk
On Tuesday 08 August 2006 09:44, Evgeniy Polyakov wrote:
quoted
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)
quoted hunk ↗ jump to hunk
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
quoted
+	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help