From owner-freebsd-hackers@FreeBSD.ORG Thu Jul 14 06:37:58 2005 Return-Path: X-Original-To: freebsd-hackers@freebsd.org Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DF86016A41C for ; Thu, 14 Jul 2005 06:37:57 +0000 (GMT) (envelope-from jas_arlerr@yahoo.com.cn) Received: from web15005.mail.cnb.yahoo.com (web15005.mail.cnb.yahoo.com [202.165.103.62]) by mx1.FreeBSD.org (Postfix) with SMTP id 123C243D48 for ; Thu, 14 Jul 2005 06:37:56 +0000 (GMT) (envelope-from jas_arlerr@yahoo.com.cn) Received: (qmail 4603 invoked by uid 60001); 14 Jul 2005 06:37:55 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com.cn; h=Message-ID:Received:Date:From:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=gRX5w4oAFeWic120aRpKOcpKNMbCuUNCbju9Ive746ta9qot3uL129JUpz9OPDS6kouihpKa7UExczlc8wbKgtvMzktauhLQZ2tYU/O8jGt+WAC9B4iQlJqxsl5RHCrGGzFm+K2zCOrAqYRPtcHivDgbsQPJQE2Eay5YV3qn0vw= ; Message-ID: <20050714063755.4601.qmail@web15005.mail.cnb.yahoo.com> Received: from [61.187.54.9] by web15005.mail.cnb.yahoo.com via HTTP; Thu, 14 Jul 2005 14:37:55 CST Date: Thu, 14 Jul 2005 14:37:55 +0800 (CST) From: Jone Jas To: Alex Lyashkov In-Reply-To: <1121271947.8832.62.camel@berloga.shadowland> MIME-Version: 1.0 Content-Type: text/plain; charset=gb2312 Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: freebsd hackers , Vlad GALU Subject: Re: limit jail disk space X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Jul 2005 06:37:58 -0000 Alex Lyashkov 写道: В Срд, 13.07.2005, в 18:46, Jone Jas пишет: > Alex Lyashkov 写道: > В Срд, 13.07.2005, в 16:22, Jone Jas пишет: > > Alex Lyashkov 写道: > > > >option QUOTA? or jail disklimit? > > > I mean jail disk limit > > > > > > >for jail disklimit more easy create tools who controled > all > > > limits >for jail. > > > >Look to LinuxVServer project (www.linux-vserver.org) or > > > >FreeVPS. > > > Sure. The tools may control all limits such as cpu time, > > > memory, bandwidth, disk space, etc. I have read the Linux > > > VServer dlimit code. But I am not very sure where to put > the > > > hooks for inode/blocks control of jail in FreeBSD. This is > > why > > > I open this thread. Vlad GALU said I can look to the quota > > > method. I will try. Thanks. > > > -- > > >If you look into quota function you can see it called from > > >inode/blocks allocation/deallocation code at same points > you> >can install disklimits hooks. > > >I can`t find any benefit add new quota type (total size > used > > at >jail) - this way was used at early version Linux VServer > > but >have are one problem - more difficult create separated > > per jail >diskquota. > > > > I am really not aware of this. Are there some conflicts? > > > >In case of undivided diskquota hash you will have to make > >superfluous comparisons at searching. It may be too many > >objects with the same uid/gid, but different jid. If you will > divide >diskquota hash, you need to add parameter in macro > >DQHASH. > I understand. >look into ufs_quota.c:dqget(). >I say about situation with same uid/gid at different jails. For >me more right map disk device id then map uid to different >value. >At you way you need modify >LIST_FOREACH(dq, dqh, dq_hash) { >if (dq->dq_id != id || >dq->dq_ump->um_quotas[dq->dq_type] != dqvp) >continue; >to >LIST_FOREACH(dq, dqh, dq_hash) { >if (dq->dq_id != id || dq->dq_jid != jid || >dq->dq_ump->um_quotas[dq->dq_type] != dqvp) >continue; >.. >but at my way (used at freevps and last linux-vserver) >need only >- dqh = DQHASH(dqvp, id); >+ dqh = DQHASH(map_dqvp, id); Sounds good! Seems more simple and efficient than my way. Btw, which FreeBSD version is your patch against? 5.3 or 5.4? > > > > >If you create disklimit separated from quota code you can > > >easy add quota hash ptr into prison structure and switch > > >hashes when work. > > >Next problem - where store jail id for dinode struct. > > >rwantson@ say we need use xattr for this, but my opinion > > >usereserved fields in dinode. > > > > Yes. My opinion is the same with yours. > > > >You want add reference pointer to prison struct from a inode > >struct or store at inode struct prison id? > I mean just jid. I think that is enough. > > > >PS > >if interested, i tried to port freevps structure to freebsd > jail - > >resulting patch available > >http://www.freevps.com/download/freebsd/. It > >have same functionality with jail and add only total process > >limit in jail. > > Thanks for your patch. I have taken a glance and I will read > it carefully in my spare time. I think it will help me a lot. > -- FreeVPS Developers Team http://www.freevps.com --------------------------------- DO YOU YAHOO!? 雅虎免费G邮箱-中国第一绝无垃圾邮件骚扰超大邮箱