aboutsummaryrefslogtreecommitdiffstats
path: root/net/socket.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2015-02-11 13:59:44 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2015-03-13 12:10:22 -0400
commit599bd19bdc4c6b20fd91d50f2f79dececbaf80c1 (patch)
tree782dec7d04dd789c841e3798ee4c920c9493fe2c /net/socket.c
parent9d5722b7777e64de2d932f46cfee7765fdcc60d6 (diff)
fs: don't allow to complete sync iocbs through aio_complete
The AIO interface is fairly complex because it tries to allow filesystems to always work async and then wakeup a synchronous caller through aio_complete. It turns out that basically no one was doing this to avoid the complexity and context switches, and we've already fixed up the remaining users and can now get rid of this case. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'net/socket.c')
-rw-r--r--net/socket.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/net/socket.c b/net/socket.c
index f92145554f34..f6c519d7b3ba 100644
--- a/net/socket.c
+++ b/net/socket.c
@@ -633,8 +633,7 @@ static int do_sock_sendmsg(struct socket *sock, struct msghdr *msg,
633 init_sync_kiocb(&iocb, NULL); 633 init_sync_kiocb(&iocb, NULL);
634 ret = nosec ? __sock_sendmsg_nosec(&iocb, sock, msg, size) : 634 ret = nosec ? __sock_sendmsg_nosec(&iocb, sock, msg, size) :
635 __sock_sendmsg(&iocb, sock, msg, size); 635 __sock_sendmsg(&iocb, sock, msg, size);
636 if (-EIOCBQUEUED == ret) 636 BUG_ON(ret == -EIOCBQUEUED);
637 ret = wait_on_sync_kiocb(&iocb);
638 return ret; 637 return ret;
639} 638}
640 639
@@ -766,8 +765,7 @@ int sock_recvmsg(struct socket *sock, struct msghdr *msg,
766 765
767 init_sync_kiocb(&iocb, NULL); 766 init_sync_kiocb(&iocb, NULL);
768 ret = __sock_recvmsg(&iocb, sock, msg, size, flags); 767 ret = __sock_recvmsg(&iocb, sock, msg, size, flags);
769 if (-EIOCBQUEUED == ret) 768 BUG_ON(ret == -EIOCBQUEUED);
770 ret = wait_on_sync_kiocb(&iocb);
771 return ret; 769 return ret;
772} 770}
773EXPORT_SYMBOL(sock_recvmsg); 771EXPORT_SYMBOL(sock_recvmsg);
@@ -780,8 +778,7 @@ static int sock_recvmsg_nosec(struct socket *sock, struct msghdr *msg,
780 778
781 init_sync_kiocb(&iocb, NULL); 779 init_sync_kiocb(&iocb, NULL);
782 ret = __sock_recvmsg_nosec(&iocb, sock, msg, size, flags); 780 ret = __sock_recvmsg_nosec(&iocb, sock, msg, size, flags);
783 if (-EIOCBQUEUED == ret) 781 BUG_ON(ret == -EIOCBQUEUED);
784 ret = wait_on_sync_kiocb(&iocb);
785 return ret; 782 return ret;
786} 783}
787 784