misc/132845: [patch][geom]ggated does not close files opened after
disconnec
Yoshihiro Ota
ota at j.email.ne.jp
Fri Mar 20 01:10:04 PDT 2009
>Number: 132845
>Category: misc
>Synopsis: [patch][geom]ggated does not close files opened after disconnec
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Mar 20 08:10:03 UTC 2009
>Closed-Date:
>Last-Modified:
>Originator: Yoshihiro Ota
>Release: FreeBSD 7.1/8-CURRENT
>Organization:
>Environment:
%uname -a
FreeBSD xxx 7.1-RELEASE-p3 FreeBSD 7.1-RELEASE-p3 #463 r188634M: Thu Mar 12 12:27:06 EDT 2009 xxx:/usr/obj/usr/src/sys/GENERIC i386
>Description:
ggated doesn't close local file after closing client connections.
By the way, the patch at http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/132798 also includes this fix, too. I decided to file this because it is a separate issue.
>How-To-Repeat:
server# ggated
client# ggatec create -oro server /dev/da0
client# ggatec destroy -u 0
server# mount -orw /dev/da0 /mnt/backup
RW mount on server fails because ggated remain /dev/da0 opened.
>Fix:
Add the following in connection_remove function in sbin/ggate/ggated/ggated.c
if(conn->c_diskfd == -1)
close(conn->c_diskfd);
FYI:
static void
connection_remove(struct ggd_connection *conn)
{
LIST_REMOVE(conn, c_next);
g_gate_log(LOG_DEBUG, "Connection removed [%s %s].",
ip2str((struct sockaddr*)&conn->c_srcaddr), conn->c_path);
if (conn->c_sendfd != -1)
close(conn->c_sendfd);
if (conn->c_recvfd != -1)
close(conn->c_recvfd);
free(conn->c_path);
free(conn);
}
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list