From owner-freebsd-fs@FreeBSD.ORG Tue Oct 19 14:54:27 2010 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 888081065694; Tue, 19 Oct 2010 14:54:27 +0000 (UTC) (envelope-from gleb.kurtsou@gmail.com) Received: from mail-ew0-f54.google.com (mail-ew0-f54.google.com [209.85.215.54]) by mx1.freebsd.org (Postfix) with ESMTP id DF23A8FC0C; Tue, 19 Oct 2010 14:54:26 +0000 (UTC) Received: by ewy21 with SMTP id 21so1614588ewy.13 for ; Tue, 19 Oct 2010 07:54:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:date:from:to:cc:subject :message-id:references:mime-version:content-type:content-disposition :in-reply-to:user-agent; bh=Y5Pqt/jkAsvAwonqoTbu1VTPENJOABSvs1OPE7dq6/M=; b=JfFV0tEg/vwxa8riazfkqK5oUws/1xOAOyD47T5JyDc/QXKrad5jVCYC97tQZ9ZYHw vKpewZe7PohCIpSSuex15oyqTfTEDqlzKCvYxNe3Ve7UEYiqYo23KLZ8ZqyCxNybR5ay DLzsl6hIpR/Ns+u5O9tX6AA6t/M4vHumT1qoA= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; b=XYcmxj61clt5XTqQRSfbsBEUdqWPICEmcCsWgb30YyW74dOCoXbWHzHUrYRtnED2WR s9L2eAuBklzGmZwLMqMiqBO4/jXEMOpZdLXScUBCm39N0jeW6zm0q7B1NKwxuvXTiI4S ShAGsCWpZCoUQH3PrU6cLpP8Ks+sBrBTaO48I= Received: by 10.213.26.81 with SMTP id d17mr419868ebc.42.1287499656732; Tue, 19 Oct 2010 07:47:36 -0700 (PDT) Received: from localhost (lan-78-157-92-5.vln.skynet.lt [78.157.92.5]) by mx.google.com with ESMTPS id v56sm8619645eeh.2.2010.10.19.07.47.35 (version=TLSv1/SSLv3 cipher=RC4-MD5); Tue, 19 Oct 2010 07:47:35 -0700 (PDT) Date: Tue, 19 Oct 2010 17:47:33 +0300 From: Gleb Kurtsou To: Gleb Smirnoff Message-ID: <20101019144733.GA2672@tops> References: <201010181230.o9ICUEAi016474@freefall.freebsd.org> <20101019143601.GA1982@tops> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20101019143601.GA1982@tops> User-Agent: Mutt/1.5.20 (2009-06-14) Cc: freebsd-fs@FreeBSD.org Subject: Re: misc/151111: vnodes leakage during zfs unmount X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 19 Oct 2010 14:54:27 -0000 On (19/10/2010 17:36), Gleb Kurtsou wrote: > On (18/10/2010 12:30), Gleb Smirnoff wrote: > > The following reply was made to PR kern/151111; it has been noted by GNATS. > > > > From: Gleb Smirnoff > > To: "Oleg A. Mamontov" > > Cc: kib@FreeBSD.org, pjd@FreeBSD.org, freebsd-gnats-submit@FreeBSD.org > > Subject: Re: misc/151111: vnodes leakage during zfs unmount > > Date: Mon, 18 Oct 2010 16:11:55 +0400 > > > > On Thu, Sep 30, 2010 at 11:56:18AM +0000, Oleg A. Mamontov wrote: > > O> for i in `jot 1000`; do zfs mount tank; printf '%4d ' $i; sysctl vfs.numvnodes; zfs umount tank; done > > O> ######################## > > O> 1 vfs.numvnodes: 708 > > O> 2 vfs.numvnodes: 709 > > O> 3 vfs.numvnodes: 710 > > O> 4 vfs.numvnodes: 711 > > O> 5 vfs.numvnodes: 712 > > O> > > O> .. > > O> > > O> 995 vfs.numvnodes: 1702 > > O> 996 vfs.numvnodes: 1703 > > O> 997 vfs.numvnodes: 1704 > > O> 998 vfs.numvnodes: 1705 > > O> 999 vfs.numvnodes: 1706 > > O> 1000 vfs.numvnodes: 1707 > > In my tests zfs vnodes are getting properly gc'ed. Most likely maxvnodes > limit is not hit during the test, thus vnodes are not reclaimed. > > Try making all available vnodes used, e.g. by running > 'find /usr >/dev/null' before the test. Running the test you'll see > vfs.numvnodes going up and down. > > It's more visible after lowering kern.maxvnodes. I've used > kern.maxvnodes=1000. Default value on my system is ~127000. Please ignore my previous email. There is indeed a leak. > > Here is my lame investigation of the problem. In the zfs_domount() function > > we've got the following code: > > > > /* Grab extra reference. */ > > VERIFY(VFS_ROOT(vfsp, LK_EXCLUSIVE, &vp) == 0); > > VOP_UNLOCK(vp, 0); > > > > I suppose this code is expected to put an extra reference on the > > vfsp->mnt_vnodecovered vnode. Do I mistake here? If I don't then this is > > the source of leak. > > > > Debugging shows that zfs_zget(), called subsequently from zfs_root(), > > does not find an existing znode/vnode and allocates a new one, see at the > > end of zfs_zget() function. This vnode gots a reference and is forgotten. > > > > Sorry, if I am being mistaken :) > > > > -- > > Totus tuus, Glebius. > > _______________________________________________ > > freebsd-fs@freebsd.org mailing list > > http://lists.freebsd.org/mailman/listinfo/freebsd-fs > > To unsubscribe, send any mail to "freebsd-fs-unsubscribe@freebsd.org"