From nobody@FreeBSD.org  Fri Mar 20 08:02:25 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id F225D106566B
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 20 Mar 2009 08:02:25 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id E09598FC1D
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 20 Mar 2009 08:02:25 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n2K82P8A021186
	for <freebsd-gnats-submit@FreeBSD.org>; Fri, 20 Mar 2009 08:02:25 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n2K82PmF021185;
	Fri, 20 Mar 2009 08:02:25 GMT
	(envelope-from nobody)
Message-Id: <200903200802.n2K82PmF021185@www.freebsd.org>
Date: Fri, 20 Mar 2009 08:02:25 GMT
From: Yoshihiro Ota <ota@j.email.ne.jp>
To: freebsd-gnats-submit@FreeBSD.org
Subject: [patch][geom]ggated does not close files opened after disconnec
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         132845
>Category:       bin
>Synopsis:       [geom] [patch] ggated(8) does not close files opened after disconnect
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-geom
>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:  Fri Mar 20 19:08:29 UTC 2009
>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:
Responsible-Changed-From-To: freebsd-bugs->freebsd-geom 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Fri Mar 20 19:08:18 UTC 2009 
Responsible-Changed-Why:  
Over to maintainer(s). 

http://www.freebsd.org/cgi/query-pr.cgi?pr=132845 
>Unformatted:
