svn commit: r198013 - user/kmacy/releng_8_fcs/sys/kern
Kip Macy
kmacy at FreeBSD.org
Tue Oct 13 03:55:58 UTC 2009
Author: kmacy
Date: Tue Oct 13 03:55:57 2009
New Revision: 198013
URL: http://svn.freebsd.org/changeset/base/198013
Log:
remove residual bg sendfile socket references before destroying socket buffer
Modified:
user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c
user/kmacy/releng_8_fcs/sys/kern/uipc_syscalls.c
Modified: user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c
==============================================================================
--- user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c Tue Oct 13 01:58:50 2009 (r198012)
+++ user/kmacy/releng_8_fcs/sys/kern/uipc_socket.c Tue Oct 13 03:55:57 2009 (r198013)
@@ -166,6 +166,7 @@ static struct filterops sowrite_filtops
uma_zone_t socket_zone;
so_gen_t so_gencnt; /* generation count for sockets */
+extern int bg_sendfile_enable;
int maxsockets;
MALLOC_DEFINE(M_SONAME, "soname", "socket name");
@@ -620,6 +621,16 @@ sofree(struct socket *so)
if (pr->pr_usrreqs->pru_detach != NULL)
(*pr->pr_usrreqs->pru_detach)(so);
+ if (bg_sendfile_enable) {
+ SOCKBUF_LOCK(&so->so_snd);
+ if ((so->so_snd.sb_flags & (SB_SENDING|SB_SENDING_TASK)) ==
+ (SB_SENDING|SB_SENDING_TASK))
+ sbwait(&so->so_snd);
+ else if (so->so_snd.sb_flags & SB_SENDING)
+ sosendingwakeup(&so->so_snd);
+ SOCKBUF_UNLOCK(&so->so_snd);
+ }
+
/*
* From this point on, we assume that no other references to this
* socket exist anywhere else in the stack. Therefore, no locks need
Modified: user/kmacy/releng_8_fcs/sys/kern/uipc_syscalls.c
==============================================================================
--- user/kmacy/releng_8_fcs/sys/kern/uipc_syscalls.c Tue Oct 13 01:58:50 2009 (r198012)
+++ user/kmacy/releng_8_fcs/sys/kern/uipc_syscalls.c Tue Oct 13 03:55:57 2009 (r198013)
@@ -116,7 +116,7 @@ SYSCTL_INT(_kern_ipc, OID_AUTO, nsfbufsu
/* XXX move to header */
int getsock(struct filedesc *fdp, int fd, struct file **fpp, u_int *fflagp);
-static int bg_sendfile_enable = 0;
+int bg_sendfile_enable = 0;
SYSCTL_INT(_kern_ipc, OID_AUTO, bg_sendfile_enable, CTLFLAG_RW,
&bg_sendfile_enable, 0, "Enable background sendfile");
More information about the svn-src-user
mailing list