From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 00:44:14 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE43B16A4DA; Sun, 10 Feb 2008 00:44:14 +0000 (UTC) (envelope-from jmg@hydrogen.funkthat.com) Received: from hydrogen.funkthat.com (gate.funkthat.com [69.17.45.168]) by mx1.freebsd.org (Postfix) with ESMTP id 69F2913C442; Sun, 10 Feb 2008 00:44:13 +0000 (UTC) (envelope-from jmg@hydrogen.funkthat.com) Received: from hydrogen.funkthat.com (oosbiwcaljco04a8@localhost.funkthat.com [127.0.0.1]) by hydrogen.funkthat.com (8.13.6/8.13.3) with ESMTP id m1A0TDeY067357; Sat, 9 Feb 2008 16:29:13 -0800 (PST) (envelope-from jmg@hydrogen.funkthat.com) Received: (from jmg@localhost) by hydrogen.funkthat.com (8.13.6/8.13.3/Submit) id m1A0TCZs067356; Sat, 9 Feb 2008 16:29:12 -0800 (PST) (envelope-from jmg) Date: Sat, 9 Feb 2008 16:29:12 -0800 From: John-Mark Gurney To: Nikolay Pavlov Message-ID: <20080210002912.GA7399@funkthat.com> Mail-Followup-To: Nikolay Pavlov , Joao Barros , Attilio Rao , Yar Tikhiy , Doug Barton , Jeff Roberson , freebsd-fs@freebsd.org, Scot Hetzel , freebsd-arch@freebsd.org References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <200802071941.23199.qpadla@gmail.com> <70e8236f0802071018n389afa3bu161eaa5c6563cbc0@mail.gmail.com> <200802072052.56918.qpadla@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200802072052.56918.qpadla@gmail.com> User-Agent: Mutt/1.4.2.1i X-Operating-System: FreeBSD 5.4-RELEASE-p6 i386 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ X-Resume: http://resnet.uoregon.edu/~gurney_j/resume.html X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (hydrogen.funkthat.com [127.0.0.1]); Sat, 09 Feb 2008 16:29:13 -0800 (PST) Cc: freebsd-fs@freebsd.org, Joao Barros , Doug Barton , Jeff Roberson , Yar Tikhiy , Attilio Rao , Scot Hetzel , freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: John-Mark Gurney List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 00:44:14 -0000 Nikolay Pavlov wrote this message on Thu, Feb 07, 2008 at 20:52 +0200: > On Thursday 07 February 2008 20:18:42 Joao Barros wrote: > > On Feb 7, 2008 5:41 PM, Nikolay Pavlov wrote: > > > On Thursday 07 February 2008 14:47:41 Eric Anderson wrote: > > > > FUSE is slow, requires a port (unless PUFFS is ported, which I've > > > > probed about before). > > > > > > I think this is not an argument: > > > http://www.ntfs-3g.org/performance.html > > > > Eric has valid points. > > How relevant is a benchmark on Linux to your argument? > > But it's a userland application. This page is demonstration of it's > potential performance that could be achieved, but were is the FreeBSD NTFS > implementation stats? Let me ask you: compered to what FUSE is slow? Kernel NTFS support is about 10x faster than ntfs-3g on FreeBSD (I think this also depends upon the size of the file). This is because ntfs-3g depends upon the block device that linux provides to userland. There are patches that make ntfs-3g have it's own block cache that makes it perform decently on FreeBSD, but until those patches are integrated, using ntfs-3g is a non-starter if you use NTFS for >4GB file support. It's faster to use samba to a Windows box than it is to use ntfs-3g to write large files. (And that's even w/ how much slower samba is that nfs.) I don't have any hard core benchmarks handy. Even on MacOSX ntfs-3g is sooo slow. It's so slow, that I don't even both hooking up NTFS disks to my MacOSX box anymore either. Though I will say that once ntfs-3g has decided that they want to target other platforms than Linux and address these performance issues, I will be one of the first asking for our current NTFS code to be removed and replaced by ntfs-3g, but until that time, we need to keep the current code. -- John-Mark Gurney Voice: +1 415 225 5579 "All that I will do, has been done, All that I have, has not." From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 10:40:10 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8832916A420 for ; Sun, 10 Feb 2008 10:40:10 +0000 (UTC) (envelope-from freebsd-arch@m.gmane.org) Received: from ciao.gmane.org (main.gmane.org [80.91.229.2]) by mx1.freebsd.org (Postfix) with ESMTP id 0912A13C45D for ; Sun, 10 Feb 2008 10:40:09 +0000 (UTC) (envelope-from freebsd-arch@m.gmane.org) Received: from root by ciao.gmane.org with local (Exim 4.43) id 1JO9bO-0004FH-CP for freebsd-arch@freebsd.org; Sun, 10 Feb 2008 10:40:02 +0000 Received: from a91-153-133-91.elisa-laajakaista.fi ([91.153.133.91]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 10 Feb 2008 10:40:02 +0000 Received: from szaka by a91-153-133-91.elisa-laajakaista.fi with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 10 Feb 2008 10:40:02 +0000 X-Injected-Via-Gmane: http://gmane.org/ To: freebsd-arch@freebsd.org From: Szabolcs Szakacsits Date: Sun, 10 Feb 2008 02:52:21 +0000 (UTC) Lines: 74 Message-ID: References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <200802071941.23199.qpadla@gmail.com> <70e8236f0802071018n389afa3bu161eaa5c6563cbc0@mail.gmail.com> <200802072052.56918.qpadla@gmail.com> <20080210002912.GA7399@funkthat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: main.gmane.org User-Agent: Loom/3.14 (http://gmane.org/) X-Loom-IP: 91.153.133.91 (Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.3) Gecko/20070208 Mandriva/2.0.0.3-2mdv2007.1 (2007.1) Firefox/2.0.0.3) Sender: news Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 10:40:10 -0000 John-Mark Gurney funkthat.com> writes: > Nikolay Pavlov wrote this message on Thu, Feb 07, 2008 at 20:52 +0200: > > On Thursday 07 February 2008 20:18:42 Joao Barros wrote: > > > On Feb 7, 2008 5:41 PM, Nikolay Pavlov gmail.com> wrote: > > > > On Thursday 07 February 2008 14:47:41 Eric Anderson wrote: > > > > > FUSE is slow, requires a port (unless PUFFS is ported, which I've > > > > > probed about before). > > > > > > > > I think this is not an argument: > > > > http://www.ntfs-3g.org/performance.html > > > > > > Eric has valid points. > > > How relevant is a benchmark on Linux to your argument? > > > > But it's a userland application. This page is demonstration of it's > > potential performance that could be achieved, but were is the FreeBSD NTFS > > implementation stats? Let me ask you: compered to what FUSE is slow? > > Kernel NTFS support is about 10x faster than ntfs-3g on FreeBSD (I > think this also depends upon the size of the file). This is because > ntfs-3g depends upon the block device that linux provides to userland. > There are patches that make ntfs-3g have it's own block cache that > makes it perform decently on FreeBSD, but until those patches are > integrated, using ntfs-3g is a non-starter if you use NTFS for >4GB > file support. It's faster to use samba to a Windows box than it is > to use ntfs-3g to write large files. (And that's even w/ how much > slower samba is that nfs.) > > I don't have any hard core benchmarks handy. Even on MacOSX ntfs-3g > is sooo slow. It's so slow, that I don't even both hooking up NTFS > disks to my MacOSX box anymore either. > > Though I will say that once ntfs-3g has decided that they want to > target other platforms than Linux and address these performance issues, > I will be one of the first asking for our current NTFS code to be > removed and replaced by ntfs-3g, but until that time, we need to keep > the current code. Well, I think we have worked hard all last year with Csaba Henk (FUSE/FreeBSD and the ublio caching layer author/maintainer), Alejandro Pulver (fusefs-ntfs, ntfs-3g/FreeBSD developer/maintainer), Paul Marks (ntfs-3g/OS X ublio integrator/ex-maintainer) and Erik Larsson (ntfs-3g/OS X ublio integrator/developer/maintainer) to provide this performance improvement by default on FreeBSD and OS X. The FreeBSD one is available for seven months: http://www.freshports.org/sysutils/fusefs-ntfs I think this is very worth to read: http://www.freebsd.org/cgi/cvsweb.cgi/ports/sysutils/fusefs-ntfs/files/pkg-message.in?rev=1.6 The OS X one is here for four months: http://macntfs-3g.blogspot.com/ The UBLIO DMG is this one: http://hem.bredband.net/unsound/ntfs-3g/NTFS-3G_1.2129-ublio-catacombae.dmg The most common reasons for performance issues (besides the driver being unoptimized on all platforms) are listed here: http://ntfs-3g.org/support.html#cpu100 Extremely slow external USB performance is/was very typical because of this issue (USB2->USB1) on several OSes: http://www.theinquirer.net/gb/inquirer/news/2007/12/06/seagate-snubs-linux Regards, Szaka From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 11:24:46 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 87A1116A417; Sun, 10 Feb 2008 11:24:46 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 46B6713C467; Sun, 10 Feb 2008 11:24:46 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id BA9D3207E; Sun, 10 Feb 2008 12:24:38 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.3 (2007-08-08) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id 84C1B2049; Sun, 10 Feb 2008 12:24:38 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id 7DDA58449F; Sun, 10 Feb 2008 12:24:37 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: "M. Warner Losh" References: <200802081802.54313.jhb@freebsd.org> <86sl02e736.fsf@ds4.des.no> <20080209.160817.168016724.imp@bsdimp.com> Date: Sun, 10 Feb 2008 12:24:37 +0100 In-Reply-To: <20080209.160817.168016724.imp@bsdimp.com> (M. Warner Losh's message of "Sat\, 09 Feb 2008 16\:08\:17 -0700 \(MST\)") Message-ID: <86lk5taway.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 11:24:46 -0000 "M. Warner Losh" writes: > Dag-Erling_Sm=C3=B8rgrav writes: > > ...provided they were built from the same config... I think > > MUTEX_PROFILING has been fixed, but there may still be cases where > > the ABI changes dependening on kernel options. > These are usually well documented. But I can't find any in the > current doc set. Maybe you could point me at options that do this so > we can document them (and maybe add a #warning when compiling with > them)? Here's one I found: DEBUG_LOCKS changes the size of struct lock, which changes the size and layout of struct vnode. DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 12:50:26 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7AE8C16A420 for ; Sun, 10 Feb 2008 12:50:26 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.152]) by mx1.freebsd.org (Postfix) with ESMTP id 0D02813C447 for ; Sun, 10 Feb 2008 12:50:25 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by fg-out-1718.google.com with SMTP id 16so3670027fgg.35 for ; Sun, 10 Feb 2008 04:50:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; bh=89ZWlhvtCYAjZiLUIUkQr7l7v11vr2m8COzd7mbBpHo=; b=dZbg49tXj3uSYDZnYKWgQ7k7Bp8NQxbg7P97Zj7/PjfdfX41e2sPya/poo1fSOaeCzC0KByDgnwCFjAogLkhTRfdw7Q4rKITiluA3LMzUj3KhQROyv9iDQxJjYZuDTi9zofscDGrfV/gHztY+QJ79aClCP6hl+wQTLidclanJzg= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=KBklwl22QSdY3LSbWQzO0iEHyZ3vRC1c4mqKEZ8hNLoEaSePwWrpreYbqbbeMobQmOMB15P9dMjK90J+bsmremU0vBo96NdLwChNvVMAE1Q2NOWheZuF0+Df8XNH95gD830kTBYwwxpIdq6WarcEUbw1O96/TJG01NsCWz8Sarg= Received: by 10.86.4.2 with SMTP id 2mr2905434fgd.7.1202647824340; Sun, 10 Feb 2008 04:50:24 -0800 (PST) Received: by 10.86.30.17 with HTTP; Sun, 10 Feb 2008 04:50:24 -0800 (PST) Message-ID: <3bbf2fe10802100450j7279e9d2id6ec97a03f6fb65a@mail.gmail.com> Date: Sun, 10 Feb 2008 13:50:24 +0100 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "=?UTF-8?Q?Dag-Erling_Sm=C3=B8rgrav?=" In-Reply-To: <86lk5taway.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline References: <200802081802.54313.jhb@freebsd.org> <86sl02e736.fsf@ds4.des.no> <20080209.160817.168016724.imp@bsdimp.com> <86lk5taway.fsf@ds4.des.no> X-Google-Sender-Auth: b50bb90f9ad5ff62 Cc: arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 12:50:26 -0000 MjAwOC8yLzEwLCBEYWctRXJsaW5nIFNtw7hyZ3JhdiA8ZGVzQGRlcy5ubz46Cj4gIk0uIFdhcm5l ciBMb3NoIiA8aW1wQGJzZGltcC5jb20+IHdyaXRlczoKPiAgPiBEYWctRXJsaW5nX1Ntw7hyZ3Jh diA8ZGVzQGRlcy5ubz4gd3JpdGVzOgo+Cj4gPiA+IC4uLnByb3ZpZGVkIHRoZXkgd2VyZSBidWls dCBmcm9tIHRoZSBzYW1lIGNvbmZpZy4uLiAgSSB0aGluawo+ICA+ID4gTVVURVhfUFJPRklMSU5H IGhhcyBiZWVuIGZpeGVkLCBidXQgdGhlcmUgbWF5IHN0aWxsIGJlIGNhc2VzIHdoZXJlCj4gID4g PiB0aGUgQUJJIGNoYW5nZXMgZGVwZW5kZW5pbmcgb24ga2VybmVsIG9wdGlvbnMuCj4gID4gVGhl c2UgYXJlIHVzdWFsbHkgd2VsbCBkb2N1bWVudGVkLiAgQnV0IEkgY2FuJ3QgZmluZCBhbnkgaW4g dGhlCj4gID4gY3VycmVudCBkb2Mgc2V0LiAgTWF5YmUgeW91IGNvdWxkIHBvaW50IG1lIGF0IG9w dGlvbnMgdGhhdCBkbyB0aGlzIHNvCj4gID4gd2UgY2FuIGRvY3VtZW50IHRoZW0gKGFuZCBtYXli ZSBhZGQgYSAjd2FybmluZyB3aGVuIGNvbXBpbGluZyB3aXRoCj4gID4gdGhlbSk/Cj4KPgo+IEhl cmUncyBvbmUgSSBmb3VuZDogREVCVUdfTE9DS1MgY2hhbmdlcyB0aGUgc2l6ZSBvZiBzdHJ1Y3Qg bG9jaywgd2hpY2gKPiAgY2hhbmdlcyB0aGUgc2l6ZSBhbmQgbGF5b3V0IG9mIHN0cnVjdCB2bm9k ZS4KClllcywgdGhpcyBpcyBhIHBhcnRpY3VsYXJ5IGFubm95aW5nIGJyZWFrYWdlLgpOZXh0IGdl bmVyYXRpb24gbG9ja21nciB3b24ndCBoYXZlIHRoaXMgcHJvYmxlbSwgdGhvdWdoLCBidXQgSSB0 aGluawp3aGF0IHJlYWxseSBtYXR0ZXJzIGZvciB5b3UgYXJlIHBhc3QgdmVyc2lvbnMsIHdoZXJl IG5vdGhpbmcgbWFnaWMgY2FuCmJlIGRvbmUuCgpBdHRpbGlvCgoKLS0gClBlYWNlIGNhbiBvbmx5 IGJlIGFjaGlldmVkIGJ5IHVuZGVyc3RhbmRpbmcgLSBBLiBFaW5zdGVpbgo= From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 15:02:44 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D6CA816A41B for ; Sun, 10 Feb 2008 15:02:44 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 6B3C913C47E for ; Sun, 10 Feb 2008 15:02:44 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id 6D7A717105 for ; Sun, 10 Feb 2008 15:02:42 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.2/8.14.2) with ESMTP id m1AF2fYi076896 for ; Sun, 10 Feb 2008 15:02:42 GMT (envelope-from phk@critter.freebsd.dk) To: arch@freebsd.org From: Poul-Henning Kamp Date: Sun, 10 Feb 2008 15:02:41 +0000 Message-ID: <76888.1202655761@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: Subject: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 15:02:44 -0000 On NanoBSD and similar systems running on flash devices, logfiles are a problem due to the write-wear on the flash devices. As part of a SCADA task for the Danish Air Traffic Control, I wrote a facility that uses a file or disk partition as a round robin storage device for log information. The data is compressed with zlib to reduce the size. But when you compress data, you have seeking problem, therefore fifologs have periodic synchronization points where the compression is reset and a timestamp is stored uncompressed (default: 1 min) This makes it possible to hunt for a specific timestamp using a modified binary search, thus eliminating the need to read and uncompress half the logfile on average. In addition to this, a second timer will force a write of the compressed data at higher frequency (default:10s) to put a strict upper bound on the amount of data which can be lost in case of a crash. (This timer is obviously a trade-off between wearing out the flash device and loosing information about a crash, but if you are debugging FreeBSD crashes, this is not the right tool anyway.) I have started to extract the fifolog from the SCADA application because I need it as a free standing facility in another contract, and that got me wondering if it should be included in FreeBSD as a general tool ? Using it with syslogd is trivial, just initialize a fifolog somewhere: fifolog_create -s 10m /var/log/syslog.fifolog add this line to /etc/syslog.conf: *.* |fifolog_writer /var/log/syslog.fifolog restart syslogd & and you're done. To read your logfile: fifolog_reader -B "17 hours ago" -E "15 hours ago" /var/log/syslog.fifolog In difference from the current /var/logs + newsyslog(8) a fifolog has a constant storage requirement and you always have access to as much log information as will fit in that amount of storage. The complete fifolog tools sources: http://phk.freebsd.dk/patch/fifolog.tgz The manual page is included below. Comments, code reviews and opinions on the suitability of this for inclusion in FreeBSDs base system are most welcome. Poul-Henning FIFOLOG(1) FreeBSD General Commands Manual FIFOLOG(1) NAME fifolog_create -- Initialize storage for fifolog fifolog_write -- Write data to fifolog fifolog_read -- Seek and extract data from fifolog SYNOPSIS fifolog_create [-l record-size] [-r record-count] [-s size] file fifolog_reader [-t] [-b tstart] [-B Tstart] [-e tend] [-E Tend] [-o ofile] [-R regexp] [-T timefmt] file fifolog_writer [-w write-rate] [-s sync-rate] [-z compression] file DESCRIPTION Fifologs are designed to provide a round-robin circular storage for recording text and binary information to permanent storage in a bounded and predictable fashion, time and space wise. A fifolog can be stored either directly on a disk partition or in a regu- lar filesystem file. The input data stream is encoded and compressed and marked up with time- stamps before it is written to storage, such that it is possible to seek out a particular time interval in the stored data, without having to decompress all of the logfile. Writes happen whenever the output buffer is filled with compressed data or when either of two timers expire forcing the partially filled buffer to be written. The first and faster timer just forces available data to be written but does not flush and reset the compression dictionary. This timer is intended to minimize the amount of logdata lost in RAM in case of a crash and by default it fires 10 seconds after the previous write. The second and slower timer forces a full flush and reset of the compres- sion engine and forces the next record written to be a synchronization point with its own timestamp, making it possible to initiate reading from that record. By default this timer fires a minute after the previous sync. The fifolog_create program is used to initialize the first sector of a disk device or filesystem file to make it a fifolog and should be called only once. Running fifolog_create on an existing fifolog will reset it so that fifolog_reader and fifolog_writer will not see the previous contents. (The previos contents is not physically erased, and with a bit of hand- work, all but the first record can be easily recovered). If the file does not already exist fifolog_create will attempt to create and ftruncate(3) it to the specified size, defaulting to 86400 records if no -r argument is specified. fifolog_writer will read standard input and write it to the end of the fifolog according to the parameters given. fifolog_reader will retrieve records from the fifolog according to the specified parameters and write them either to stdout or the file speci- fied with -o. It is possible to specify a start and end time to limit the amount of data fifolog_reader will report. The lower-case variants -b and -e take a time_t value, whereas the upper-case variants -B and -E take human red- able specifications such as "1 hour ago". The -t argument forces timestamps to be formatted as "YYYYMMDDhhmmss" instead of as time_t, and -T allows the specification of a strftime(3) formatting string. Finally, records can be filtered such that only records matching the (REG_BASIC) regular expression specified with -R is output. IMPLEMENTATION NOTES The data stored in the fifolog consists of three layers, an outher layer that allows searches to synchronization points based on timestamps with- out having to decompress and decode the actual contents, a compression layer implemented with zlib(3) and an inner serialization and timestamp- ing layer. The exact encoding is described in the fifolog.h file. Fifolog is particularly well suited for use on Flash based media, where it results in much less write-wear, than a filesystem with regular log- files and newsyslog(8) etc. EXAMPLES Create a fifolog with 1024*1024 records of 512 bytes: fifolog_create -s 10m /tmp/fifolog Write a single record to this file: date | fifolog_writer /tmp/fifolog Read it back with human readable timestamps: fifolog_reader -t /tmp/fifolog One particular useful use of fifolog_writer is with syslogd(8) using a line such as this in /etc/syslog.conf(5): *.* |fifolog_writer /var/log/syslog_fifolog HISTORY The fifolog tools have been liberated from an open source SCADA applica- tions called "measured", which monitors and controls remote radio naviga- tion transmitters for the Danish Air Traffic Control system. AUTHORS The fifolog tools were written by Poul-Henning Kamp FreeBSD 8.0 Feb 9, 2008 FreeBSD 8.0 -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 17:38:26 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FB9E16A418 for ; Sun, 10 Feb 2008 17:38:26 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from mail.netplex.net (mail.netplex.net [204.213.176.10]) by mx1.freebsd.org (Postfix) with ESMTP id 2D2CF13C43E for ; Sun, 10 Feb 2008 17:38:25 +0000 (UTC) (envelope-from deischen@freebsd.org) Received: from sea.ntplx.net (sea.ntplx.net [204.213.176.11]) by mail.netplex.net (8.14.2/8.14.2/NETPLEX) with ESMTP id m1AHcNEr004360; Sun, 10 Feb 2008 12:38:24 -0500 (EST) X-Virus-Scanned: by AMaViS and Clam AntiVirus (mail.netplex.net) X-Greylist: Message whitelisted by DRAC access database, not delayed by milter-greylist-4.0 (mail.netplex.net [204.213.176.10]); Sun, 10 Feb 2008 12:38:24 -0500 (EST) Date: Sun, 10 Feb 2008 12:38:24 -0500 (EST) From: Daniel Eischen X-X-Sender: eischen@sea.ntplx.net To: Poul-Henning Kamp In-Reply-To: <76888.1202655761@critter.freebsd.dk> Message-ID: References: <76888.1202655761@critter.freebsd.dk> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: arch@freebsd.org Subject: Re: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Daniel Eischen List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 17:38:26 -0000 On Sun, 10 Feb 2008, Poul-Henning Kamp wrote: > > On NanoBSD and similar systems running on flash devices, logfiles > are a problem due to the write-wear on the flash devices. [ ... ] > The complete fifolog tools sources: > > http://phk.freebsd.dk/patch/fifolog.tgz > > The manual page is included below. > > Comments, code reviews and opinions on the suitability of this for > inclusion in FreeBSDs base system are most welcome. I think this would be a great addition, if nothing else than to be available for NanoBSD. -- DE From owner-freebsd-arch@FreeBSD.ORG Sun Feb 10 18:27:18 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D5D8C16A46C for ; Sun, 10 Feb 2008 18:27:18 +0000 (UTC) (envelope-from michel@lpthe.jussieu.fr) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by mx1.freebsd.org (Postfix) with ESMTP id 7D2A013C45D for ; Sun, 10 Feb 2008 18:27:18 +0000 (UTC) (envelope-from michel@lpthe.jussieu.fr) Received: from parthe.lpthe.jussieu.fr (parthe.lpthe.jussieu.fr [134.157.10.1]) by shiva.jussieu.fr (8.14.2/jtpda-5.4) with ESMTP id m1AHgB02058469 for ; Sun, 10 Feb 2008 18:42:11 +0100 (CET) X-Ids: 168 Received: from niobe.lpthe.jussieu.fr (niobe.lpthe.jussieu.fr [134.157.10.41]) by parthe.lpthe.jussieu.fr (Postfix) with ESMTP id 2AAB62377F4 for ; Sun, 10 Feb 2008 18:42:10 +0100 (CET) Received: by niobe.lpthe.jussieu.fr (Postfix, from userid 2005) id 1C0BF30; Sun, 10 Feb 2008 18:42:10 +0100 (CET) Date: Sun, 10 Feb 2008 18:42:10 +0100 From: Michel Talon To: arch@freebsd.org Message-ID: <20080210174210.GA22309@lpthe.jussieu.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (shiva.jussieu.fr [134.157.0.168]); Sun, 10 Feb 2008 18:42:11 +0100 (CET) X-Virus-Scanned: ClamAV 0.92/5764/Sun Feb 10 08:38:01 2008 on shiva.jussieu.fr X-Virus-Status: Clean X-Miltered: at shiva.jussieu.fr with ID 47AF3773.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! Cc: Subject: Re: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 10 Feb 2008 18:27:18 -0000 Poul-Henning Kamp wrote: > I have started to extract the fifolog ... I like very much this idea, it reminds me of the cycbufs which can be used with the news software inn, and that i use with great satisfaction (automatic expiring ...) on my own inn installation. -- Michel TALON From owner-freebsd-arch@FreeBSD.ORG Mon Feb 11 20:46:22 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C651016A469 for ; Mon, 11 Feb 2008 20:46:22 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from speedfactory.net (mail.speedfactory.net [66.23.216.219]) by mx1.freebsd.org (Postfix) with ESMTP id 453EE13C4DD for ; Mon, 11 Feb 2008 20:46:21 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (unverified [66.23.211.162]) by speedfactory.net (SurgeMail 3.8s) with ESMTP id 231612671-1834499 for multiple; Mon, 11 Feb 2008 15:46:26 -0500 Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.14.2/8.14.2) with ESMTP id m1BKk4Im052106; Mon, 11 Feb 2008 15:46:04 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: Dag-Erling =?utf-8?q?Sm=C3=B8rgrav?= Date: Mon, 11 Feb 2008 14:31:00 -0500 User-Agent: KMail/1.9.7 References: <200802081802.54313.jhb@freebsd.org> <20080209.160817.168016724.imp@bsdimp.com> <86lk5taway.fsf@ds4.des.no> In-Reply-To: <86lk5taway.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200802111431.00640.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Mon, 11 Feb 2008 15:46:05 -0500 (EST) X-Virus-Scanned: ClamAV 0.91.2/5778/Mon Feb 11 13:53:43 2008 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Feb 2008 20:46:22 -0000 On Sunday 10 February 2008 06:24:37 am Dag-Erling Sm=C3=B8rgrav wrote: > "M. Warner Losh" writes: > > Dag-Erling_Sm=C3=B8rgrav writes: > > > ...provided they were built from the same config... I think > > > MUTEX_PROFILING has been fixed, but there may still be cases where > > > the ABI changes dependening on kernel options. > > These are usually well documented. But I can't find any in the > > current doc set. Maybe you could point me at options that do this so > > we can document them (and maybe add a #warning when compiling with > > them)? >=20 > Here's one I found: DEBUG_LOCKS changes the size of struct lock, which > changes the size and layout of struct vnode. Yes, DEBUG_LOCKS, MUTEX_PROFILING (O.B.E), and PAE are the ones I know of. = We=20 could employ a similar strategy for these btw. For example, you could do=20 this for PAE: sys/i386/i386/pmap.c: #ifdef PAE MODULE_VERSION(pae, 1); #else MODULE_VERSION(pae, 0); #endif sys/module.h: #if defined(__i386__) #ifdef PAE #define PAE_DEPEND(name) MODULE_DEPEND(name, pae, 1, 1, 1) #else #define PAE_DEPEND(name) MODULE_DEPEND(name, pae, 0, 0, 0) #endif #else #define PAE_DEPEND(name) struct __hack #endif #define DECLARE_MODULE(name, ...) \ ... PAE_DEPEND(name); \ ... It sucks to have the MD-ness there. Could perhaps have an MI macro like th= is: sys/module.h: #include #ifndef MACHINE_MODULE_DEPEND #define MACHINE_MODULE_DEPEND struct __hack #endif sys/i386/include/module.h: PAE bits from above but s/PAE_DEPEND/MACHINE_MODULE_DEPEND/. In general we= =20 try to keep the number of such ABI-breaking options to a very bare minimum,= =20 so perhaps one-off hacks in sys/module.h rather than abstracting it is=20 sufficient. =2D-=20 John Baldwin From owner-freebsd-arch@FreeBSD.ORG Mon Feb 11 20:48:16 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9A5A016A469 for ; Mon, 11 Feb 2008 20:48:16 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: from fg-out-1718.google.com (fg-out-1718.google.com [72.14.220.155]) by mx1.freebsd.org (Postfix) with ESMTP id 2969713C459 for ; Mon, 11 Feb 2008 20:48:15 +0000 (UTC) (envelope-from asmrookie@gmail.com) Received: by fg-out-1718.google.com with SMTP id 16so4128260fgg.35 for ; Mon, 11 Feb 2008 12:48:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; bh=l9suFJhx+Qhtz9LJpZE6oOjn1xfILiIaoDbvKWrQarA=; b=cFSTW0A1aV9SYiWXxNeDyS46JZzJ43giIpnJGuY88i9T0QPTpRVTqmAJ8fgnJAxr4XBVwV1/9EfTCEQKNIEkDZv3uuXloKNUP+u2CX05Sc+rgRFy9t18hMgemcchKVXEvAYImimgooVQXKfIwmHdG8s28NIxjZn4M8bd8JnZW8k= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=cpdzyFTJDj+j6gR+w6FARB+ZDNtYuewLd3lm+1aqR3xqs0BSXTNUi/BNEyyjOtu11lGPQXVe60elKtGCTKMMZfwHqhG85TeKW0PeQepd85DZiFaNZw6dlgtd53k2PlN/Qpjq1/oFiNBxlOctqz/ttC5PENJuibTlGeZmqPc2C8c= Received: by 10.86.87.5 with SMTP id k5mr381601fgb.51.1202762894851; Mon, 11 Feb 2008 12:48:14 -0800 (PST) Received: by 10.86.30.17 with HTTP; Mon, 11 Feb 2008 12:48:14 -0800 (PST) Message-ID: <3bbf2fe10802111248t40717349y5a571e1cfc09b877@mail.gmail.com> Date: Mon, 11 Feb 2008 21:48:14 +0100 From: "Attilio Rao" Sender: asmrookie@gmail.com To: "John Baldwin" In-Reply-To: <200802111431.00640.jhb@freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Content-Disposition: inline References: <200802081802.54313.jhb@freebsd.org> <20080209.160817.168016724.imp@bsdimp.com> <86lk5taway.fsf@ds4.des.no> <200802111431.00640.jhb@freebsd.org> X-Google-Sender-Auth: aaef23619d9b0edd Cc: =?UTF-8?Q?Dag-Erling_Sm=C3=B8rgrav?= , arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Feb 2008 20:48:16 -0000 MjAwOC8yLzExLCBKb2huIEJhbGR3aW4gPGpoYkBmcmVlYnNkLm9yZz46Cj4gT24gU3VuZGF5IDEw IEZlYnJ1YXJ5IDIwMDggMDY6MjQ6MzcgYW0gRGFnLUVybGluZyBTbcO4cmdyYXYgd3JvdGU6Cj4g ID4gIk0uIFdhcm5lciBMb3NoIiA8aW1wQGJzZGltcC5jb20+IHdyaXRlczoKPiAgPiA+IERhZy1F cmxpbmdfU23DuHJncmF2IDxkZXNAZGVzLm5vPiB3cml0ZXM6Cj4gID4gPiA+IC4uLnByb3ZpZGVk IHRoZXkgd2VyZSBidWlsdCBmcm9tIHRoZSBzYW1lIGNvbmZpZy4uLiAgSSB0aGluawo+ICA+ID4g PiBNVVRFWF9QUk9GSUxJTkcgaGFzIGJlZW4gZml4ZWQsIGJ1dCB0aGVyZSBtYXkgc3RpbGwgYmUg Y2FzZXMgd2hlcmUKPiAgPiA+ID4gdGhlIEFCSSBjaGFuZ2VzIGRlcGVuZGVuaW5nIG9uIGtlcm5l bCBvcHRpb25zLgo+ICA+ID4gVGhlc2UgYXJlIHVzdWFsbHkgd2VsbCBkb2N1bWVudGVkLiAgQnV0 IEkgY2FuJ3QgZmluZCBhbnkgaW4gdGhlCj4gID4gPiBjdXJyZW50IGRvYyBzZXQuICBNYXliZSB5 b3UgY291bGQgcG9pbnQgbWUgYXQgb3B0aW9ucyB0aGF0IGRvIHRoaXMgc28KPiAgPiA+IHdlIGNh biBkb2N1bWVudCB0aGVtIChhbmQgbWF5YmUgYWRkIGEgI3dhcm5pbmcgd2hlbiBjb21waWxpbmcg d2l0aAo+ICA+ID4gdGhlbSk/Cj4gID4KPiAgPiBIZXJlJ3Mgb25lIEkgZm91bmQ6IERFQlVHX0xP Q0tTIGNoYW5nZXMgdGhlIHNpemUgb2Ygc3RydWN0IGxvY2ssIHdoaWNoCj4gID4gY2hhbmdlcyB0 aGUgc2l6ZSBhbmQgbGF5b3V0IG9mIHN0cnVjdCB2bm9kZS4KPgo+Cj4gWWVzLCBERUJVR19MT0NL UywgTVVURVhfUFJPRklMSU5HIChPLkIuRSksIGFuZCBQQUUgYXJlIHRoZSBvbmVzIEkga25vdyBv Zi4gIFdlCj4gIGNvdWxkIGVtcGxveSBhIHNpbWlsYXIgc3RyYXRlZ3kgZm9yIHRoZXNlIGJ0dy4g IEZvciBleGFtcGxlLCB5b3UgY291bGQgZG8KPiAgdGhpcyBmb3IgUEFFOgoKTE9DS19QUk9GSUxJ TkcgYWxzbywgYnV0IG9ubHkgb24gNy4wLgoKQXR0aWxpbwoKCi0tIApQZWFjZSBjYW4gb25seSBi ZSBhY2hpZXZlZCBieSB1bmRlcnN0YW5kaW5nIC0gQS4gRWluc3RlaW4K From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 00:20:42 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD39316A41A; Tue, 12 Feb 2008 00:20:42 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from speedfactory.net (mail.speedfactory.net [66.23.216.219]) by mx1.freebsd.org (Postfix) with ESMTP id 2055B13C44B; Tue, 12 Feb 2008 00:20:41 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from server.baldwin.cx (unverified [66.23.211.162]) by speedfactory.net (SurgeMail 3.8s) with ESMTP id 231631448-1834499 for multiple; Mon, 11 Feb 2008 19:21:00 -0500 Received: from localhost.corp.yahoo.com (john@localhost [127.0.0.1]) (authenticated bits=0) by server.baldwin.cx (8.14.2/8.14.2) with ESMTP id m1C0KcZ3053780; Mon, 11 Feb 2008 19:20:39 -0500 (EST) (envelope-from jhb@freebsd.org) From: John Baldwin To: "Attilio Rao" Date: Mon, 11 Feb 2008 19:16:19 -0500 User-Agent: KMail/1.9.7 References: <200802081802.54313.jhb@freebsd.org> <200802111431.00640.jhb@freebsd.org> <3bbf2fe10802111248t40717349y5a571e1cfc09b877@mail.gmail.com> In-Reply-To: <3bbf2fe10802111248t40717349y5a571e1cfc09b877@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Message-Id: <200802111916.19765.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH authentication, not delayed by milter-greylist-2.0.2 (server.baldwin.cx [127.0.0.1]); Mon, 11 Feb 2008 19:20:39 -0500 (EST) X-Virus-Scanned: ClamAV 0.91.2/5779/Mon Feb 11 14:56:48 2008 on server.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-4.4 required=4.2 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.1.3 X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on server.baldwin.cx Cc: Dag-Erling =?utf-8?q?Sm=C3=B8rgrav?= , arch@freebsd.org Subject: Re: [PATCH] Automatic kernel version module dependencies.. X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 00:20:42 -0000 On Monday 11 February 2008 03:48:14 pm Attilio Rao wrote: > 2008/2/11, John Baldwin : > > On Sunday 10 February 2008 06:24:37 am Dag-Erling Sm=C3=B8rgrav wrote: > > > "M. Warner Losh" writes: > > > > Dag-Erling_Sm=C3=B8rgrav writes: > > > > > ...provided they were built from the same config... I think > > > > > MUTEX_PROFILING has been fixed, but there may still be cases whe= re > > > > > the ABI changes dependening on kernel options. > > > > These are usually well documented. But I can't find any in the > > > > current doc set. Maybe you could point me at options that do this= so > > > > we can document them (and maybe add a #warning when compiling with > > > > them)? > > > > > > Here's one I found: DEBUG_LOCKS changes the size of struct lock, whi= ch > > > changes the size and layout of struct vnode. > > > > > > Yes, DEBUG_LOCKS, MUTEX_PROFILING (O.B.E), and PAE are the ones I know = of. =20 We > > could employ a similar strategy for these btw. For example, you could= do > > this for PAE: >=20 > LOCK_PROFILING also, but only on 7.0. Ah, ok, I had checked on HEAD. =2D-=20 John Baldwin From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 02:00:28 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1E7EB16A418; Tue, 12 Feb 2008 02:00:28 +0000 (UTC) (envelope-from csjp@sub.vaned.net) Received: from sub.vaned.net (sub.vaned.net [205.200.235.40]) by mx1.freebsd.org (Postfix) with ESMTP id ED78613C455; Tue, 12 Feb 2008 02:00:27 +0000 (UTC) (envelope-from csjp@sub.vaned.net) Received: by sub.vaned.net (Postfix, from userid 1001) id 3033F1CD; Mon, 11 Feb 2008 19:40:57 -0600 (CST) Date: Mon, 11 Feb 2008 19:40:57 -0600 From: "Christian S.J. Peron" To: arch@freebsd.org Message-ID: <20080212014057.GA6027@sub.vaned.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.3i Cc: re@freebsd.org, current@freebsd.org Subject: sysv IPC and shminfo ABI X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 02:00:28 -0000 All, A while ago, I committed a patch which changed what was a kernel private structure 'shminfo'. In order to access this structure, you must define _KERNEL which suggests to me we should not be making guarantees about it's size. See /usr/src/sys/shm.h The change was incomplete, as the intent of the change was to allow us to use more then 2 Gigs of shared memory. jkim has some patches which completes the change, but they have not been committed yet. However, we do export IPC_INFO which can be used in shmctl(), and we pass this structure to userspace, which to be implies that this change can break the ABI, even though the user has to define _KERNEL to acces the structure. System V IPC is tricky like this. So I guess I have a few questions: (1) Is struct shminfo considered a sys V standard structure that has a predefined size that should be maintained across all architectures? (2) Is this an ABI breakage that we care about? Usually whether or not we want to break the ABI is clear, however in this case I am confused, because we offer IPC_INFO, implement it in the kernel, however we don't expose the details of the structure that shmctl(IPC_INFO) will export. I've done some pretty extensive searching and I can't seem to find any FreeBSD code which implements this. I know that this is late in the release engineering cycle for RELENG_7_0 to be bringing this up, but I want to make sure this isnt going to be a problem moving forward. As I see it, we have a few options: (1) Back the change out now before any damage is done (assuming we care) (2) Apply this safety patch to RELENG_7 and RELENG_7_0 http://people.freebsd.org/~csjp/sysv_shm.1202744975.6_abi_fix.diff (3) Leave things as they are, as we are going to be getting support for large shared memory allocations in the future. (This is why I asked if the structure supposed to be a standard size). I apologize for this, I understand this is probably the last thing we need before the release, but I just want to make sure that we are doing the right thing. From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 05:10:21 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 47B8D16A417 for ; Tue, 12 Feb 2008 05:10:21 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 2FC4413C465 for ; Tue, 12 Feb 2008 05:10:20 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1192) id DE5A51A4D8C; Mon, 11 Feb 2008 21:10:20 -0800 (PST) Date: Mon, 11 Feb 2008 21:10:20 -0800 From: Alfred Perlstein To: "Christian S.J. Peron" Message-ID: <20080212051020.GO99258@elvis.mu.org> References: <20080212014057.GA6027@sub.vaned.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080212014057.GA6027@sub.vaned.net> User-Agent: Mutt/1.4.2.3i Cc: arch@freebsd.org, re@freebsd.org, current@freebsd.org Subject: Re: sysv IPC and shminfo ABI X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 05:10:21 -0000 * Christian S.J. Peron [080211 18:00] wrote: > All, > > A while ago, I committed a patch which changed what was a kernel private > structure 'shminfo'. In order to access this structure, you must define > _KERNEL which suggests to me we should not be making guarantees about it's > size. > > See /usr/src/sys/shm.h ... yeah but... > > So I guess I have a few questions: > > (1) Is struct shminfo considered a sys V standard structure that has a > predefined size that should be maintained across all architectures? No, that's not required, what is required is backwards compat. > (2) Is this an ABI breakage that we care about? Yes, if it's breaking people, then yes. for ia32 in particular. > (1) Back the change out now before any damage is done (assuming we care) > > (2) Apply this safety patch to RELENG_7 and RELENG_7_0 > > http://people.freebsd.org/~csjp/sysv_shm.1202744975.6_abi_fix.diff Honestly I was going to suggest all this cruft to "get it right", but this patch looks like the most simple, most correct thing. I think it should go in. > (3) Leave things as they are, as we are going to be getting support for large > shared memory allocations in the future. (This is why I asked if the > structure supposed to be a standard size). Afaik there's no "standard size" in the API (I think shmctl->shminfo is pretty unix specific) but it pays to keep the backward compat. > > I apologize for this, I understand this is probably the last thing we need > before the release, but I just want to make sure that we are doing the right > thing. Cool. -Alfred From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 06:42:56 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD97016A419; Tue, 12 Feb 2008 06:42:56 +0000 (UTC) (envelope-from linimon@lonesome.com) Received: from mail.soaustin.net (lefty.soaustin.net [66.135.55.46]) by mx1.freebsd.org (Postfix) with ESMTP id 8A7F113C459; Tue, 12 Feb 2008 06:42:56 +0000 (UTC) (envelope-from linimon@lonesome.com) Received: by mail.soaustin.net (Postfix, from userid 502) id 2BC048C134; Thu, 7 Feb 2008 00:33:11 -0600 (CST) Date: Thu, 7 Feb 2008 00:33:11 -0600 To: Attilio Rao Message-ID: <20080207063311.GA6118@soaustin.net> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> User-Agent: Mutt/1.5.13 (2006-08-11) From: linimon@lonesome.com (Mark Linimon) Cc: Yar Tikhiy , Doug Barton , Jeff Roberson , freebsd-fs@freebsd.org, Scot Hetzel , freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 06:42:56 -0000 On Thu, Feb 07, 2008 at 02:00:41AM +0100, Attilio Rao wrote: > - Do you know a good reason to not use FUSE ntfs implementation? We just had a PR come in that claims the ports FUSE NTFS implementation isn't working: 120286 alepulve ports open serious medium current-us sysutils/fusefs-ntfs makes fatal trap/page fault in FreeBSD-7.0 http://www.freebsd.org/cgi/query-pr.cgi?pr=120286&cat= mcl From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 17:38:53 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B56C716A507; Tue, 12 Feb 2008 17:38:53 +0000 (UTC) (envelope-from csjp@sub.vaned.net) Received: from sub.vaned.net (sub.vaned.net [205.200.235.40]) by mx1.freebsd.org (Postfix) with ESMTP id 5923113C447; Tue, 12 Feb 2008 17:38:53 +0000 (UTC) (envelope-from csjp@sub.vaned.net) Received: by sub.vaned.net (Postfix, from userid 1001) id DE37B1CF; Tue, 12 Feb 2008 11:38:52 -0600 (CST) Date: Tue, 12 Feb 2008 11:38:52 -0600 From: "Christian S.J. Peron" To: Alfred Perlstein Message-ID: <20080212173852.GA27407@sub.vaned.net> References: <20080212014057.GA6027@sub.vaned.net> <20080212051020.GO99258@elvis.mu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080212051020.GO99258@elvis.mu.org> User-Agent: Mutt/1.4.2.3i Cc: arch@freebsd.org, re@freebsd.org, "Christian S.J. Peron" , current@freebsd.org Subject: Re: sysv IPC and shminfo ABI [solved] X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 17:38:53 -0000 After having some discussions with jhb, and reviewing the commit logs that introduced IPC_INFO, this is a non-issue. The whole reason this was introduced was to satisfy Linux compatability. revision 1.67 date: 2001/10/28 09:29:07; author: mr; state: Exp; lines: +45 -2 Introduce [IPC|SHM]_[INFO|STAT] to shmctl to make `/compat/linux/usr/bin/ipcs -m` happy. This was never an intented part of the FreeBSD ABI, which explains why the structure is not made available to the user. Although the size has changed, it doesn't matter, because the Linux ABI layer will prepare it's own shminfo structure as send it back out to the user. So, I am going to make shmctl(IPC_INFO ...) for the FreeBSD ABI return EINVAL, and I am going to add some serious comments around various points in the kernel explaining why things are there, and how they should never be exported. Thanks everyone for the input. From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 17:55:54 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2726F16A417; Tue, 12 Feb 2008 17:55:54 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: from elvis.mu.org (elvis.mu.org [192.203.228.196]) by mx1.freebsd.org (Postfix) with ESMTP id 126F013C442; Tue, 12 Feb 2008 17:55:54 +0000 (UTC) (envelope-from bright@elvis.mu.org) Received: by elvis.mu.org (Postfix, from userid 1192) id E97F31A4D89; Tue, 12 Feb 2008 09:55:53 -0800 (PST) Date: Tue, 12 Feb 2008 09:55:53 -0800 From: Alfred Perlstein To: "Christian S.J. Peron" Message-ID: <20080212175553.GU99258@elvis.mu.org> References: <20080212014057.GA6027@sub.vaned.net> <20080212051020.GO99258@elvis.mu.org> <20080212173852.GA27407@sub.vaned.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20080212173852.GA27407@sub.vaned.net> User-Agent: Mutt/1.4.2.3i Cc: arch@freebsd.org, re@freebsd.org, current@freebsd.org Subject: Re: sysv IPC and shminfo ABI [solved] X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 17:55:54 -0000 * Christian S.J. Peron [080212 09:39] wrote: > > After having some discussions with jhb, and reviewing the commit logs > that introduced IPC_INFO, this is a non-issue. The whole reason this > was introduced was to satisfy Linux compatability. > > revision 1.67 > date: 2001/10/28 09:29:07; author: mr; state: Exp; lines: +45 -2 > Introduce [IPC|SHM]_[INFO|STAT] to shmctl to make > `/compat/linux/usr/bin/ipcs -m` happy. > > This was never an intented part of the FreeBSD ABI, which explains > why the structure is not made available to the user. Although the size > has changed, it doesn't matter, because the Linux ABI layer will prepare > it's own shminfo structure as send it back out to the user. > > So, I am going to make shmctl(IPC_INFO ...) for the FreeBSD ABI return > EINVAL, and I am going to add some serious comments around various points > in the kernel explaining why things are there, and how they should never > be exported. > > Thanks everyone for the input. Hmm, sorry for the misdirection. Wouldn't it make sense to support the Linux API though for Linux management applications? I guess sometime later if there is demand. -- - Alfred Perlstein From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 19:26:00 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A28716A417; Tue, 12 Feb 2008 19:26:00 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (www.creo.hu [217.113.62.14]) by mx1.freebsd.org (Postfix) with ESMTP id B474913C447; Tue, 12 Feb 2008 19:25:59 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (localhost [127.0.0.1]) by beastie.creo.hu (8.14.1/8.14.1) with ESMTP id m1CJ28dF013175 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 12 Feb 2008 20:02:08 +0100 (CET) (envelope-from csaba@beastie.creo.hu) Received: (from csaba@localhost) by beastie.creo.hu (8.14.1/8.14.1/Submit) id m1CJ28qu013171; Tue, 12 Feb 2008 20:02:08 +0100 (CET) (envelope-from csaba) Date: Tue, 12 Feb 2008 20:02:07 +0100 From: Csaba Henk To: Dag-Erling Smorgrav Message-ID: <20080212190207.GB49155@beastie.creo.hu> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <867ihdc34c.fsf@ds4.des.no> User-Agent: Mutt/1.5.16 (2007-06-09) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (beastie.creo.hu [127.0.0.1]); Tue, 12 Feb 2008 20:02:08 +0100 (CET) Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 19:26:00 -0000 On Sat, Feb 09, 2008 at 08:59:47PM +0100, Dag-Erling Sm??rgrav wrote: > Csaba Henk writes: > > Userspace components are LGPL / GPL licensed, kernel components are > > BSD licensed. > > Are you planning to have both the kernel part and the userland part > committed to base? > > How much work would you guess it would take to reimplement the userland > part under a BSD license? Well, I just started to work on a from scratch FUSE daemon library. The story is as follows: I wanted to put together a FUSE interface to sysctls, and I started it from scratch (so that it shall be clean licensing-wise, and for the fun of it). Then as things evolved, the generic code was distilled out to a library I named "folly", while the actual work on the sysctl fs has stalled. As a proof-of-concept I also wrote an userspace nullfs using libfolly. So I think: fuse4bsd (ie, the kld + the mount util) + libfolly + sysctl fs could go to base under BSD license. It also might make sense to rebase ntfs-3g atop of folly -- although it won't help ntfs-3g being GPL'd. So for ntfs-3g aka fusefs-ntfs there is no choice just GPL unless the authors decide to relincense it. (Rewriting ntfs-3g from scratch is not an option, there is too much expertise and man hour in that code base to be worth to waste time on it.) AFAIK libntfs is also GPL'd -- I don't know if its developers have ever thought of relicensing it to LGPL, I can imagine that they would be willing to speak about it. The fuse library is LGPL-d (although license sensitive developers should be aware of the fact that the skeletal/basic fs examples which ship with it and are a good base for writing new fs-es are under GPL!). Anyway, these are self contained bits, so I don't see it too much problematic to put all the userspace stuff into base (YMMV, of course...). Regarding libfolly: if anyone is interested, I can publish a snapshot, although the API is a moving target, and commenting/documenting it / polishing the command line interface it offers is still on the TODO list. (It's a small lib so its not that much work but now that I hit the POC level, the priority is of fuse4bsd...) Regards, Csaba From owner-freebsd-arch@FreeBSD.ORG Tue Feb 12 20:11:35 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D01C316A418; Tue, 12 Feb 2008 20:11:35 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 8F86313C4DD; Tue, 12 Feb 2008 20:11:35 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 38B6C2084; Tue, 12 Feb 2008 21:11:29 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id A034A2049; Tue, 12 Feb 2008 21:11:28 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id 7BC3B844A4; Tue, 12 Feb 2008 21:11:28 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Csaba Henk References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> Date: Tue, 12 Feb 2008 21:11:28 +0100 In-Reply-To: <20080212190207.GB49155@beastie.creo.hu> (Csaba Henk's message of "Tue\, 12 Feb 2008 20\:02\:07 +0100") Message-ID: <86d4r2540f.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 12 Feb 2008 20:11:35 -0000 Csaba Henk writes: > Dag-Erling Sm=C3=B8rgrav writes: > > How much work would you guess it would take to reimplement the > > userland part under a BSD license? > Well, I just started to work on a from scratch FUSE daemon library. > [...] > So I think: fuse4bsd (ie, the kld + the mount util) + libfolly + sysctl > fs could go to base under BSD license. It also might make sense to rebase > ntfs-3g atop of folly -- although it won't help ntfs-3g being GPL'd. That doesn't matter; ntfs-3g can still be a port. What does matter is that if libfolly exports the same API as libfuse, we can have a complete BSD-licensed FUSE implementation in the base system, with minimal effort required to port FUSE-based file systems. DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 09:04:00 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A768616A417; Wed, 13 Feb 2008 09:04:00 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id 765A113C468; Wed, 13 Feb 2008 09:04:00 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id 7928846C53; Wed, 13 Feb 2008 04:03:59 -0500 (EST) Date: Wed, 13 Feb 2008 09:03:59 +0000 (GMT) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= In-Reply-To: <86d4r2540f.fsf@ds4.des.no> Message-ID: <20080213085903.U13849@fledge.watson.org> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="621616949-1602308289-1202893439=:13849" Cc: Csaba Henk , freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 09:04:00 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --621616949-1602308289-1202893439=:13849 Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE On Tue, 12 Feb 2008, Dag-Erling Sm=F8rgrav wrote: > Csaba Henk writes: >> Dag-Erling Sm=F8rgrav writes: >>> How much work would you guess it would take to reimplement the >>> userland part under a BSD license? >> Well, I just started to work on a from scratch FUSE daemon library. [...= ]=20 >> So I think: fuse4bsd (ie, the kld + the mount util) + libfolly + sysctl = fs=20 >> could go to base under BSD license. It also might make sense to rebase= =20 >> ntfs-3g atop of folly -- although it won't help ntfs-3g being GPL'd. > > That doesn't matter; ntfs-3g can still be a port. > > What does matter is that if libfolly exports the same API as libfuse, we = can=20 > have a complete BSD-licensed FUSE implementation in the base system, with= =20 > minimal effort required to port FUSE-based file systems. Has there been any work to add more mature interfaces to fuse over the last= =20 couple of years? When I looked at it previously, and that was a year or tw= o=20 ago, fuse didn't work well with our notion of "referenced" vs. "open" vnode= s,=20 and required explicit data copies from cache files into the kernel to be=20 exposed via fuse. These are both areas where nnpfs, the userspace file sys= tem=20 framework for Arla, does much better, as they offer improved handling of=20 memory mapping (which persists after file descriptor close(), as in execve(= )=20 and with shared libraries) and performance (no need to feed data for files = to=20 the kernel, you can just point the kernel at a persistent cache file, possi= bly=20 cached from a previous session, allowing normal faulting of cache data into= =20 memory rather than requiring that pages pass through user space). My=20 understanding is that the NetBSD user space fs work offers a more mature=20 back-end interface than fuse, but allows the less complex fuse API to be us= ed,=20 but I've not done any detailed reading. These are areas where I assumed th= at=20 over time we'd see functional improvements in fuse, so I guess I'm wonderin= g=20 if that has happened? Robert N M Watson Computer Laboratory University of Cambridge --621616949-1602308289-1202893439=:13849-- From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 13:04:40 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6DA9F16A418; Wed, 13 Feb 2008 13:04:40 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from falcon.cybervisiontech.com (falcon.cybervisiontech.com [217.20.163.9]) by mx1.freebsd.org (Postfix) with ESMTP id DEC7213C4E1; Wed, 13 Feb 2008 13:04:39 +0000 (UTC) (envelope-from avg@icyb.net.ua) Received: from localhost (localhost [127.0.0.1]) by falcon.cybervisiontech.com (Postfix) with ESMTP id BEA1243F36C; Wed, 13 Feb 2008 15:04:37 +0200 (EET) X-Virus-Scanned: Debian amavisd-new at falcon.cybervisiontech.com Received: from falcon.cybervisiontech.com ([127.0.0.1]) by localhost (falcon.cybervisiontech.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fnqWw7irepm9; Wed, 13 Feb 2008 15:04:37 +0200 (EET) Received: from [10.2.1.87] (gateway.cybervisiontech.com.ua [88.81.251.18]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by falcon.cybervisiontech.com (Postfix) with ESMTP id 3498343F366; Wed, 13 Feb 2008 15:04:36 +0200 (EET) Message-ID: <47B2EAE3.3010600@icyb.net.ua> Date: Wed, 13 Feb 2008 15:04:35 +0200 From: Andriy Gapon User-Agent: Thunderbird 2.0.0.9 (X11/20080123) MIME-Version: 1.0 To: Bruce Evans References: <4299.1202816854@critter.freebsd.dk> <20080212234018.O92415@delplex.bde.org> <47B1A631.1000504@icyb.net.ua> <20080213015738.L24074@besplex.bde.org> In-Reply-To: <20080213015738.L24074@besplex.bde.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: freebsd-fs@freebsd.org, freebsd-hackers@freebsd.org, Poul-Henning Kamp , freebsd-arch@freebsd.org Subject: device/disk vnode use by filesystems: vfs_bio, geom_vfs X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 13:04:40 -0000 I changed Subject to reflect more general discussion than what we originally had (UDF specifics). I also CC arch, because, I think, these issues are core architectural/design issues. ufs/ffs is quite a complex beast, I don't pretend I understand its internal workings well. on 12/02/2008 17:58 Bruce Evans said the following: > In fact, ffs already overrides the setting of bo_bsize for the device > vnode to a different wrong setting -- g_vfs_open() sets the sector size, > and ffs_mount() changes the setting to fs_bsize, but ffs actually needs > the setting to be DEV_BSIZE (I think). Latest ffs code doesn't seem to do that. It calls g_vfs_open which sets bo_bsize on disk vnode and that's it. The code does override indeed bo_ops from those that were set by g_vfs_open. What you said is done in ffs_vget, it assigns bo_bsize=fs_bsize for new vnodes for ffs files. > Other bugs from this: > - ffs_rawread wants the sector size, and it assumes that this is in bo_bsize > for the device vnode, but ffs_mount() has changed this to fs_bsize. In the latest code this is not true. bo_bsize is underlying GEOM provider's sector size ("device sector size"). > - multiple r/o mounts are supposed to work, but don't, since there is only > one device vnode with a shared bufobj, but the bufobj needs to be > per-file-system since all mounts write to it. Various bad things > including panics result. There is a well-know panic from bo_private > becoming garbage on unmount. I agree. Here's another example (more familiar to me) - many DVD disks have both CD9660 and UDF fs structures referencing the same data. mkisofs can also produce such images with -udf option. In theory, there should be nothing that would prevent simultaneous RO mount of such a disk via both methods. In practice at least bo_private would be overridden by the second mount. Well, even two simultaneous RO CD9660 mounts of the same device can/will result in a problem (at least one umount). I agree that this is indeed an architectural problem. Concurrent filesystems using the same device should not fight over its vnode/bufobj. They should get their private structures, but I have no idea how. > I just noticed more possibilities for > panics. bo_ops points to static storage, so it never becomes complete > garbage. However, at least ffs sets it blindly early on in > ffs_mountfs(), before looking at the file system to see if ffs can > mount it. Thus if the file system is already mounted by another > ffs, then ffs clobbers the other fs's bo_ops. The ffs mount will > presumably fail, leaving bo_ops clobbered. I agree. > Also, a successful > g_vfs_open() has clobbered bo_ops, bo_private and bo_bsize a little > earlier. I agree. > g_vfs_open() is fundamental to looking at the file system, > since I/O is not set up until it completes. Clobbering the pointers > is most dangerous, but just clobbering bo_bsize breaks blkno > calculations for any code that uses bo_bsize. I don't think there is any current code that uses bo_bsize for this purpose. > Apart from these bugs, the fix for the blkno calculations for device > vp's may be as simple as setting bo_bsize to DEV_BSIZE for the device > vp of all disk file systems (since all disk file systems use expect > this size). Currently, ffs seems to be the only file system that > overrides g_vfs_open()'s default of the sector size. Nothing in any > of fs/, gnu/fs/ and contrib/ references bo_bsize. It is the first possibility. And I actually currently run a system with this patch in place and do not see any regressions. Another possibility, which requires more changes but is more "elegant" (in my opinion), is to keep bo_bsize as it is. Instead, always use non-adjusted block numbers in bread*/bwrite and modify g_vfs_strategy to set bio_offset to blkno*bo_bsize. That is, filesystems would not have to hack block numbers via shifting them by (bshift - DEV_BSHIFT). In this case the code should be very similar whether you work via a device vnode or via a file vnode. This is because filesystems already pass logical block number when they work via a file vnode. > > Yes. They can set it more easily as they can tell g_vfs_open() what to > set it to. Except, until the bugs are fixed properly, g_vfs_open() can > more easily do tests to prevent clobbering. For bo_bsize and bo_ops, > sharing a common value is safe and safe changes can be detected by > setting to a special value on last unmount. For bo_private, a safety > check would probably disallow multiple mounts (since cp is dynamically > allocated (?)). I agree. We either should prohibit a concurrent use of a device vnode by multiple filesystems; or should have some reference counting - maybe this would work for multiple mounts for the same fs type; or design some way to have that data private to filesystems. One tough thing here is a lack of encapsulation: g_vfs_open can make its own changes in v_bufobj, then filesystem code can modify it further, so there is no single point of control. The simplest solution is to disallow this practice altogether. Another approach that comes to my mind is some kind of vnode "cloning", so that each filesystem has its own device vnode. This should work for multiple RO mounts, maybe with some resource usage penalties. RW mounts must be exclusive of course. -- Andriy Gapon From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 15:05:10 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C0F8416A418; Wed, 13 Feb 2008 15:05:10 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from palm.hoeg.nl (mx0.hoeg.nl [IPv6:2001:610:652::211]) by mx1.freebsd.org (Postfix) with ESMTP id 7C5E513C4EA; Wed, 13 Feb 2008 15:05:02 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: by palm.hoeg.nl (Postfix, from userid 1000) id 9158B1CC76; Wed, 13 Feb 2008 16:05:00 +0100 (CET) Date: Wed, 13 Feb 2008 16:05:00 +0100 From: Ed Schouten To: FreeBSD Arch Message-ID: <20080213150500.GH1340@hoeg.nl> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="cf0hFtnykp6aONGL" Content-Disposition: inline User-Agent: Mutt/1.5.17 (2007-11-01) Cc: Wojciech Koszek , Remko Lodder , Robert Watson Subject: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 15:05:10 -0000 --cf0hFtnykp6aONGL Content-Type: multipart/mixed; boundary="xHbokkKX1kTiQeDC" Content-Disposition: inline --xHbokkKX1kTiQeDC Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello everyone, Some of you may have already seen some messages on the Perforce list that I am working on a new branch called `mpsafetty', which will be primarily focused on removing the Giant lock from the TTY layer, but will also be used to perform a lot of architectural changes to this part of the kernel. The last couple of days I've been working on a document which describes the changes I'm going to perform. I have just finished this document, so I'm sending it to this list, so you can give your opinion on this matter. As stated in the conclusion of this document, I am willing to continue development after I graduate. Unfortunately I don't possess all hardware supported by the TTY layer, which means I could use some help after I finished by internship to bring back support for the remaining hardware. I would like to thank the FreeBSD core team for offering me services to publish my work online, but also the people at Snow B.V. for sponsoring me in this effort. Thanks! --=20 Ed Schouten WWW: http://g-rave.nl/ --xHbokkKX1kTiQeDC Content-Type: application/pdf Content-Disposition: attachment; filename="tty-redesign.pdf" Content-Transfer-Encoding: base64 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 OThdCi9QYXJlbnQgMTYgMCBSCj4+IGVuZG9iagoxIDAgb2JqIDw8Ci9Gb250IDw8IC9GMzMg NiAwIFIgL0YzNSA5IDAgUiAvRjM4IDEyIDAgUiAvRjMxIDE1IDAgUiA+PgovUHJvY1NldCBb IC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMTkgMCBvYmogPDwKL0xlbmd0aCAzMjQzICAgICAg Ci9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42rVaW3Prxg1+z6/wW+iZY5b3S96S Jm7TSXMytZNOp+nDilpZjClS5cU6+vfFB2ApyqZPpjPtiwlhl3vBYj98AP3N4xd/uI/jm9Iv syi7edzd5NFNntLPKA9vHrf/9Crbj6Zub++iIvTsi23Hwb+9i9PYe9zXg6grMw2W5cAzomq6 UYRuJ8/ebqd2a9pRulXd1t7+6/EvN8HNXRj6ZZpGPN2pHvc8W154496KsLUvdeXkvn6xPa1B X44CPwiSnF/+mhYWx97GjqPtISfe0DXTWHettJy6qdm6TvKsd9KRJ4Pi8fYuLL3Hf8ivxpxl KPfyyppNRZtKgsQzgz7xiL1d37Wjbbcf6Gec8takfd91z66rvnrsuyMmwntNVxmsebieTM7j tK8rGiZKIs+2ZtNYkWcTJaEzkTSMnTyPzfSkmr2texG7Uyuv7Ka2ulvbG9Zhmno809KS1Ktb jJckmdgLqou98EvsFYahh10XOb0xjNZspRXOgOepN8dj3T6tWrPvyFHksOuRz5lcNL2Z++zw RhL5aSmn/rfbOPfszva2ZQuU5JA0xIjx+Re7KT0P9TDopK+cHn5U+FGQxTzixxbjFIk6b6ye WMBLaIDByWYUaW8G6ddb0zRnUVZ70z7ZrfygeXltOtbKtofR9KM4CluJnmJi8s373tpv2MwP 30oTuctvthph4zzhDcoLRoeg+9gP8nLbnczq0W7NGcsOYa62tXBi/DBsfBK29XDdIA+52aHe bPRj19Oh2N3wZCdb8d/hTP5wGAAhicwVp6lnPx15Hijp1YNoMRg0p65/Fg3uUDdpx95uum5c 3RuffZwV3q9BEPUDudFdFubex51oyT/6wZL14jLyKjq1cX6htScI5RIHsuKySfwgOFm7Kowg UYI547OI9dB+idVGMcwHDZ0cXdqD/BBIgDS/XE09ObK+Ux+O1Ne2d2uWHBkkaGd5GHs/t7uu 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 oPhZGY4gGVlsqLmcRsqNNlIea9stI1KmtWMeoetXkwxCuTtHQyWaxuZp+H8cfemo6IIEI0AJ rQtpA3PKcqm5SyEsSd7mSFoFkaUnWS5WgcAchp6DhWNlmaY8rwEQ9zl1nOzHn3/4YWUfUeqn eZAuCBcGtq2UwSC3qkO4cDQsTP0kTF/FGRdL0khrAZF+PUIodPaA0jk/ZA41EJ46QYRIUi28 s1k9z8qAr/srqQrdA7+MUuSyqZ9ngfT/th6YoGlyUvfyoeNVotLKvUHKwp8J3i2/XdKUv3YS pEsJ0mmgdzJZUiioL9/sFnUENPBU2uC+1iHfka915cx7X1lAPStIeNXgozlZS52QtCduTb0T f4VNpJLHmhlqrj5GrkzRL76z8Vfc+TtbruUPqPE1QKSrrw/oI1/UgqsUdmVD4bwhrlvnOS8+ DTPvwGVr5OhSm4Uk3kTCE3LZutIc/hIa6JcAIEZ4p+hA1pWqZ8aLXFRMswt/IaWmA5eKZqbn BYMTYXBxlfQnc74M9Pk6RzjnJVGgF5pUPcUkcAvIAiFheYEQ6ulyE1Lv+u5w6blizfm9INbc QWSXQUA+qbPENPKm255FZqAKQA4EqAKXigbxdYnp9RfGxXd7054Ra99JMdhioas6xmFC8W3o RMefj0Q00upOhrotkhJ0pRlFuiKx4Xs164266cH0z9Y5L76rVR/kvxY2VmdHC016FrUsEzrh fpA4nNKTfGHo1umwflTYqEkEsbTGM41DvbWfLfTAQfz1UowAm1T/v95uFbusglv/ua/jjj/8 Lq65xXzJZTyKNhSDK/keiFqeWAINlHhZLfyZ9qmx2p/LMqRTDg0VL2z16utqeddIrvWLiSbs SyuOvano8L6SEJT7eRqUtG4KcoWUOCO0fPHd4xf/Aa2pb4llbmRzdHJlYW0KZW5kb2JqCjE4 IDAgb2JqIDw8Ci9UeXBlIC9QYWdlCi9Db250ZW50cyAxOSAwIFIKL1Jlc291cmNlcyAxNyAw IFIKL01lZGlhQm94IFswIDAgNTk1LjI3NTYgODQxLjg4OThdCi9QYXJlbnQgMTYgMCBSCj4+ IGVuZG9iagoxNyAwIG9iaiA8PAovRm9udCA8PCAvRjMzIDYgMCBSIC9GMzUgOSAwIFIgL0Yz MSAxNSAwIFIgL0YxNCAyMiAwIFIgPj4KL1Byb2NTZXQgWyAvUERGIC9UZXh0IF0KPj4gZW5k b2JqCjI1IDAgb2JqIDw8Ci9MZW5ndGggMzU0MyAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29k ZQo+PgpzdHJlYW0KeNqdWllz5LYRftev0JtnXRaXuHg4T/Y6TtblZJ1IlUrK63JBHIyGEYec kBzJyq9PHwDJoSDtOg9TbIAgjj6/bsy3Nxdvvxf6skzKTGaXN7vLQiCZX+YG+mQuLm+2P28+ piJ/88vND2+/V2ox1lMpjbnZu6c3V1mmN8O+OzVbpu+dOyJlNmNvq3vufNy7ce96bozTd7Z3 uAjMdyVgF8ZImrg7utbBdDIvNl3Pz7YbE97Q2eavPHklyiTT2e/aPE988wa+3dz8i1sH+8TE 3j74AfbWtttu2tCtH1CPAxPbvn6AowkhNp+xQ/nZO7x2w1B3Layipdz0bof8Q3Ls+DnvHFtb 91BXbjgfcnT9rusP3LDVVYzbVXdqx7q9g9MYsYGzMoFTSJNuhvqutQ33HfsOlhhwFWyCVFs/ mLiJo92wWoRFgidhdjXObp0X6rA/BS4CO12z8xztHltiJTGtlEadc49kV8DZq1Pfu3bkRn04 Nu4ATTvSYthnmx6We8JGEZgxxJgwdAc8QQHytUNdIVkyz11b+TcLRkGLzlOc6Q984qXwFbTK dHN7GqPM4MXwpLa9c3138kwY6vFEu/dttA9+MdZNw+SxdwMc8uuIqpVsyL9b0963Q711fpRY jFIi0Vlh/DCQ7dC7xn1MTQo/EZnWyESlSvsPgAum1KwcRqUbOCjwjxqoMnZkauts03SsNleF SvJclCsVtSPpnM5oE8gg5LCRXvG0AbFV90t5wdBd3x2YmkZNwopIhWymLP120zQsxb3D2J+q 8YQCwWY9tF+MPKwCje7dFg9r0NPV1T6mYeRZkAuVPQ2eIUfb1tXg+dFx394ej2hWSLOBEetO bYuq91xGa0UexycUkHhBQipLMiGDhKIOS2eJyYEpn+1T8+CxSK+VSL0ZeJr8IwpMAe+b+t73 E5+R+AmNZx7p6Q4ZHOEjMU+lXq2QcL/VwxhnTi4SAUP8/oA1d+DIX9PfNBFpWvjxdTuCy7BV WLDjZ++OXT96/yRFIpWQ53tk3dbK8CaRONhhJAcOdOAO0ns7MHHrUNZa6TngJDE1fQ8zqyzn D5GgQIQEeE0kinnfyHNwSqyTNAZ09d4PD7bwRZinjbG7PR2iDup1/2xHnDVPce0nJiw/WvfI xMJYsTk71zyFdao9uPKoo/ZQg0JxiNDHY1OTBWLrNLCPBnIMQX7XgYd5nPp3p7aiU3zaiz7T fvGSFwXtAu/4K3qNVzQsL5Nci/BNOI0QeUnHIaICf+hCL3mx50tfhYnOufMZLrpMTCHCnkGl c3AvwBxUzlz5UI59SwFBPwmIhe6nOMds6KgKr/CmyBZxEbsJVmB37w7dgzsbu3beL/jmTHrf nKmFb8beyTcnsKYC7/zXbnThA7RE/2kcbXpXnqkcdDQSA02iy5lhKOTdp4Sc5UlZajOHwVxm IF7v+XGlpfFlKiP+sEGlCtaTEbkyLFAeNhPR1O09KgrSY3fnMTa19mC0d/vQ8OPrrhqb12II c/vm/Yd31+9uOEyujqbzJAV1eC1+GBiizMs45FMW9AkfnaPHzfTKgpQ0ZEAKOB3sB/sYBGAv c0Gi+/VYI8x0xmrvmudwxMD+KteAuPf1wO+CB+FWZT3Rtc0TU7cuvKK9RHS6I9NSmdx0O3yS ifUDKrEpc78Wdj8S9sOB3kyR9DIVmxfsZoHt/SIUHFT4cJk+YDcZKHaf2sGN89DnIhOAD6QW ZhYaxLPhMaYrYDpGBenaIYQMkWSlEWvcAhhvO0HchxpiDvBSQDz8f/K+13Vs94p6EfqZIIC3 y9WMEPTTLCvO1Pazpxz2FuWpcxNgvc49iOHe2RcInci0WCmoVwfAmqTvxiAk2nIP6x9Sj/W4 r1umWeTGLEUO3Y19Im0yHtrA026jKeK/T7g3qSe8Lc9yI2h6RUPSZ4XYube9rQj2gMIE2BMx hbbbunXKsywCcFIKRNV0Q8BFL2EPNBspss3B2daTfksiZAIiO9s/NMP+gdz23dF/RzkwPP8L EOirGGO8MWUz4AXaI7MA6bBrUUPAJtYQ8Dl/HpBvNot/xaNF7q2E8oFNCe0BsQiWDQSyE6Gf lBP0g3GYZD0Oq6H3ro9KvHU+3SQWIPKzO9f40gcIa+y7pxXGOi+kTCKb6ySeRVzNgTm8XStz HolUmSjI3Wkbf38DsdIjBgnkcAfGhmSG7oS6LDePp9uG8nboAlbd9fZwYLwHL2cg/9w4YUWZ J1luaMFvjrYfvYunyKGFh0TY9dOH6/f/jLnEVAIiKiYf4/pD3Q0xT5AmeZrmz/MLnP2jlBkv OCeRV0KrRBalWifEqFiKwww+vQvAHtQtwGsEiqtQTcA3ZOSYgO6x6sC05ceD7Ws3PnEDwlFE I4Ax9uBgwyHb2PHTsgYvo0m+MIfcHwspr+755vveuW/pg+vv+HPQQ1S5WLFkLn1MFZ5hpXqN u7PVU0wwooB0dypgkPY8l4oswJEItZYKu5lCJWkhi8vMFABrSmbGN82hG8j+BDEAHk/O9r7j DhktwPi6/p672CUAcevuTi2TJA54HixnxGJDcYGIY9QolwLV4M7Rv2uTrdiJb356Y8QGklQ/ kFwEEqzJOIA02c8yPnMCzPqQQma8lNJYjqXiHZK0f3ge4XDOvz2N/t0+9BA208WSq1cGQxH6 6cgZmWeyVBvy4/C0ntdIf0xT2dbD3m3/gLl46lE9jwtEA26SKXCSLVMGH3JzJJ5Elm3cjsRZ 8ElFOAIQoG81AW7g7wicDq+t/8ArKJJBlEVwygWbCY0nOEcLRJl9pnTolABjwPC54InrU/as IsVOJdMZCmPhc/TlFmcHT4bNlQHXPSu708cmO6t7GCwM2ApDT33bOB7A8RTfVd3hWDfkaPEF 7w+I2zp6yBb9DNXuNIMO9M68MaQGqq8hxaZ95rqpSY4PCfcAhz+BxfhwcBs9EmebPhL5euDS cQyAuENMqiAmRbn/DbyXoOd2xFAqIZckc8a+qb6MvRzusRu4cqhHxrOYenbczcsCAeYJJ8Bq dBy2o5oRk6baDUMuPMywAmLLYg9+gDVnehEcJ44ZGIHdgij7p5hgUI6gSiBhtM88DekHYEJ/ bmXUrGFAM/hUALP6Oxf66MIHKThy5Fzv/nHNsIPdIeyxI+WdehRYKCsa4RcxJ82MWmo/6jFo esiJXsJmpBq2B63rvWKR0pkAadVckThTu2D0ERWsW57hmRUxJ89ky2Wq3rbVfkY70yYJfEBy kJalpm8h1IMbT1NfE5WleAZdVmBJlkkuC8Yuf+FjwEfAxPo3/ODijzcXmKunl+ISEoAEwIW4 1AXWgOGj6nDxn4uff0kvtxfp5Q8XaaJK6H2ERpqIEkLd4UImZVEUod1cXF/8bZrwaprxajnl t3jDeLZPBaFTlWU5rxxu+Y7jlDaF03ZMsSSAmJHBKmpDGEnyAtIqzwS9dJVivhvChi8xi+d+ E/pwC7fduI/hh1wBsFMBQLwFXPP2OD59GdvONPZMC19IINMkNfp81uHtl5+8UWFOqRxM8bTb MRaDhi9y5AHYAwEYGKxo6qV4AJT1lQ+Y1eR6fUeHzImVwNKkLHMZUBTw7pVkV+kkFSZAXLol w5IVPgzg/pYSXRIM9k9JAV4Ss7/CFMi7VdprZmBCub4RggEjaYgOqqL8ZHT3VlCA4Pf1bjUO HErPXezIgWg7Dzpa3BuqRsyjdKHC7EJuEw0YH1q6DYV41jUn1jNseaeF5K0fwJesEALZdM0S R2MLc7bKhikM20fE6SAGLcCdPgFrD0xXjCYLSAcBt8eUsNSJ0TqUJchn/Loyykj1DXyUnD4C Xuu0mLJMWIyEyJlLlid5VmbriDyeejS8EIaRYPOk63e+JVF5uEqFcJThxV0YOo8oogWFZY1E QqoBAYRvWzEL567BHV3P2oPpCUDKBnKf49Q2KV9S4SdDV927kRBLVm6O9RHRS0QAbqyQYQmC XRP+XJBNu5V5vsh/s7A/6G27kYlb/+qh9kALOynW5FRe2A1J7KQ3DIB1qinK4xN1WadgbA7j Mvbs8F8Umq7KUMyI1nS4QUNiupxK9cT2yFofuL4MXhydN7CQZ4ImK97ADeYeUj/W7ek3Jvk+ j0jaRLzMv3ceobma1lr8qWId+bRORJpxmeDDEU3ENl9zSXRy8hxB7iD+jutIMxXIKexgXfwV pU/PY8w7Di1NLOOEdF3LLPjK9dKRikCJ/n26cSRcqecTMIRc1POxYfkxuNEXskuZ5KsKwamm L7NlHYA7AqLEQjlVAgZueHSa4T0iRJZ9ffRNdJ/SvJQ1DA39U4by++6srJWDsduGu9jlYt97 n/GH+sFUA0OHxYlElodqF1q/SPHOM6ItAQSmgsFoKskPQrNBo8I23s23tDL0YhzAzkfH7el7 udQYfDO+kJzW7Sp/YHASDQLvw5RsJPQvBLJQzWaNPfz5cOQSkPaXujr8YwEJu32wbbQaMFoq 4qRZCO9pPv1ZB3tBttuGIQK8eWT7wxfMrHxjAUFUI5ZTr7RaFLee5QaTul+ZQnClfmC6Hv0z tFfwyhT4XwCIKVvXRm/zpz+GqXC7h8T0RxEsR925ltz1EMNnCtCzKAM8un7/p3d//vG7T/7t ga68ZRnyWKBCUg4oTiYZyvD8Uqi7p/tlBcGOEixSGnqqpR4FPWzBhfZ+1M6P8q+4dJfirc8u jAld9SGaNZ/zlBXQjuG/Uo7vL7kR0lpfIocIbNKSvFdR5OwsVUgM/geYiba1ZW5kc3RyZWFt CmVuZG9iagoyNCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMjUgMCBSCi9SZXNv dXJjZXMgMjMgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzU2IDg0MS44ODk4XQovUGFyZW50 IDE2IDAgUgo+PiBlbmRvYmoKMjMgMCBvYmogPDwKL0ZvbnQgPDwgL0YxNCAyMiAwIFIgL0Yz MyA2IDAgUiAvRjMxIDE1IDAgUiAvRjM1IDkgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4 dCBdCj4+IGVuZG9iagoyOCAwIG9iaiA8PAovTGVuZ3RoIDMzMzAgICAgICAKL0ZpbHRlciAv RmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjalVrbkuO2EX33V8ybNVURQxLgbfNkJ3aVk/hSzqRc qWxqC6IgiVmJ0BLkzE6+Pn0DRWkhe/0ybDQgXLtPnwbm66cv/vitKh6apCnz8uFp91DlD1UB xbzKHp62/159757t4zpvstV56LzrWW4Ptn3vWe760bG0tc87//ifp79Cn2rRZ/qwzoskU0VF XT4doEddqlU7DYPtRy789PQv0bqt1B+MZ8G7U/iJDKzLfIXDou5k3lscFcfJsqQpipzG8dMA v1IKWh7MGCRR0XAotKZnwfXHV5Y20sadbW+3LHf9VQfZyptTdNT/mu4ILUq9wtmrslh1I5df WKFX7WDNSB1DoeuTx3WZ6tV3PTeHEdzwypUg0xrwR246yk82NwPzSTlsDA2KZjW+nq1n0e34 C2fTtUEp+wFS6BXEyVsW/NQeWDL82U19u46tdexcb47d+PrmcQ3TWJkjLr1OZTSUwSqG7tkO ngsyMkit6/04TO24/IWPjUJGV9XQ5GT6bTI3qZJG5WxSvzzWaoUmkqUwCdje7SsX/OgG0dPJ oQDbvwWz68zRs+LlYPu5yoxdv5eeYrOZl1Zmqx5M9Q84/xz66GjXQHuypvcsvkhDsS38ieWD T8l8UUMmHTtQNrW0nj0PZbM3HWwcFpp4Czpx+M6VLRwLrYlbOtjm6D6TG+sCVjja4dT16Pca DHTHauoPFaEL0nbyhRk8d0e7x9Vho9AZ+pBoDvb+fiYCG8XDXEe4oYpEZU1NLVWiHtdZmqar Px87P/r5JxGk4V98d4K5XvDL7QdzOtFWCHDZYWda+7mQVTerJ5gB/EWoqusAVaAnO/Os7UbP yvZgBtOO6JWo30y7HTkC1iGeoNK7qGfhmcFW8sTqxcTyOqmySkN7aoYbEZl+ViZFWTXSygPC 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 EZ8kOnnJGKw/A4WT64VCNodeMcBFOOphc4mbRbiTiyfpFwscD5P/XFusMaFIMzGMLn7VqBLd NPraFq+T3yzPEtiK+hrZf3CCy+FaEcTw3hbQuzvBMSGo2u0bflM4mv9JTozG1s55wz1Yrxec Gjz3wqnBbRecGkrzWNwnNb+8uEAD8Hoc827OQCxBBasAab4WxwJfdaEkObm6PLjkSjJyJS9z eK1dNZDERfPtyLWhwls+y1dN4DyEeChjEvaRxZGNWdXy4gerk681/lVuqQz3iOaa5+Hx6U5a hpdqnP3iV3anJS/Ly5BNQ828DVigJy9UEgWkDg7yA3bEu6Go+vxQFC5l/zJfiNYFBKT3sQyh yBOdFYH5dw4vZPSdyx5ME7Iqn+/eARMiKQc4ja6DQxzfga+Ov3aBpJOymh80IA048XSRbPK9 M6xbN0le1DfXvXx8JSeDw3QeuQhwN9qPdA1TzGk3VoTXOxDZVMpgKpEDJpBDZBCHq+qlwzHV u+USgkUo0llGA9PvpRXhLOWapxH/yRu9SBZRzXdn6uZOi9o5roGw5S68IerHc7BW2bwefBeS awgUw1PRxi6ejLYs021reJHFdyUhK/chnzZWAPnFHo/R50KAKYj3+BalSgC1NJdXQy2vhn8n IHOct997O5w57j/OnfyzA0YUIslHa88sniYwnscM09nfhtXoC0au60Bq8VLNzAJ/6FUj1yln Cnrxis5XcJTj6kwMUKefvq7y/i0uNEtwbvNKgZf+y4CyPJAG+2HqOPkqIBHo5N8QaIkY8YG7 FRwaUB1CQ4x73oQGVVacDni+6xRoBe3mlTXh3g91ktpVfF1A17hRFkP7gBmuugn+jVyco3CU U6bC1r30LPEYzSIvAFKNKR+w3qfozcjNdv4W8hXIJgNKhanqQp5YUTAxcG0SsM/qgq7vcP4x FCwTlZfB18NdYZHKlSv03tJZbgMgZknWqPz2+WbHuTskAsgZhCU1IbtuliEfS8FqqMVAWfV1 88WL220ApDsRgsFBvJcBCv25X7zPIDCLf7sWbEyY5rpKqiJtwJ+apK4B/7FTjVVffPP0xf8B i8fxR2VuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmogPDwKL1R5cGUgL1BhZ2UKL0NvbnRlbnRz IDI4IDAgUgovUmVzb3VyY2VzIDI2IDAgUgovTWVkaWFCb3ggWzAgMCA1OTUuMjc1NiA4NDEu ODg5OF0KL1BhcmVudCAxNiAwIFIKPj4gZW5kb2JqCjI2IDAgb2JqIDw8Ci9Gb250IDw8IC9G MzUgOSAwIFIgL0YzMyA2IDAgUiAvRjM4IDEyIDAgUiAvRjMxIDE1IDAgUiAvRjE0IDIyIDAg UiA+PgovUHJvY1NldCBbIC9QREYgL1RleHQgXQo+PiBlbmRvYmoKMzEgMCBvYmogPDwKL0xl bmd0aCAzNzc4ICAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp42q1aWZPb xhF+31/BPImqMiHMhcNvkWOn5Eoix9pKnLJdLpCcJWGBAA2AS/Hfp68BQC52pVTlgYWensFg pqePr3v49v7uzXfGLPIoT3SyuH9YpHqROmjqVC3utz8v39WvVybOlv3eM1H7MxPl4Vj5g6/7 oi+b+itgKrc8y6hNIe/tykdh+WKzRypd3r9eqXx5/5/Xv95/v4gXK6Wi3DlN3yter6yJl7/E sSl2TPcNPHW+7Pqm9cw67z0sqJX+fdkxNUxM42vvt9Ihs3bHsua+pr3+uAofd0m27Crvj0we Tr3/FMG0WiXLe/oQss/FBYl8uW1hf61wadNI/H7q+sCqKvwSSFlNpHyz6b6//FY1m4+/xC6G n5I3pufiXGRtruBNWmi9nZlV5ZHNrJUxOOmp/sy0iYvyOM/CKw2eYrLEl5jiY4eDJUF8RUJb KRtHmYV5rjZx3pd4wBrkjGLSRqE89SB2pGgW7nvgI7jdQpxHxsZOFtSVDS7ePrN6Y6IkTfKJ UOgrBX9BjnH8rizeRLFK7fXJP7MaF2XGJjL/sb+8uBgVmUyHEwKdcc6AyqD8bCaKgnQqxgFE UXUNd586zyxWZmSJrIjZ8NptGoEeptdyP7ZN7zegbzoFo+w7JppzzcS26ItoUPYsilOb0nvf k5JaFS+r8qNnio7bKrXcnNoWTFv6QR3KeseNQ7P1FVi7tSYMvzI8aJ1LVvpb81rDaJ2zenk8 qzxFS66Zi6ZCX0F2WaMuIpu+gSyRoILVgXBtHIs94qCDL+puzp30+6JHBbaoFPgYzgHoA1ox El2PKyZyX5C/AopEiQSJEglcd4eOTpvl+iTzwvouc18+sA/QirbtdLxkY8SNI5c3jvxBvMim 7SJ3FCm2mvXveMYzQsV5yPmmpMTgYPOl/1Sgcxb2IFjsYsEiJR4dRtd9e2Hy2EB/x3TzMC9Q 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 82WvzGhRUk3w89shKf3hm5BOtdszZO3PIxcnf12bUQF0nC6c2htY6ptj380VGlWUWR3Of9X1 l0om/iGE6lB0QqaEHGSvZVzAZ6ssiRJ7c9UtsdPiHzkodiIl+X26/OjbmmpYaaJ5R8glc0Ji +gecwVVhx9P/4oSjpn9kpPHywRdynZDyP7bSOMQexTtDTtgZMuVWEbija8WXKN58NRvZ5W9O ffg7FOuNFdFd/0EqG12PZVWQf0gJp6yvJksJTs/fdx/8l4TLd5P6I8TCddGVm7kgKZLqPh8n /73nImEo0ABBO7bZgOiRR/9bhGc4eiALvMVDjGeotocsPmR486UiZZh1sHabWpIdcgYE4bdY BYWIQtci0NNwPQ0HU9EIHaWne5LUjv/NgDADIsVacpalOX3PhWrifwGV8So/ZW5kc3RyZWFt CmVuZG9iagozMCAwIG9iaiA8PAovVHlwZSAvUGFnZQovQ29udGVudHMgMzEgMCBSCi9SZXNv dXJjZXMgMjkgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4yNzU2IDg0MS44ODk4XQovUGFyZW50 IDE2IDAgUgo+PiBlbmRvYmoKMjkgMCBvYmogPDwKL0ZvbnQgPDwgL0YzMyA2IDAgUiAvRjMx IDE1IDAgUiAvRjM1IDkgMCBSIC9GMTQgMjIgMCBSID4+Ci9Qcm9jU2V0IFsgL1BERiAvVGV4 dCBdCj4+IGVuZG9iagozNCAwIG9iaiA8PAovTGVuZ3RoIDIyNTggICAgICAKL0ZpbHRlciAv RmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjapVjbjuO4EX2fr/Bb1MBYI5KiKD7ObLJB8hAMso0N FtlgQcvsltC6OLp0j/8+daFk2a2eC/Jg6KhI8VI8daroT/fvPvys1M7GNpPZ7v5hZ+TOaHiV Ruzuj/+OWv9yt0+tjqrmVPvGt6Mbq659f7fXOokct2Gn/9z/HYYSq6GEUnEqRL5LaKQPR//8 4TQOoed60lTEeSpN6LgfxnPteeTP979h/91eGB1LnWpAIrZaS+radMeJuioTvVR1jSiPDsGy LNkfYb2pgT5lVZTcWLiWgavrrnCjp3mSeXze/f3dXtjo/rc/DdA3yaJpqNpHhIa2DpbtredZ bBKhwoZO3VB9+aM7+fY0yt8TncBPbLghl7FOUhG+Gs7D6BuepYBFxsERmY1lotNrR9yXFS5R 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 CZOBgqz8ab5+SrjMQncmCXZgWIVny4wGl08PpLGVb4OFnJWFwNrcZ8N97ZzXLwILN5u+O3WU wqjmLl0LQUKhms7ut8tNw9JdB6Jg2q7+g9SCz8jz8Hzs3XGiMjj8W25ioxO7w4I7Flis4ocZ tr37y/27/wEZ66MsZW5kc3RyZWFtCmVuZG9iagozMyAwIG9iaiA8PAovVHlwZSAvUGFnZQov Q29udGVudHMgMzQgMCBSCi9SZXNvdXJjZXMgMzIgMCBSCi9NZWRpYUJveCBbMCAwIDU5NS4y NzU2IDg0MS44ODk4XQovUGFyZW50IDE2IDAgUgo+PiBlbmRvYmoKMzIgMCBvYmogPDwKL0Zv bnQgPDwgL0YzMyA2IDAgUiAvRjMxIDE1IDAgUiAvRjM1IDkgMCBSID4+Ci9Qcm9jU2V0IFsg L1BERiAvVGV4dCBdCj4+IGVuZG9iagoyMSAwIG9iaiA8PAovTGVuZ3RoMSA3NTAKL0xlbmd0 aDIgNTc2Ci9MZW5ndGgzIDUzMgovTGVuZ3RoIDExMTAgICAgICAKL0ZpbHRlciAvRmxhdGVE ZWNvZGUKPj4Kc3RyZWFtCnjaU1UMCNZ1TMlPSnXLzyvRNdQztFJw9g2ONDRQMNQz4FJVdS5K TSzJzM9zSSxJtVIwtLQ0VHAsTVcwNFUwMLcyMrAyNedSVXDOL6gsykzPKFHQcNYEKTJXcMxN LcpMTsxT8E0syUjNBZqRnJijEJyfnJlaUqmn4JiToxAE0lGsEJRanFpUlpqix2VoqJCSmVyi kJSanpnHpQ9ykWdeWr6COUQ4pbQAJlWWWlQMdJSCBtCRmgpAJ6bk5+VUKqSkpnHp++UD7UoF uoQajkI33K00J8cvMRdkPDiUMOQTczNzKqEq8nMLSktSixR881NSi/LQlYanQhznm5qSWZqL LutZkpiTmeyYl56TqqBraKJnYGwKkcgsdsusSE0JyCxJzlBIS8wpTgWLp+aloDsFGHxgh+h7 RrpHuodpQ+MVLBmQmJlXElJZkKpggFAN5hsi+MBQKsqsUIg20DMwMAQqBEIYKxbNMte85PyU zLx0BSNTM4XEoqLESi5gCgLyTBWqDRUy81JSKxRSK4Au1tfLyy8BalEABk2tQlp+ERcoWoHJ ST8JGLSpJSBxLkyPODnlV1TrGlkq6FqaAQ02NDRTMDc3rUVRmFxaVJSaVwJOK8DggPHTMoFB mJpakZrMdfNafrJ1S9b0bW0r61wXX1jFqs/588TalzfZD0TsqJudmVIbbDovUDG9ZMmrhY+2 9h0Wz74o4ZVsPVW4aItkr19P3JdFwmu2di1YFjGhwXS/3o1g8crmrmm8/7TVX3keLgybMaf1 kbTV/qLHszqVdW5+Ua4/wTMv5YVT1OJ93+9d4xbSCpqkpSRlfnMF+11GMfHKu88vy3/aUT/9 uG3yu7O3fDwDxIvdutQvptlxJ31J/PaEKzat7OJF7cBnjgevvHhULpHyR8C/Z390xRvZDqV2 1Y9HgpdVfO2qk66+fqqAXfxSx+vehV9r/Dm59ss6Hb174XDL8Uf6/Q3u+2R9ZE48Ns74LXVC 22+aSLrBPWOmTc92SJ7OehK6cb1h+/8X7FJL634sS8yes32KrMubqsLlu22/h4r31up5b5sR +X7J7sPc13aLGgrbX7np3P9zPqffGbYuI9/Srd+m7cjoe60v/vStyZlrF9yXPG7IZeCRnFsT GLudq9c/0e0fW+/Bp/e6jxaYC97iZBbaZX+Ai+NI8DHOY+or9p3Nk1/oZc3knjdh1Y0tBTwO zA17Zv3fX+H+WiNNeu7hVfwuR40/Pag94/twrln1J+XHtocVL6hU8eV9W33iV5DoOhaHKe/T u9rVztYwyjPt/7E6b907S6kb5kIcyvsubL3xY2OQq3lF4TL/CvPuLcaMntemyFe1/f5/ZPbk k46hX3/VftIrEgmU4ZqUae9z+3OLYKqoQ7i+7nXeSV4PPvbJXG38fKLQcqL6/1j2FRkd0fHf z74O2GFkrWp878ed6dZSL/wXLDKgEHCNGjAsDEjOSU0sKsnPTSzK5gIAVqJykWVuZHN0cmVh bQplbmRvYmoKMjIgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNv ZGluZyAzNSAwIFIKL0ZpcnN0Q2hhciAxNQovTGFzdENoYXIgMTUKL1dpZHRocyAzNiAwIFIK L0Jhc2VGb250IC9JWUdZR1YrQ01TWTEwCi9Gb250RGVzY3JpcHRvciAyMCAwIFIKPj4gZW5k b2JqCjIwIDAgb2JqIDw8Ci9Bc2NlbnQgNzUwCi9DYXBIZWlnaHQgNjgzCi9EZXNjZW50IC0x OTQKL0ZvbnROYW1lIC9JWUdZR1YrQ01TWTEwCi9JdGFsaWNBbmdsZSAtMTQuMDM1Ci9TdGVt ViA4NQovWEhlaWdodCA0MzEKL0ZvbnRCQm94IFstMjkgLTk2MCAxMTE2IDc3NV0KL0ZsYWdz IDQKL0NoYXJTZXQgKC9idWxsZXQpCi9Gb250RmlsZSAyMSAwIFIKPj4gZW5kb2JqCjM2IDAg b2JqCls1MDAgXQplbmRvYmoKMzUgMCBvYmogPDwKL1R5cGUgL0VuY29kaW5nCi9EaWZmZXJl bmNlcyBbIDAgLy5ub3RkZWYgMTUvYnVsbGV0IDE2Ly5ub3RkZWZdCj4+IGVuZG9iagoxNCAw IG9iaiA8PAovTGVuZ3RoMSAxNTE0Ci9MZW5ndGgyIDg5NDgKL0xlbmd0aDMgNTMyCi9MZW5n dGggOTgzOCAgICAgIAovRmlsdGVyIC9GbGF0ZURlY29kZQo+PgpzdHJlYW0KeNrtlmVYW9vW qPHiTtFC8ODuxaVAcPdiAYJLghXX4g4FihUpVqBI8eJeXIqWQnFvcb/Z+5yz23u+n/f+us9N 8iPvmCNjvGvMudYTRloNbQ5paxdLsIKLM5SDh5NHFCCrqqPDww3g4eTmlsFkZJR1B1tAIS7O chZQsCiAR0SEFyDt6g7gFQTwcIvy88I/mIwAWRdXH3eIrR0UAJRl+StJCCDtBHaHWFk4A1Qt oHZgJ3gNKwtHgLaLFQQM9eEESDs6ArT++oUHQAvsAXb3BFtzYvLwAKwhVlCAJdgW4ozJ9ZeT krONC0DoX2FrmOt/ljzB7h5wKQDwb00WAFzS2sXZ0QdgDbbB5FJzgXcDw13+b2j9d3EFmKOj moXTX+X/ntT/WLdwgjj6/DvDxckVBgW7A1RdrMHuzv+dqg/+l5wq2BoCc/rvVSWohSPEStrZ 1hEM4P5XCOKhAPEGW2tAoFZ2AKg7DPx3GOxs/d8O8Mn9bcClom2kpyDN9u9N/XtRwwLiDNXx cf2n6l/ZfzPPb4aPxx3iDTDmhs+XB54If//nm+l/NZN3tnKxhjjbAngFBAEW7u4WPpjw4wMn AcArHgDE2RrsDQB7w4W5OJ1doPCfAOAz8QfYuLhj/rWj/NwALlcLd7CzI9gG+tfSv6I8/47+ a//+CfMCuCw84BOFeDj8DgrCc+EhF+vfISEAl4ejhYfd74gIgMvFGfwPC8DbQr1cfjO8so0L zP13QBjAZeXiCD9k/4kICgC4pH8TvIXsb4Jny/1DQnD7F78JXlrxN/EBuJR+E7wm6DfBr0Tl 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 CbpT8+QFzDwP/csy0+ShM47GbczWT7NnbDrc/4cvzP9f4P+JAlaOYAt3qIuThbsD5v8CDqh0 9GVuZHN0cmVhbQplbmRvYmoKMTUgMCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5 cGUxCi9FbmNvZGluZyAzNyAwIFIKL0ZpcnN0Q2hhciA0MAovTGFzdENoYXIgMTIxCi9XaWR0 aHMgMzggMCBSCi9CYXNlRm9udCAvTFNaVkZBK0NNVFQxMAovRm9udERlc2NyaXB0b3IgMTMg MCBSCj4+IGVuZG9iagoxMyAwIG9iaiA8PAovQXNjZW50IDYxMQovQ2FwSGVpZ2h0IDYxMQov RGVzY2VudCAtMjIyCi9Gb250TmFtZSAvTFNaVkZBK0NNVFQxMAovSXRhbGljQW5nbGUgMAov U3RlbVYgNjkKL1hIZWlnaHQgNDMxCi9Gb250QkJveCBbLTQgLTIzNSA3MzEgODAwXQovRmxh Z3MgNAovQ2hhclNldCAoL3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrL3BlcmlvZC9z bGFzaC9vbmUvdHdvL2ZvdXIvY29sb24vQS9DL0QvRy9IL0kvSy9ML00vTi9PL1AvUi9TL1Qv VS9ZL3VuZGVyc2NvcmUvYS9iL2MvZC9lL2YvZy9oL2kvay9sL20vbi9vL3AvcS9yL3MvdC91 L3Yvdy94L3kpCi9Gb250RmlsZSAxNCAwIFIKPj4gZW5kb2JqCjM4IDAgb2JqCls1MjUgNTI1 IDUyNSAwIDAgMCA1MjUgNTI1IDAgNTI1IDUyNSAwIDUyNSAwIDAgMCAwIDAgNTI1IDAgMCAw IDAgMCAwIDUyNSAwIDUyNSA1MjUgMCAwIDUyNSA1MjUgNTI1IDAgNTI1IDUyNSA1MjUgNTI1 IDUyNSA1MjUgMCA1MjUgNTI1IDUyNSA1MjUgMCAwIDAgNTI1IDAgMCAwIDAgMCA1MjUgMCA1 MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSAwIDUyNSA1MjUgNTI1IDUyNSA1 MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IDUyNSA1MjUgNTI1IF0KZW5kb2JqCjM3 IDAgb2JqIDw8Ci9UeXBlIC9FbmNvZGluZwovRGlmZmVyZW5jZXMgWyAwIC8ubm90ZGVmIDQw L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2FzdGVyaXNrIDQzLy5ub3RkZWYgNDYvcGVyaW9kL3Ns YXNoIDQ4Ly5ub3RkZWYgNDkvb25lL3R3byA1MS8ubm90ZGVmIDUyL2ZvdXIgNTMvLm5vdGRl ZiA1OC9jb2xvbiA1OS8ubm90ZGVmIDY1L0EgNjYvLm5vdGRlZiA2Ny9DL0QgNjkvLm5vdGRl ZiA3MS9HL0gvSSA3NC8ubm90ZGVmIDc1L0svTC9NL04vTy9QIDgxLy5ub3RkZWYgODIvUi9T L1QvVSA4Ni8ubm90ZGVmIDg5L1kgOTAvLm5vdGRlZiA5NS91bmRlcnNjb3JlIDk2Ly5ub3Rk ZWYgOTcvYS9iL2MvZC9lL2YvZy9oL2kgMTA2Ly5ub3RkZWYgMTA3L2svbC9tL24vby9wL3Ev ci9zL3QvdS92L3cveC95IDEyMi8ubm90ZGVmXQo+PiBlbmRvYmoKMzkgMCBvYmogPDwKL1R5 cGUgL0VuY29kaW5nCi9EaWZmZXJlbmNlcyBbIDAgLy5ub3RkZWYgMS9kb3RhY2NlbnQvZmkv ZmwvZnJhY3Rpb24vaHVuZ2FydW1sYXV0L0xzbGFzaC9sc2xhc2gvb2dvbmVrL3JpbmcgMTAv Lm5vdGRlZiAxMS9icmV2ZS9taW51cyAxMy8ubm90ZGVmIDE0L1pjYXJvbi96Y2Fyb24vY2Fy b24vZG90bGVzc2kvZG90bGVzc2ovZmYvZmZpL2ZmbC9ub3RlcXVhbC9pbmZpbml0eS9sZXNz ZXF1YWwvZ3JlYXRlcmVxdWFsL3BhcnRpYWxkaWZmL3N1bW1hdGlvbi9wcm9kdWN0L3BpL2dy YXZlL3F1b3Rlc2luZ2xlL3NwYWNlL2V4Y2xhbS9xdW90ZWRibC9udW1iZXJzaWduL2RvbGxh ci9wZXJjZW50L2FtcGVyc2FuZC9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2Fz dGVyaXNrL3BsdXMvY29tbWEvaHlwaGVuL3BlcmlvZC9zbGFzaC96ZXJvL29uZS90d28vdGhy ZWUvZm91ci9maXZlL3NpeC9zZXZlbi9laWdodC9uaW5lL2NvbG9uL3NlbWljb2xvbi9sZXNz L2VxdWFsL2dyZWF0ZXIvcXVlc3Rpb24vYXQvQS9CL0MvRC9FL0YvRy9IL0kvSi9LL0wvTS9O L08vUC9RL1IvUy9UL1UvVi9XL1gvWS9aL2JyYWNrZXRsZWZ0L2JhY2tzbGFzaC9icmFja2V0 cmlnaHQvYXNjaWljaXJjdW0vdW5kZXJzY29yZS9xdW90ZWxlZnQvYS9iL2MvZC9lL2YvZy9o L2kvai9rL2wvbS9uL28vcC9xL3Ivcy90L3Uvdi93L3gveS96L2JyYWNlbGVmdC9iYXIvYnJh Y2VyaWdodC9hc2NpaXRpbGRlIDEyNy8ubm90ZGVmIDEyOC9FdXJvL2ludGVncmFsL3F1b3Rl c2luZ2xiYXNlL2Zsb3Jpbi9xdW90ZWRibGJhc2UvZWxsaXBzaXMvZGFnZ2VyL2RhZ2dlcmRi bC9jaXJjdW1mbGV4L3BlcnRob3VzYW5kL1NjYXJvbi9ndWlsc2luZ2xsZWZ0L09FL09tZWdh L3JhZGljYWwvYXBwcm94ZXF1YWwgMTQ0Ly5ub3RkZWYgMTQ3L3F1b3RlZGJsbGVmdC9xdW90 ZWRibHJpZ2h0L2J1bGxldC9lbmRhc2gvZW1kYXNoL3RpbGRlL3RyYWRlbWFyay9zY2Fyb24v Z3VpbHNpbmdscmlnaHQvb2UvRGVsdGEvbG96ZW5nZS9ZZGllcmVzaXMgMTYwLy5ub3RkZWYg MTYxL2V4Y2xhbWRvd24vY2VudC9zdGVybGluZy9jdXJyZW5jeS95ZW4vYnJva2VuYmFyL3Nl Y3Rpb24vZGllcmVzaXMvY29weXJpZ2h0L29yZGZlbWluaW5lL2d1aWxsZW1vdGxlZnQvbG9n aWNhbG5vdC9oeXBoZW4vcmVnaXN0ZXJlZC9tYWNyb24vZGVncmVlL3BsdXNtaW51cy90d29z dXBlcmlvci90aHJlZXN1cGVyaW9yL2FjdXRlL211L3BhcmFncmFwaC9wZXJpb2RjZW50ZXJl ZC9jZWRpbGxhL29uZXN1cGVyaW9yL29yZG1hc2N1bGluZS9ndWlsbGVtb3RyaWdodC9vbmVx dWFydGVyL29uZWhhbGYvdGhyZWVxdWFydGVycy9xdWVzdGlvbmRvd24vQWdyYXZlL0FhY3V0 ZS9BY2lyY3VtZmxleC9BdGlsZGUvQWRpZXJlc2lzL0FyaW5nL0FFL0NjZWRpbGxhL0VncmF2 ZS9FYWN1dGUvRWNpcmN1bWZsZXgvRWRpZXJlc2lzL0lncmF2ZS9JYWN1dGUvSWNpcmN1bWZs ZXgvSWRpZXJlc2lzL0V0aC9OdGlsZGUvT2dyYXZlL09hY3V0ZS9PY2lyY3VtZmxleC9PdGls ZGUvT2RpZXJlc2lzL211bHRpcGx5L09zbGFzaC9VZ3JhdmUvVWFjdXRlL1VjaXJjdW1mbGV4 L1VkaWVyZXNpcy9ZYWN1dGUvVGhvcm4vZ2VybWFuZGJscy9hZ3JhdmUvYWFjdXRlL2FjaXJj dW1mbGV4L2F0aWxkZS9hZGllcmVzaXMvYXJpbmcvYWUvY2NlZGlsbGEvZWdyYXZlL2VhY3V0 ZS9lY2lyY3VtZmxleC9lZGllcmVzaXMvaWdyYXZlL2lhY3V0ZS9pY2lyY3VtZmxleC9pZGll cmVzaXMvZXRoL250aWxkZS9vZ3JhdmUvb2FjdXRlL29jaXJjdW1mbGV4L290aWxkZS9vZGll cmVzaXMvZGl2aWRlL29zbGFzaC91Z3JhdmUvdWFjdXRlL3VjaXJjdW1mbGV4L3VkaWVyZXNp cy95YWN1dGUvdGhvcm4veWRpZXJlc2lzXQo+PiBlbmRvYmoKMTEgMCBvYmogPDwKL0xlbmd0 aDEgMTQ2OAovTGVuZ3RoMiA4NzEzCi9MZW5ndGgzIDUzMgovTGVuZ3RoIDk3NDAgICAgICAK L0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnja7XplVJv90yZSXFooxQvB3V2Kuxd3 CBAgSEKTQEtx91KKeylaijuU4u5erLg7BVqcTft/Zd/n3f2y+23PJic59/2bmeuamWvmPifn hIlOR49L1g5qA1KCQhBcfNy8uExM8jAQEAGGQhSACJA4QAkGBmhBPQD8AD4xcV4BcSFB5IUY 0g8gB0bAEUhfV4C+pxsIwAf4gwHQgUEdYEBXpF0e6uYJAzs4Iv4GAIBwABACcIe4udu4gOGO IDvAayjMGWDj+T8BqUJsuTkB8kBXGxjYzgHECdCU5UYiybq4AP4iwQEwEBwE8wDZcf8lgNiD 7UAQBBjogsS2A7jBoG4wMAgBhHkCENB/4CIDDLj1uAHK2oaKulqailr6AF1FPX1dVXl9RQWA rqqyir4e0kffEQwHwKH2iNdAGAiAQFZmD7QF/YG2c7dFAJBG5KUHkhaZPxjh+N8xuAEGcBAn EsnO3c0FbPu3lQAoDGAHhtu6QOHuSFRkzQhHEEAZ6gGCQVyRBfyBhbvbOIGQDMjEkUUiYGDb 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 bKujljg/VMhvuXF6yrXH4J1r4S980pjvHw9zMD+pVbck9kjcVGiUB+FwMCGYpwrmuhs2KJ0T 34x/QdOtdU/Wf5XJK/+dOE0Q8IntAERhtVLqdb/yOyhtcnumVpDnfn8xKODA2cTy8tPXK9+s w0n8pj3OkkKuACnxnUGpTNkZqwg8/FLe/8sX7v8H+H8CwNYFBIQhoH/+w4b7PwAQH1/4ZW5k c3RyZWFtCmVuZG9iagoxMiAwIG9iaiA8PAovVHlwZSAvRm9udAovU3VidHlwZSAvVHlwZTEK L0VuY29kaW5nIDM5IDAgUgovRmlyc3RDaGFyIDg0Ci9MYXN0Q2hhciAxMjEKL1dpZHRocyA0 MCAwIFIKL0Jhc2VGb250IC9CSFlWWkQrQ2hhcnRlckJULUl0YWxpYwovRm9udERlc2NyaXB0 b3IgMTAgMCBSCj4+IGVuZG9iagoxMCAwIG9iaiA8PAovQXNjZW50IDcyMQovQ2FwSGVpZ2h0 IDY4MgovRGVzY2VudCAtMjIwCi9Gb250TmFtZSAvQkhZVlpEK0NoYXJ0ZXJCVC1JdGFsaWMK L0l0YWxpY0FuZ2xlIDExCi9TdGVtViA4MgovWEhlaWdodCA0ODYKL0ZvbnRCQm94IFstMjI2 IC0yMzYgMTE3NCA5ODBdCi9GbGFncyA0Ci9DaGFyU2V0ICgvVC9ZL2EvYy9lL2kvbC9uL28v cS9yL3MvdC91L3cveSkKL0ZvbnRGaWxlIDExIDAgUgo+PiBlbmRvYmoKNDAgMCBvYmoKWzU2 NSAwIDAgMCAwIDU2MiAwIDAgMCAwIDAgMCAwIDUyNSAwIDM5NCAwIDQyNCAwIDAgMCAyODcg MCAwIDI3NSAwIDU1NiA1MDIgMCA1MTIgMzk4IDM3MCAzMzMgNTUzIDAgNzEzIDAgNDc1IF0K ZW5kb2JqCjggMCBvYmogPDwKL0xlbmd0aDEgMTQ1NgovTGVuZ3RoMiAxMjg3OAovTGVuZ3Ro MyA1MzIKL0xlbmd0aCAxMzkxMSAgICAgCi9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVh bQp42u17VVSc+7Ml7u5O4xDcNbi7ayA00LjTuAV3d3eX4BISIEAI7u7u7hJgOOd/Ze65My8z b7Ome3Wv7/tV1d5Vtau6Vz80DYWqBrOYmYMJSNrBHszMzsKGREMj4QwCgq0c7CWBYJAAQAMI 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 GZhXTqB4fmT7v3wg/X+A/ycATG1BQGeww19/fkP6H2xHTYBlbmRzdHJlYW0KZW5kb2JqCjkg MCBvYmogPDwKL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9FbmNvZGluZyAzOSAwIFIK L0ZpcnN0Q2hhciAyCi9MYXN0Q2hhciAxMjIKL1dpZHRocyA0MSAwIFIKL0Jhc2VGb250IC9S RlFWUUsrQ2hhcnRlckJULUJvbGQKL0ZvbnREZXNjcmlwdG9yIDcgMCBSCj4+IGVuZG9iago3 IDAgb2JqIDw8Ci9Bc2NlbnQgNzUyCi9DYXBIZWlnaHQgNjc3Ci9EZXNjZW50IC0yMjEKL0Zv bnROYW1lIC9SRlFWUUsrQ2hhcnRlckJULUJvbGQKL0l0YWxpY0FuZ2xlIDAKL1N0ZW1WIDEy MgovWEhlaWdodCA0ODgKL0ZvbnRCQm94IFstMTY2IC0yMzYgMTI2MiA5NjNdCi9GbGFncyA0 Ci9DaGFyU2V0ICgvZmkvcGFyZW5sZWZ0L3BhcmVucmlnaHQvaHlwaGVuL3BlcmlvZC9vbmUv dHdvL3RocmVlL2ZvdXIvZml2ZS9zaXgvY29sb24vQS9DL0QvRy9JL0wvTS9OL08vUC9SL1Mv VC9ZL2EvYi9jL2QvZS9mL2cvaC9pL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3op Ci9Gb250RmlsZSA4IDAgUgo+PiBlbmRvYmoKNDEgMCBvYmoKWzYyMiAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDQyOCA0MjggMCAwIDAgMzI2IDI4OSAwIDAgNTgxIDU4MSA1ODEgNTgxIDU4MSA1 ODEgMCAwIDAgMzQwIDAgMCAwIDAgMCAwIDY1MSAwIDYzOCA3MTYgMCAwIDcxMCAwIDM1NCAw IDAgNTQzIDg4MyA3MjcgNzUyIDU4NyAwIDY3MSA1NjggNjAzIDAgMCAwIDAgNjEwIDAgMCAw IDAgMCAwIDAgNTQ0IDU3NyA0NzYgNTk2IDUyNCAzNDEgNTUxIDU5NyAzMDUgMCA1NTMgMzA0 IDg5MiA2MDUgNTc3IDU5MSA1NzUgNDIxIDQ0NyAzNTggNjAwIDUxMyA3OTkgNTMxIDUxNSA0 OTUgXQplbmRvYmoKNSAwIG9iaiA8PAovTGVuZ3RoMSAxNDU0Ci9MZW5ndGgyIDE2MTIwCi9M ZW5ndGgzIDUzMgovTGVuZ3RoIDE3MTc2ICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4K c3RyZWFtCnjanLZzdKTd1y0a22an0rHt7ti2O0klFbPjdGyz46TTsW3btm3bPHnf7+B+v3P/ uOOOGlVjP3utPefCXPspClJFFQYhkK2hsbitjSMDCyMzAgWFiL0x0NHc1kYU6GjMCxC3NwfI 2zoDWAEsPLzMzLwsbJ8Lnk8/gLC5o4Pjp681QNXNzhjAAvgHA6Bob2tqD7T+tIvY2rnZm5ua Of57AAB0AABtAE42dk6GVuYOZsYggIutvSXA0O3/ASRlY8RIDxABWhvam4NMjekBckKMn0hC VlaAf5EcAPbGDsb2zsYgxn8JbEzMQcY2juZAq09sEMDO3tbO3tzYEWjvBnC0/Q/czwNqjCqM AAkFdTFleTkxeVWAspiKqrKUiKqYKEBZSkJSVeXTR9XM3AHgYGvi6AK0NwY4fmZmAjQy/gca 5GTkCPg0fi6dP2k/4zd3NPu/MRgBag7G9J9IICc7K3Ojf0sJsLUHgMwdjKxsHZw+UT9zdjQz BkjYOhvb21h/JvAPrIOToYXxJ8Nn4J9JOtqbG/1z0uET6LNyDsaOABNb+08+c5t/z34iG9s4 GAOApvbGxv9C/FOAT6O4kDKAg5WRlZWLgYUHQG1EA6Bm/fzKAd3oP/vAzUXzT2guZsY2AKDd v/EZWn3W+TO+f1D/z9Z/ZenwTwQAW5N/jaIKov+iOzh9ev3L+YnE+j+5uJg/hfGZAsj8v04B qIGfrCwcnz9Cnz2x+pecm+Yfov/bi4vmE+m/+TH+01xHe6CRo609kzXQxumzCY6fpbP/p1L/ oZd/omDhAIib2zs4AlQ+DcaO/6EhADMrCzsr43/T7CcO8LPQpuYOjsb2n838JAMZWwM/FfmZ 7n8oh4Xls3ufrTH8dLdBYPpH51I2JrYAnv/a/mz0/zJ9NvS/8mJlZP5nnGg+KYAgWxsrNwDI 2ASBSd7W8bNxAOr/n7Px/zoJ/20OGP+TUdzJykoeaP3J+X+gRMyA9p9Z/1+uQGtzK7f/j84a xv+GTy1va28NtPpPq5Qj8FNIQjamn0pi/q8tcwdxc1djkKK5o5EZwARo9Snef/fVbEDG9lbm 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 b250RGVzY3JpcHRvciA0IDAgUgo+PiBlbmRvYmoKNCAwIG9iaiA8PAovQXNjZW50IDc0OQov Q2FwSGVpZ2h0IDY4MAovRGVzY2VudCAtMjIwCi9Gb250TmFtZSAvUUtIWUZQK0NoYXJ0ZXJC VC1Sb21hbgovSXRhbGljQW5nbGUgMAovU3RlbVYgODMKL1hIZWlnaHQgNDgyCi9Gb250QkJv eCBbLTE2MSAtMjM2IDExOTMgOTYzXQovRmxhZ3MgNAovQ2hhclNldCAoL2ZpL2ZsL2V4Y2xh bS9xdW90ZXJpZ2h0L3BhcmVubGVmdC9wYXJlbnJpZ2h0L2NvbW1hL2h5cGhlbi9wZXJpb2Qv c2xhc2gvemVyby9vbmUvdHdvL3RocmVlL2ZvdXIvZml2ZS9zaXgvZWlnaHQvY29sb24vc2Vt aWNvbG9uL0EvQi9DL0QvRS9GL0cvSC9JL0ovTC9NL04vTy9QL1IvUy9UL1UvVi9XL1gvWS9h L2IvYy9kL2UvZi9nL2gvaS9qL2svbC9tL24vby9wL3Evci9zL3QvdS92L3cveC95L3ovZW5k YXNoKQovRm9udEZpbGUgNSAwIFIKPj4gZW5kb2JqCjQyIDAgb2JqCls1NzQgNTc5IDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAz MzggMCAwIDAgMCAwIDIwMSA0MTcgNDE3IDAgMCAyNzggMzE5IDI3OCA0ODEgNTU2IDU1NiA1 NTYgNTU2IDU1NiA1NTYgNTU2IDAgNTU2IDAgMzE5IDMxOSAwIDAgMCAwIDAgNjM5IDYwNCA2 MzIgNjkzIDU3NiA1MzcgNjk0IDczOCAzMjQgNDQ0IDAgNTIwIDg2NiA3MTMgNzMxIDU1OCAw IDY0NiA1NTYgNTk3IDY5NCA2MTggOTI4IDYwMCA1ODYgMCAwIDAgMCAwIDAgMCA1MDcgNTM5 IDQ0NiA1NjUgNDkxIDMyMSA1MjMgNTY0IDI4MCAyNjYgNTE3IDI4MiA4NDMgNTY4IDUzOSA1 NTEgNTMxIDM4MiA0MDAgMzM0IDU2OSA0OTQgNzcxIDUwMyA0OTUgNDY4IDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDUwMCBdCmVuZG9i agoxNiAwIG9iaiA8PAovVHlwZSAvUGFnZXMKL0NvdW50IDYKL0tpZHMgWzIgMCBSIDE4IDAg UiAyNCAwIFIgMjcgMCBSIDMwIDAgUiAzMyAwIFJdCj4+IGVuZG9iago0MyAwIG9iaiA8PAov VHlwZSAvQ2F0YWxvZwovUGFnZXMgMTYgMCBSCj4+IGVuZG9iago0NCAwIG9iaiA8PAovUHJv ZHVjZXIgKHBkZmVUZVgtMS4yMWEpCi9DcmVhdG9yIChUZVgpCi9DcmVhdGlvbkRhdGUgKEQ6 MjAwODAyMTMxNTI5NDIrMDEnMDAnKQovUFRFWC5GdWxsYmFubmVyIChUaGlzIGlzIHBkZmVU ZVgsIFZlcnNpb24gMy4xNDE1OTItMS4yMWEtMi4yIChXZWIyQyA3LjUuNCkga3BhdGhzZWEg dmVyc2lvbiAzLjUuNCkKPj4gZW5kb2JqCnhyZWYKMCA0NQowMDAwMDAwMDAwIDY1NTM1IGYg CjAwMDAwMDI3ODMgMDAwMDAgbiAKMDAwMDAwMjY2OCAwMDAwMCBuIAowMDAwMDAwMDA5IDAw MDAwIG4gCjAwMDAwNzgwNjAgMDAwMDAgbiAKMDAwMDA2MDYwMCAwMDAwMCBuIAowMDAwMDc3 ODk2IDAwMDAwIG4gCjAwMDAwNTk4ODUgMDAwMDAgbiAKMDAwMDA0NTY5MSAwMDAwMCBuIAow MDAwMDU5NzIyIDAwMDAwIG4gCjAwMDAwNDUzMjYgMDAwMDAgbiAKMDAwMDAzNTI5OCAwMDAw MCBuIAowMDAwMDQ1MTU4IDAwMDAwIG4gCjAwMDAwMzIzNjAgMDAwMDAgbiAKMDAwMDAyMjI0 NCAwMDAwMCBuIAowMDAwMDMyMjAyIDAwMDAwIG4gCjAwMDAwNzg5NTAgMDAwMDAgbiAKMDAw MDAwNjMyNiAwMDAwMCBuIAowMDAwMDA2MjA4IDAwMDAwIG4gCjAwMDAwMDI4ODYgMDAwMDAg biAKMDAwMDAyMTkyOCAwMDAwMCBuIAowMDAwMDIwNTQzIDAwMDAwIG4gCjAwMDAwMjE3NzEg MDAwMDAgbiAKMDAwMDAxMDE3MCAwMDAwMCBuIAowMDAwMDEwMDUyIDAwMDAwIG4gCjAwMDAw MDY0MzAgMDAwMDAgbiAKMDAwMDAxMzgwMSAwMDAwMCBuIAowMDAwMDEzNjgzIDAwMDAwIG4g CjAwMDAwMTAyNzQgMDAwMDAgbiAKMDAwMDAxNzg5MiAwMDAwMCBuIAowMDAwMDE3Nzc0IDAw MDAwIG4gCjAwMDAwMTM5MTcgMDAwMDAgbiAKMDAwMDAyMDQ1MSAwMDAwMCBuIAowMDAwMDIw MzMzIDAwMDAwIG4gCjAwMDAwMTc5OTYgMDAwMDAgbiAKMDAwMDAyMjE1OCAwMDAwMCBuIAow MDAwMDIyMTM1IDAwMDAwIG4gCjAwMDAwMzI5OTIgMDAwMDAgbiAKMDAwMDAzMjcwNyAwMDAw MCBuIAowMDAwMDMzNDExIDAwMDAwIG4gCjAwMDAwNDU1NjQgMDAwMDAgbiAKMDAwMDA2MDIz NyAwMDAwMCBuIAowMDAwMDc4NDkzIDAwMDAwIG4gCjAwMDAwNzkwNDMgMDAwMDAgbiAKMDAw MDA3OTA5NCAwMDAwMCBuIAp0cmFpbGVyCjw8Ci9TaXplIDQ1Ci9Sb290IDQzIDAgUgovSW5m byA0NCAwIFIKL0lEIFs8QTYwODVGQjg1QjYzNDg0MTVGNDM2RUU2NUYxMzc4RjI+IDxBNjA4 NUZCODVCNjM0ODQxNUY0MzZFRTY1RjEzNzhGMj5dCj4+CnN0YXJ0eHJlZgo3OTI5NwolJUVP Rgo= --xHbokkKX1kTiQeDC-- --cf0hFtnykp6aONGL Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkezBxwACgkQ52SDGA2eCwUTDgCeOJYsCB1lPQZ50LSF7i0nYkaJ 65YAnRIV02Tb6dsZ3wnEu3bTzx986UpB =KZ9s -----END PGP SIGNATURE----- --cf0hFtnykp6aONGL-- From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 17:01:20 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id ED7DF16A469; Wed, 13 Feb 2008 17:01:20 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (www.creo.hu [217.113.62.14]) by mx1.freebsd.org (Postfix) with ESMTP id BFFED13C4F5; Wed, 13 Feb 2008 17:01:19 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (localhost [127.0.0.1]) by beastie.creo.hu (8.14.1/8.14.1) with ESMTP id m1DGxNZf070350 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 13 Feb 2008 17:59:24 +0100 (CET) (envelope-from csaba@beastie.creo.hu) Received: (from csaba@localhost) by beastie.creo.hu (8.14.1/8.14.1/Submit) id m1DGxNER070349; Wed, 13 Feb 2008 17:59:23 +0100 (CET) (envelope-from csaba) Date: Wed, 13 Feb 2008 17:59:23 +0100 From: Csaba Henk To: Dag-Erling Smorgrav Message-ID: <20080213165923.GD49155@beastie.creo.hu> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <86d4r2540f.fsf@ds4.des.no> User-Agent: Mutt/1.5.16 (2007-06-09) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (beastie.creo.hu [127.0.0.1]); Wed, 13 Feb 2008 17:59:24 +0100 (CET) Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 17:01:21 -0000 On Tue, Feb 12, 2008 at 09:11:28PM +0100, Dag-Erling Sm??rgrav wrote: > Csaba Henk writes: > > So I think: fuse4bsd (ie, the kld + the mount util) + libfolly + sysctl > > fs could go to base under BSD license. It also might make sense to rebase > > ntfs-3g atop of folly -- although it won't help ntfs-3g being GPL'd. > > That doesn't matter; ntfs-3g can still be a port. > > What does matter is that if libfolly exports the same API as libfuse, we > can have a complete BSD-licensed FUSE implementation in the base system, > with minimal effort required to port FUSE-based file systems. No, it's a different API. I don't see it would have much importance to clone the libfuse API, because: - If FreeBSD wants a filesystem for its own internal purposes (like a filesytem interface to sysctls) it can use folly. - The huge majority of FUSE based filesystems in common use are GPL licensed anyway, and given this, I don't see the gain of having them backed with a BSD licensed library instead of a LGPL'd one. And they are as fine in ports as ntfs-3g is. Csaba From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 17:23:17 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D39BA16A418; Wed, 13 Feb 2008 17:23:17 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 978EE13C442; Wed, 13 Feb 2008 17:23:17 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 16BF8207F; Wed, 13 Feb 2008 18:23:11 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id EF371207E; Wed, 13 Feb 2008 18:23:10 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id C6860844A3; Wed, 13 Feb 2008 18:23:10 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Csaba Henk References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> <20080213165923.GD49155@beastie.creo.hu> Date: Wed, 13 Feb 2008 18:23:10 +0100 In-Reply-To: <20080213165923.GD49155@beastie.creo.hu> (Csaba Henk's message of "Wed\, 13 Feb 2008 17\:59\:23 +0100") Message-ID: <86zlu493ep.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 17:23:17 -0000 Csaba Henk writes: > - The huge majority of FUSE based filesystems in common use are GPL > licensed anyway, and given this, I don't see the gain of having > them backed with a BSD licensed library instead of a LGPL'd one. > And they are as fine in ports as ntfs-3g is. My implicit assumption was that it would be much harder to maintain a FUSE library in ports, since it is so tightly bound to the FUSE kernel module. DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 17:28:56 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9D7AC16A41B; Wed, 13 Feb 2008 17:28:56 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 5B4B013C458; Wed, 13 Feb 2008 17:28:56 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 1EA932084; Wed, 13 Feb 2008 18:28:53 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id 0ADCC2049; Wed, 13 Feb 2008 18:28:53 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id DF9E1844A3; Wed, 13 Feb 2008 18:28:52 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Ed Schouten References: <20080213150500.GH1340@hoeg.nl> Date: Wed, 13 Feb 2008 18:28:52 +0100 In-Reply-To: <20080213150500.GH1340@hoeg.nl> (Ed Schouten's message of "Wed\, 13 Feb 2008 16\:05\:00 +0100") Message-ID: <86ve4s9357.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: Robert Watson , Remko Lodder , Wojciech Koszek , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 17:28:56 -0000 Ed Schouten writes: > The last couple of days I've been working on a document which describes > the changes I'm going to perform. I have just finished this document, so > I'm sending it to this list, so you can give your opinion on this > matter. wiki.freebsd.org please :) > As stated in the conclusion of this document, I am willing to continue > development after I graduate. Unfortunately I don't possess all hardware > supported by the TTY layer, which means I could use some help after I > finished by internship to bring back support for the remaining hardware. Perhaps you could provide a short list of the types of hardware you need help with? DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 18:28:59 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A89F816A420 for ; Wed, 13 Feb 2008 18:28:59 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from smtpoutm.mac.com (smtpoutm.mac.com [17.148.16.73]) by mx1.freebsd.org (Postfix) with ESMTP id 4D39213C46A for ; Wed, 13 Feb 2008 18:28:59 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from mac.com (asmtp010-s [10.150.69.73]) by smtpoutm.mac.com (Xserve/smtpout010/MantshX 4.0) with ESMTP id m1DI9iIG019949; Wed, 13 Feb 2008 10:09:45 -0800 (PST) Received: from mini-g4.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mac.com (Xserve/asmtp010/MantshX 4.0) with ESMTP id m1DI9feV008789 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 13 Feb 2008 10:09:43 -0800 (PST) Message-Id: From: Marcel Moolenaar To: Ed Schouten In-Reply-To: <20080213150500.GH1340@hoeg.nl> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v919.2) Date: Wed, 13 Feb 2008 10:09:35 -0800 References: <20080213150500.GH1340@hoeg.nl> X-Mailer: Apple Mail (2.919.2) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 18:28:59 -0000 On Feb 13, 2008, at 7:05 AM, Ed Schouten wrote: > The last couple of days I've been working on a document which > describes > the changes I'm going to perform. I have just finished this > document, so > I'm sending it to this list, so you can give your opinion on this > matter. You mention the console. It would be best not to tie it up with the TTY layer, because we typically need the console way before we can have a TTY layer. A better approach would be to treat the console as a logging facility that can log to various destinations. The message buffer is one, a system console can be another. That system console should use the TTY layer so that it can accept input. The reason not to tie them and instead think of printf() as a logging request is that it makes matters simpler in a multi-console setup. Also, it may be worthwhile to keep Unicode in mind when you are reworking the clists. If the TTY layer operates on wchar_t instead of char, then all it needs is a device driver that consumes the wchar_t to have native Unicode support. Non-Unicode drivers can use UTF-8 interfaces. Thoughts? -- Marcel Moolenaar xcllnt@mac.com From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 18:46:08 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 58BC316A41A for ; Wed, 13 Feb 2008 18:46:08 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from palm.hoeg.nl (mx0.hoeg.nl [IPv6:2001:610:652::211]) by mx1.freebsd.org (Postfix) with ESMTP id 20F0D13C478 for ; Wed, 13 Feb 2008 18:46:07 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: by palm.hoeg.nl (Postfix, from userid 1000) id 2CC631CD55; Wed, 13 Feb 2008 19:46:07 +0100 (CET) Date: Wed, 13 Feb 2008 19:46:07 +0100 From: Ed Schouten To: Dag-Erling =?iso-8859-1?Q?Sm=F8rgrav?= Message-ID: <20080213184607.GK1340@hoeg.nl> References: <20080213150500.GH1340@hoeg.nl> <86ve4s9357.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="B9BE8dkJ1pIKavwa" Content-Disposition: inline In-Reply-To: <86ve4s9357.fsf@ds4.des.no> User-Agent: Mutt/1.5.17 (2007-11-01) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 18:46:08 -0000 --B9BE8dkJ1pIKavwa Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello Dag-Erling, * Dag-Erling Sm=F8rgrav wrote: > Ed Schouten writes: > > The last couple of days I've been working on a document which describes > > the changes I'm going to perform. I have just finished this document, so > > I'm sending it to this list, so you can give your opinion on this > > matter. >=20 > wiki.freebsd.org please :) Great idea. I'll take some time to write an article when I'm at the office tomorrow. > > As stated in the conclusion of this document, I am willing to continue > > development after I graduate. Unfortunately I don't possess all hardware > > supported by the TTY layer, which means I could use some help after I > > finished by internship to bring back support for the remaining hardware. >=20 > Perhaps you could provide a short list of the types of hardware you need > help with? The only drivers I can take a look at, are: - syscons - sio and uart - pty - u(pl)com I do have a Sun U10 laying around, but the on-board video chip broke down some time ago, so I can't take a look at the ofw_console driver anymore. :-( So basically I'll need help with the console drivers on the more exotic architectures. By the time the basic features of the new TTY layer work like they should, I could also use some help reviving the disciplines, like SLIPDISC, PPPDISC, etc. --=20 Ed Schouten WWW: http://g-rave.nl/ --B9BE8dkJ1pIKavwa Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkezOu8ACgkQ52SDGA2eCwVGNwCffL01itHGVfmfjSrV/WZ2i7Lt JaoAn3J7ET5zjb/NXW9tYAjUITuIplaD =Bzn/ -----END PGP SIGNATURE----- --B9BE8dkJ1pIKavwa-- From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 19:28:10 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 366DD16A418 for ; Wed, 13 Feb 2008 19:28:10 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from palm.hoeg.nl (mx0.hoeg.nl [IPv6:2001:610:652::211]) by mx1.freebsd.org (Postfix) with ESMTP id 5597D13C45E for ; Wed, 13 Feb 2008 19:28:09 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: by palm.hoeg.nl (Postfix, from userid 1000) id 6DD0E1CC76; Wed, 13 Feb 2008 20:28:08 +0100 (CET) Date: Wed, 13 Feb 2008 20:28:08 +0100 From: Ed Schouten To: Marcel Moolenaar Message-ID: <20080213192808.GL1340@hoeg.nl> References: <20080213150500.GH1340@hoeg.nl> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Zbynv6TNPa9FrOf6" Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.17 (2007-11-01) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 19:28:10 -0000 --Zbynv6TNPa9FrOf6 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable * Marcel Moolenaar wrote: > > On Feb 13, 2008, at 7:05 AM, Ed Schouten wrote: > >> The last couple of days I've been working on a document which describes >> the changes I'm going to perform. I have just finished this document, so >> I'm sending it to this list, so you can give your opinion on this >> matter. > > You mention the console. It would be best not to tie it up > with the TTY layer, because we typically need the console > way before we can have a TTY layer. A better approach would > be to treat the console as a logging facility that can log > to various destinations. The message buffer is one, a > system console can be another. That system console should > use the TTY layer so that it can accept input. The reason > not to tie them and instead think of printf() as a logging > request is that it makes matters simpler in a multi-console > setup. I'm planning on keeping the console code as it is. It will only need small changes to make it work with the new TTY layer. > Also, it may be worthwhile to keep Unicode in mind when you > are reworking the clists. If the TTY layer operates on > wchar_t instead of char, then all it needs is a device driver > that consumes the wchar_t to have native Unicode support. > Non-Unicode drivers can use UTF-8 interfaces. I personnally think we shouldn't put multibyte-handling inside the clists, but within the drivers, like syscons. A lot of drivers just need to send the raw 8-bit data to the other side, so it would be better to leave the generic TTY layer like that. Syscons could perfectly parse the UTF-8 and use a 16-bits font to draw them on screen. One thing I really think the TTY code should have somewhere in the future, is something similar to Linux's c_iflag `IUTF8', which fixes the backspace key in canonical mode. Thanks for the suggestion by the way. I'll write it down, but I don't think I can do something about this in the nearby future. --=20 Ed Schouten WWW: http://g-rave.nl/ --Zbynv6TNPa9FrOf6 Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkezRMgACgkQ52SDGA2eCwXQXwCeJil6UO6KBZcnhzOmsQoIldlG m68An1DzcJPIhoEVsWo2x2Ng5X62XPC0 =0Zci -----END PGP SIGNATURE----- --Zbynv6TNPa9FrOf6-- From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 19:36:59 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC10516A417 for ; Wed, 13 Feb 2008 19:36:59 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from smtpoutm.mac.com (smtpoutm.mac.com [17.148.16.81]) by mx1.freebsd.org (Postfix) with ESMTP id AD82113C4D3 for ; Wed, 13 Feb 2008 19:36:59 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from mac.com (asmtp006-s [10.150.69.69]) by smtpoutm.mac.com (Xserve/smtpout018/MantshX 4.0) with ESMTP id m1DJaxba022765; Wed, 13 Feb 2008 11:36:59 -0800 (PST) Received: from macbook-pro.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mac.com (Xserve/asmtp006/MantshX 4.0) with ESMTP id m1DJautl000315 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 13 Feb 2008 11:36:57 -0800 (PST) Message-Id: <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> From: Marcel Moolenaar To: Ed Schouten In-Reply-To: <20080213192808.GL1340@hoeg.nl> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v919.2) Date: Wed, 13 Feb 2008 11:36:56 -0800 References: <20080213150500.GH1340@hoeg.nl> <20080213192808.GL1340@hoeg.nl> X-Mailer: Apple Mail (2.919.2) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 19:36:59 -0000 On Feb 13, 2008, at 11:28 AM, Ed Schouten wrote: > * Marcel Moolenaar wrote: >> >> On Feb 13, 2008, at 7:05 AM, Ed Schouten wrote: >> >>> The last couple of days I've been working on a document which >>> describes >>> the changes I'm going to perform. I have just finished this >>> document, so >>> I'm sending it to this list, so you can give your opinion on this >>> matter. >> >> You mention the console. It would be best not to tie it up >> with the TTY layer, because we typically need the console >> way before we can have a TTY layer. A better approach would >> be to treat the console as a logging facility that can log >> to various destinations. The message buffer is one, a >> system console can be another. That system console should >> use the TTY layer so that it can accept input. The reason >> not to tie them and instead think of printf() as a logging >> request is that it makes matters simpler in a multi-console >> setup. > > I'm planning on keeping the console code as it is. It will only need > small changes to make it work with the new TTY layer. > >> Also, it may be worthwhile to keep Unicode in mind when you >> are reworking the clists. If the TTY layer operates on >> wchar_t instead of char, then all it needs is a device driver >> that consumes the wchar_t to have native Unicode support. >> Non-Unicode drivers can use UTF-8 interfaces. > > I personnally think we shouldn't put multibyte-handling inside the > clists, but within the drivers, like syscons. The problem with doing it that way is that insertion of control characters, like XON/XOFF or STOP may happen right in the middle of UTF-8 sequences. This may be problematic... > Thanks for the suggestion by the way. I'll write it down, but I don't > think I can do something about this in the nearby future. That's fine. Just keeping it in the back of your mind helps... -- Marcel Moolenaar xcllnt@mac.com From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 20:22:13 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4AC5416A475 for ; Wed, 13 Feb 2008 20:22:13 +0000 (UTC) (envelope-from rick@kiwi-computer.com) Received: from kiwi-computer.com (keira.kiwi-computer.com [63.224.10.3]) by mx1.freebsd.org (Postfix) with SMTP id D00D613C44B for ; Wed, 13 Feb 2008 20:22:12 +0000 (UTC) (envelope-from rick@kiwi-computer.com) Received: (qmail 93180 invoked by uid 2001); 13 Feb 2008 19:55:31 -0000 Date: Wed, 13 Feb 2008 13:55:31 -0600 From: "Rick C. Petty" To: Marcel Moolenaar Message-ID: <20080213195531.GA93104@keira.kiwi-computer.com> References: <20080213150500.GH1340@hoeg.nl> <20080213192808.GL1340@hoeg.nl> <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> User-Agent: Mutt/1.4.2.3i Cc: Ed Schouten , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: rick-freebsd@kiwi-computer.com List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 20:22:13 -0000 On Wed, Feb 13, 2008 at 11:36:56AM -0800, Marcel Moolenaar wrote: > > >I personnally think we shouldn't put multibyte-handling inside the > >clists, but within the drivers, like syscons. > > The problem with doing it that way is that insertion of control > characters, like XON/XOFF or STOP may happen right in the middle > of UTF-8 sequences. This may be problematic... Technically this shouldn't be a problem, because all subsequent UTF-8 bytes have bit 7 set and bit 6 cleared and XON/XOFF are 7-bit clean, so it should be pretty obvious that the handshaking happens in the middle of a multibyte sequence. -- Rick C. Petty From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 20:35:14 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 64E9116A41B for ; Wed, 13 Feb 2008 20:35:14 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from smtpoutm.mac.com (smtpoutm.mac.com [17.148.16.73]) by mx1.freebsd.org (Postfix) with ESMTP id 541F513C465 for ; Wed, 13 Feb 2008 20:35:14 +0000 (UTC) (envelope-from xcllnt@mac.com) Received: from mac.com (asmtp002-s [10.150.69.65]) by smtpoutm.mac.com (Xserve/smtpout010/MantshX 4.0) with ESMTP id m1DKZDl6007831; Wed, 13 Feb 2008 12:35:13 -0800 (PST) Received: from macbook-pro.jnpr.net (natint3.juniper.net [66.129.224.36]) (authenticated bits=0) by mac.com (Xserve/asmtp002/MantshX 4.0) with ESMTP id m1DKZBOK016975 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Wed, 13 Feb 2008 12:35:12 -0800 (PST) Message-Id: <840B6A4A-3F3C-477A-A667-086ABFCE8BF6@mac.com> From: Marcel Moolenaar To: rick-freebsd@kiwi-computer.com In-Reply-To: <20080213195531.GA93104@keira.kiwi-computer.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v919.2) Date: Wed, 13 Feb 2008 12:35:10 -0800 References: <20080213150500.GH1340@hoeg.nl> <20080213192808.GL1340@hoeg.nl> <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> <20080213195531.GA93104@keira.kiwi-computer.com> X-Mailer: Apple Mail (2.919.2) Cc: Ed Schouten , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 20:35:14 -0000 On Feb 13, 2008, at 11:55 AM, Rick C. Petty wrote: > On Wed, Feb 13, 2008 at 11:36:56AM -0800, Marcel Moolenaar wrote: >> >>> I personnally think we shouldn't put multibyte-handling inside the >>> clists, but within the drivers, like syscons. >> >> The problem with doing it that way is that insertion of control >> characters, like XON/XOFF or STOP may happen right in the middle >> of UTF-8 sequences. This may be problematic... > > Technically this shouldn't be a problem, because all subsequent > UTF-8 bytes > have bit 7 set and bit 6 cleared and XON/XOFF are 7-bit clean, so it > should > be pretty obvious that the handshaking happens in the middle of a > multibyte > sequence. Maybe so, but it wouldn't be a surprise to me that such is unexpected by UTF-8 parsers and could cause problems, such as the printing of error glyphs... -- Marcel Moolenaar xcllnt@mac.com From owner-freebsd-arch@FreeBSD.ORG Wed Feb 13 22:58:21 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B6E2F16A417 for ; Wed, 13 Feb 2008 22:58:21 +0000 (UTC) (envelope-from polkapink@gmail.com) Received: from el-out-1112.google.com (el-out-1112.google.com [209.85.162.183]) by mx1.freebsd.org (Postfix) with ESMTP id 671CA13C468 for ; Wed, 13 Feb 2008 22:58:21 +0000 (UTC) (envelope-from polkapink@gmail.com) Received: by el-out-1112.google.com with SMTP id r27so189621ele.3 for ; Wed, 13 Feb 2008 14:58:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to:subject:mime-version:content-type; bh=A3dQoxJhpEbF6l87EcxnwTSr8TBiwBXw1DW+w90Tqhw=; b=ejmqC3sDM1Ewo/8Vso3m8vQJyoIN99jPmghfMQ1g6XbG+mbmxLNCNgB7WmIFdvlg+AtDSoncxGKyL8gpDepY65hg8l7CT5lKEVpfgRpfeL9PRIWYdFZnJu5DfMyNuPsLNShSALnIXqW56O+r9lakf0QcOaIG/cZbUnAQ45cXVU0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type; b=lmgmO+kRJ/kAEM5//ttO8BEwSaISrE/HCryUr5M6zdfhTdQw6RAgjztt/X3QA9Hv0543C4KSbiQqNVQa0TNphjvpDlNImfPq5D/NWKcNGn9mDvLiulJYluvpcd/H935hhT4YolEvdMYvdcMKxMIawFs8ziTomkJ90D6pSNlN9Rw= Received: by 10.142.86.7 with SMTP id j7mr471504wfb.78.1202942051857; Wed, 13 Feb 2008 14:34:11 -0800 (PST) Received: by 10.142.203.8 with HTTP; Wed, 13 Feb 2008 14:34:11 -0800 (PST) Message-ID: <7978cb0a0802131434v26ee5bf3ra55e6ed673221a3b@mail.gmail.com> Date: Wed, 13 Feb 2008 14:34:11 -0800 From: "Zuk Zuk" To: freebsd-arch@freebsd.org, freebsd-bugs@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Subject: ln accross ssh X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2008 22:58:21 -0000 Why does "ln" not work with ssh ? ln -s works across mounted file systems. If an ln -s worked with ssh then I could just do ln -s ssl://source_host@host_dir my_mount_point or ln -ssh source_host@host_dir my_mount_point and then any other command, i.e., cd would be able to go ahead and interpret this as a request for ssh session . The reponsibility of further commands lies with the new session. Being able to scp from that directory is equivalent to having read permissions to it . .... sure many people would have thougth about this.. just wondering why its not there yet? From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 01:13:05 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E84F116A419; Thu, 14 Feb 2008 01:13:05 +0000 (UTC) (envelope-from erik@cepheid.org) Received: from mail.cepheid.org (aleph.cepheid.org [72.232.60.94]) by mx1.freebsd.org (Postfix) with ESMTP id C380A13C458; Thu, 14 Feb 2008 01:13:05 +0000 (UTC) (envelope-from erik@cepheid.org) Received: by mail.cepheid.org (Postfix, from userid 1006) id 4AEA79B4001; Wed, 13 Feb 2008 18:53:49 -0600 (CST) Date: Wed, 13 Feb 2008 18:53:49 -0600 From: Erik Osterholm To: Zuk Zuk Message-ID: <20080214005349.GA10465@aleph.cepheid.org> Mail-Followup-To: Erik Osterholm , Zuk Zuk , freebsd-arch@freebsd.org, freebsd-bugs@freebsd.org References: <7978cb0a0802131434v26ee5bf3ra55e6ed673221a3b@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7978cb0a0802131434v26ee5bf3ra55e6ed673221a3b@mail.gmail.com> User-Agent: Mutt/1.4.2.3i Cc: freebsd-bugs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: ln accross ssh X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 01:13:06 -0000 On Wed, Feb 13, 2008 at 02:34:11PM -0800, Zuk Zuk wrote: > Why does "ln" not work with ssh ? > ln -s works across mounted file systems. > > If an ln -s worked with ssh then I could just do > > ln -s ssl://source_host@host_dir my_mount_point > or ln -ssh source_host@host_dir my_mount_point > > > and then any other command, i.e., > cd would be able to go ahead and interpret this as a request for ssh session > . The reponsibility of further commands lies with the new session. Being > able to scp from that directory is equivalent to having read permissions to > it . > .... > sure many people would have thougth about this.. just wondering why its not > there yet? Look in ports for sysutils/fusefs-sshfs. I believe that it will do what you want. And I think this really belongs in -questions. Erik From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 07:18:06 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 27A1316A417 for ; Thu, 14 Feb 2008 07:18:06 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from palm.hoeg.nl (mx0.hoeg.nl [IPv6:2001:610:652::211]) by mx1.freebsd.org (Postfix) with ESMTP id D0F5A13C447 for ; Thu, 14 Feb 2008 07:18:05 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: by palm.hoeg.nl (Postfix, from userid 1000) id 3DEBD1CC76; Thu, 14 Feb 2008 08:18:05 +0100 (CET) Date: Thu, 14 Feb 2008 08:18:05 +0100 From: Ed Schouten To: Marcel Moolenaar Message-ID: <20080214071805.GP1340@hoeg.nl> References: <20080213150500.GH1340@hoeg.nl> <20080213192808.GL1340@hoeg.nl> <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="5xr6Gr0irOxp3+3c" Content-Disposition: inline In-Reply-To: <2672DC03-9293-4A92-969B-074CAB55176B@mac.com> User-Agent: Mutt/1.5.17 (2007-11-01) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 07:18:06 -0000 --5xr6Gr0irOxp3+3c Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable * Marcel Moolenaar wrote: > The problem with doing it that way is that insertion of control > characters, like XON/XOFF or STOP may happen right in the middle > of UTF-8 sequences. This may be problematic... This is one of the things that doesn't worry me much, because if the application takes care to write the entire UTF-8 character at once, it will enter the clist in the proper order, except when: - the TTY hits its watermarks during the write - traffic enters the TTY inwards, which has to be echoed (even though this will probably be caught by locking as well), while an UTF-8 character is entering the TTY outwards. --=20 Ed Schouten WWW: http://g-rave.nl/ --5xr6Gr0irOxp3+3c Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAkez6y0ACgkQ52SDGA2eCwW66wCeKVDoNKsDOOO63NjKONqqeY1v kuUAnRq1yJpWRBV4VisntIOzWsZpcgRE =zONr -----END PGP SIGNATURE----- --5xr6Gr0irOxp3+3c-- From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 07:18:38 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4841016A417 for ; Thu, 14 Feb 2008 07:18:38 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outH.internet-mail-service.net (outH.internet-mail-service.net [216.240.47.231]) by mx1.freebsd.org (Postfix) with ESMTP id 232AF13C45D for ; Thu, 14 Feb 2008 07:18:38 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.40) with ESMTP; Wed, 13 Feb 2008 23:18:37 -0800 Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 3894A127203; Wed, 13 Feb 2008 23:18:37 -0800 (PST) Message-ID: <47B3EB4E.40508@elischer.org> Date: Wed, 13 Feb 2008 23:18:38 -0800 From: Julian Elischer User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) MIME-Version: 1.0 To: Ed Schouten References: <20080213150500.GH1340@hoeg.nl> <86ve4s9357.fsf@ds4.des.no> <20080213184607.GK1340@hoeg.nl> In-Reply-To: <20080213184607.GK1340@hoeg.nl> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Cc: =?ISO-8859-1?Q?Dag-Erling_Sm=F8rgrav?= , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 07:18:38 -0000 Ed Schouten wrote: > Hello Dag-Erling, > > * Dag-Erling Smørgrav wrote: >> Ed Schouten writes: >>> The last couple of days I've been working on a document which describes >>> the changes I'm going to perform. I have just finished this document, so >>> I'm sending it to this list, so you can give your opinion on this >>> matter. >> wiki.freebsd.org please :) > > Great idea. I'll take some time to write an article when I'm at the > office tomorrow. > >>> As stated in the conclusion of this document, I am willing to continue >>> development after I graduate. Unfortunately I don't possess all hardware >>> supported by the TTY layer, which means I could use some help after I >>> finished by internship to bring back support for the remaining hardware. >> Perhaps you could provide a short list of the types of hardware you need >> help with? > > The only drivers I can take a look at, are: > > - syscons > - sio and uart > - pty > - u(pl)com gxemu 'test' console http://gavare.se/gxemul/gxemul-stable/doc/experiments.html#hello :-) (the simplest console in the universe) > > I do have a Sun U10 laying around, but the on-board video chip broke > down some time ago, so I can't take a look at the ofw_console driver > anymore. :-( > > So basically I'll need help with the console drivers on the more exotic > architectures. > > By the time the basic features of the new TTY layer work like they > should, I could also use some help reviving the disciplines, like > SLIPDISC, PPPDISC, etc. > From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 07:20:11 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3AF8016A419 for ; Thu, 14 Feb 2008 07:20:11 +0000 (UTC) (envelope-from julian@elischer.org) Received: from outR.internet-mail-service.net (outR.internet-mail-service.net [216.240.47.241]) by mx1.freebsd.org (Postfix) with ESMTP id 115AE13C43E for ; Thu, 14 Feb 2008 07:20:11 +0000 (UTC) (envelope-from julian@elischer.org) Received: from mx0.idiom.com (HELO idiom.com) (216.240.32.160) by out.internet-mail-service.net (qpsmtpd/0.40) with ESMTP; Wed, 13 Feb 2008 23:20:07 -0800 Received: from julian-mac.elischer.org (localhost [127.0.0.1]) by idiom.com (Postfix) with ESMTP id 42DC9127210; Wed, 13 Feb 2008 23:20:06 -0800 (PST) Message-ID: <47B3EBA7.2020005@elischer.org> Date: Wed, 13 Feb 2008 23:20:07 -0800 From: Julian Elischer User-Agent: Thunderbird 2.0.0.9 (Macintosh/20071031) MIME-Version: 1.0 To: Ed Schouten References: <20080213150500.GH1340@hoeg.nl> <20080213192808.GL1340@hoeg.nl> In-Reply-To: <20080213192808.GL1340@hoeg.nl> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Marcel Moolenaar , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 07:20:11 -0000 Ed Schouten wrote: > * Marcel Moolenaar wrote: >> On Feb 13, 2008, at 7:05 AM, Ed Schouten wrote: >> >>> The last couple of days I've been working on a document which describes >>> the changes I'm going to perform. I have just finished this document, so >>> I'm sending it to this list, so you can give your opinion on this >>> matter. >> You mention the console. It would be best not to tie it up >> with the TTY layer, because we typically need the console >> way before we can have a TTY layer. A better approach would >> be to treat the console as a logging facility that can log >> to various destinations. The message buffer is one, a >> system console can be another. That system console should >> use the TTY layer so that it can accept input. The reason >> not to tie them and instead think of printf() as a logging >> request is that it makes matters simpler in a multi-console >> setup. does anyone have a copy of the old console-NG design from 386BSD (1993/4 or so I think) ? > > I'm planning on keeping the console code as it is. It will only need > small changes to make it work with the new TTY layer. > >> Also, it may be worthwhile to keep Unicode in mind when you >> are reworking the clists. If the TTY layer operates on >> wchar_t instead of char, then all it needs is a device driver >> that consumes the wchar_t to have native Unicode support. >> Non-Unicode drivers can use UTF-8 interfaces. > > I personnally think we shouldn't put multibyte-handling inside the > clists, but within the drivers, like syscons. A lot of drivers just need > to send the raw 8-bit data to the other side, so it would be better to > leave the generic TTY layer like that. Syscons could perfectly parse the > UTF-8 and use a 16-bits font to draw them on screen. > > One thing I really think the TTY code should have somewhere in the > future, is something similar to Linux's c_iflag `IUTF8', which fixes the > backspace key in canonical mode. > > Thanks for the suggestion by the way. I'll write it down, but I don't > think I can do something about this in the nearby future. > From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 09:28:20 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC05416A46D; Thu, 14 Feb 2008 09:28:20 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 5A4D313C4D1; Thu, 14 Feb 2008 09:28:20 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id BFA4617104; Thu, 14 Feb 2008 09:02:52 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.2/8.14.2) with ESMTP id m1E92qVA022737; Thu, 14 Feb 2008 09:02:52 GMT (envelope-from phk@critter.freebsd.dk) To: Ed Schouten From: "Poul-Henning Kamp" In-Reply-To: Your message of "Wed, 13 Feb 2008 16:05:00 +0100." <20080213150500.GH1340@hoeg.nl> Date: Thu, 14 Feb 2008 09:02:52 +0000 Message-ID: <22736.1202979772@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: Robert Watson , Remko Lodder , Wojciech Koszek , FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 09:28:20 -0000 Much of this looks very sensible, but I have a few red flags: The current PTY implementation (both /dev/pty* and /dev/pts/*) suffers from the problem that a simple stat() on a nonexistent device will already create the device, even if the user has no intention to use it. Last I worked on this, there were several applications in ports that broke if this didn't work that way. You would have to be prepared to hunt down every single bogo_openpty() function in ports if you carry this change through. Move prison checks into devfs They do not belong in DEVFS, since that would require DEVFS to know far more about the device semantics if the individual drivers than it ever should. You can put it in the generic tty layer if you want, that would be emminently sensible, but DEVFS is the wrong place for it. Clists I would just drop clists and switch to mbufs. Consoles... Consoles are not ttys and ttys are not consoles. They may share hardware, but that does not make them the same thing. I have analyzed the console situation in detail on the arch@ mailing list long time ago, and you should read that analysis before you touch the console code. Items missing from your list: Firmly abstract line discipline from tty code -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 10:08:41 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3521216A419 for ; Thu, 14 Feb 2008 10:08:41 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: from palm.hoeg.nl (mx0.hoeg.nl [IPv6:2001:610:652::211]) by mx1.freebsd.org (Postfix) with ESMTP id BFB0113C44B for ; Thu, 14 Feb 2008 10:08:40 +0000 (UTC) (envelope-from ed@hoeg.nl) Received: by palm.hoeg.nl (Postfix, from userid 1000) id 2494F1CD2A; Thu, 14 Feb 2008 11:08:40 +0100 (CET) Date: Thu, 14 Feb 2008 11:08:40 +0100 From: Ed Schouten To: Poul-Henning Kamp Message-ID: <20080214100840.GQ1340@hoeg.nl> References: <20080213150500.GH1340@hoeg.nl> <22736.1202979772@critter.freebsd.dk> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="Bk6L21jbBNK7V1Rv" Content-Disposition: inline In-Reply-To: <22736.1202979772@critter.freebsd.dk> User-Agent: Mutt/1.5.17 (2007-11-01) Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 10:08:41 -0000 --Bk6L21jbBNK7V1Rv Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hello Poul-Henning, * Poul-Henning Kamp wrote: >=20 > Much of this looks very sensible, but I have a few red flags: >=20 > The current PTY implementation (both /dev/pty* > and /dev/pts/*) suffers from the problem that a > simple stat() on a nonexistent device will already > create the device, even if the user has no intention > to use it. >=20 > Last I worked on this, there were several applications in ports > that broke if this didn't work that way. You would have to be > prepared to hunt down every single bogo_openpty() function in ports > if you carry this change through. Because I know it's impossible to fix this in the nearby future, I'm planning on re-adding support for the old /dev/pty*-style TTY's, using the old allocation model, which I'll probably call `pty_compat'. We can only hope new software will use interfaces like openpty() and posix_openpt(), so we can remove this old interface in the very far future. > Move prison checks into devfs >=20 > They do not belong in DEVFS, since that would require DEVFS to know > far more about the device semantics if the individual drivers than > it ever should. >=20 > You can put it in the generic tty layer if you want, that would be > emminently sensible, but DEVFS is the wrong place for it. The reason why I was thinking about this, was because devfs already stores per-device credentials (see cdevsw's si_cred field). Say, we want to expose other resources through devfs (/dev/shm/..., etc), we could also prevent access from other prisons there as well. Of course I'm willing to leave it as it is now, if we cannot come to an agreement on this. > Clists >=20 > I would just drop clists and switch to mbufs. Even though I think it's a good idea, I'm not sure how I would implement certain features the clists offer, like quoted characters for example. Ideas are welcome. :-) > Consoles... >=20 > Consoles are not ttys and ttys are not consoles. They may share > hardware, but that does not make them the same thing. I have > analyzed the console situation in detail on the arch@ mailing list > long time ago, and you should read that analysis before you touch > the console code. I'm planning on leaving the console code alone as much as possible. The document sometimes did mention the word `console', but in those cases I was referring to drivers which provide a graphical system console, like sc(4). > Items missing from your list: >=20 > Firmly abstract line discipline from tty code I was already planning to add the termios line discipline code outside the TTY code itself. I'll also add this to the document. Thanks for your feedback. I'll make some changes to the document based on the input I've got so far. I'll add an article to the wiki which will also contain a link to the latest version of this document. --=20 Ed Schouten WWW: http://g-rave.nl/ --Bk6L21jbBNK7V1Rv Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.8 (FreeBSD) iEYEARECAAYFAke0EygACgkQ52SDGA2eCwX24wCdEe9hkmBhpb5xtdvHIl5gULHZ 58MAn0G5hJvGlxW5znyefhelaWcoQwuN =t3M6 -----END PGP SIGNATURE----- --Bk6L21jbBNK7V1Rv-- From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 10:12:54 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5CC0E16A41A for ; Thu, 14 Feb 2008 10:12:54 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id 138E813C468 for ; Thu, 14 Feb 2008 10:12:53 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id ECC1517104; Thu, 14 Feb 2008 10:12:52 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.2/8.14.2) with ESMTP id m1EACqJA023697; Thu, 14 Feb 2008 10:12:52 GMT (envelope-from phk@critter.freebsd.dk) To: Ed Schouten From: "Poul-Henning Kamp" In-Reply-To: Your message of "Thu, 14 Feb 2008 11:08:40 +0100." <20080214100840.GQ1340@hoeg.nl> Date: Thu, 14 Feb 2008 10:12:52 +0000 Message-ID: <23696.1202983972@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 10:12:54 -0000 In message <20080214100840.GQ1340@hoeg.nl>, Ed Schouten writes: >> Move prison checks into devfs >> >> They do not belong in DEVFS, since that would require DEVFS to know >> far more about the device semantics if the individual drivers than >> it ever should. >> >> You can put it in the generic tty layer if you want, that would be >> emminently sensible, but DEVFS is the wrong place for it. > >The reason why I was thinking about this, was because devfs already >stores per-device credentials (see cdevsw's si_cred field). Say, we want >to expose other resources through devfs (/dev/shm/..., etc), we could >also prevent access from other prisons there as well. The problem is that you need to tie several cdevs together in a way devfs can see, pts%d to ptm%d and so on. That level of visibility into the device' internal workings is complex to provide in devfs, if nothing else for locking reasons, and it is trivial to implemented in the relevant device driver, where all of the tied devices are very likely have shared softc data structure and locking. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence. From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 10:17:08 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DA83516A419; Thu, 14 Feb 2008 10:17:08 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (www.creo.hu [217.113.62.14]) by mx1.freebsd.org (Postfix) with ESMTP id 3361813C469; Thu, 14 Feb 2008 10:17:07 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (localhost [127.0.0.1]) by beastie.creo.hu (8.14.1/8.14.1) with ESMTP id m1EAFBrj015449 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 14 Feb 2008 11:15:11 +0100 (CET) (envelope-from csaba@beastie.creo.hu) Received: (from csaba@localhost) by beastie.creo.hu (8.14.1/8.14.1/Submit) id m1EAFBnV015448; Thu, 14 Feb 2008 11:15:11 +0100 (CET) (envelope-from csaba) Date: Thu, 14 Feb 2008 11:15:11 +0100 From: Csaba Henk To: Dag-Erling Smorgrav Message-ID: <20080214101511.GE49155@beastie.creo.hu> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> <20080213165923.GD49155@beastie.creo.hu> <86zlu493ep.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <86zlu493ep.fsf@ds4.des.no> User-Agent: Mutt/1.5.16 (2007-06-09) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (beastie.creo.hu [127.0.0.1]); Thu, 14 Feb 2008 11:15:12 +0100 (CET) Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 10:17:09 -0000 On Wed, Feb 13, 2008 at 06:23:10PM +0100, Dag-Erling Smorgrav wrote: > My implicit assumption was that it would be much harder to maintain a > FUSE library in ports, since it is so tightly bound to the FUSE kernel > module. So then, just to clean up more implicit principles: also you mean that LGPL'd code can't go to the base system unless absolutely necessary? If yes, why so? FreeBSD has embraced recently a big chunk of CDDL'd code without making much fuss about licensing, and for practical purposes, I don't see much difference between CDDL and LGPL (altough the latter is worded undisputedly sickly :)). Regarding your assumption: I think it's not true. The only thing that the lib and the module have in common is the header fuse_kernel.h which defines the data structures and constants used in the kernel/userspace protocol. This protocol is versioned and the kernel and the daemon negotiate the highest proto version supported by both parties and shall communicate according to that. Csaba From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 12:32:11 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8C26F16A420; Thu, 14 Feb 2008 12:32:11 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id 41BE213C4DB; Thu, 14 Feb 2008 12:32:11 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id A5491207E; Thu, 14 Feb 2008 13:32:00 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id 956122049; Thu, 14 Feb 2008 13:32:00 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id 7A29784492; Thu, 14 Feb 2008 13:32:00 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Csaba Henk References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> <20080213165923.GD49155@beastie.creo.hu> <86zlu493ep.fsf@ds4.des.no> <20080214101511.GE49155@beastie.creo.hu> Date: Thu, 14 Feb 2008 13:32:00 +0100 In-Reply-To: <20080214101511.GE49155@beastie.creo.hu> (Csaba Henk's message of "Thu\, 14 Feb 2008 11\:15\:11 +0100") Message-ID: <86d4qzlnwf.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 12:32:11 -0000 Csaba Henk writes: > So then, just to clean up more implicit principles: also you mean that > LGPL'd code can't go to the base system unless absolutely necessary? I mean that we shouldn't if a suitable BSD-licensed alternative exists. > Regarding your assumption: I think it's not true. The only thing that > the lib and the module have in common is the header fuse_kernel.h which > defines the data structures and constants used in the kernel/userspace > protocol. If those data structures and constants change, the port would have to deal with supporting multiple FreeBSD versions simultaneously. DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 12:35:43 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0A4FA16A417 for ; Thu, 14 Feb 2008 12:35:42 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (tim.des.no [194.63.250.121]) by mx1.freebsd.org (Postfix) with ESMTP id A87CA13C474 for ; Thu, 14 Feb 2008 12:35:42 +0000 (UTC) (envelope-from des@des.no) Received: from tim.des.no (localhost [127.0.0.1]) by spam.des.no (Postfix) with ESMTP id 57AF02094; Thu, 14 Feb 2008 13:35:31 +0100 (CET) X-Spam-Tests: AWL X-Spam-Learn: disabled X-Spam-Score: -0.3/3.0 X-Spam-Checker-Version: SpamAssassin 3.2.4 (2008-01-01) on tim.des.no Received: from ds4.des.no (des.no [80.203.243.180]) by smtp.des.no (Postfix) with ESMTP id 4B106208C; Thu, 14 Feb 2008 13:35:31 +0100 (CET) Received: by ds4.des.no (Postfix, from userid 1001) id 331A284492; Thu, 14 Feb 2008 13:35:31 +0100 (CET) From: =?utf-8?Q?Dag-Erling_Sm=C3=B8rgrav?= To: Ed Schouten References: <20080213150500.GH1340@hoeg.nl> <86ve4s9357.fsf@ds4.des.no> <20080213184607.GK1340@hoeg.nl> Date: Thu, 14 Feb 2008 13:35:31 +0100 In-Reply-To: <20080213184607.GK1340@hoeg.nl> (Ed Schouten's message of "Wed\, 13 Feb 2008 19\:46\:07 +0100") Message-ID: <868x1nlnqk.fsf@ds4.des.no> User-Agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.1 (berkeley-unix) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Cc: FreeBSD Arch Subject: Re: Proposal for redesigning the TTY layer X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 12:35:43 -0000 Ed Schouten writes: > Dag-Erling Sm=C3=B8rgrav writes: > > Perhaps you could provide a short list of the types of hardware you > > need help with? > > The only drivers I can take a look at, are: > > - syscons > - sio and uart > - pty > - u(pl)com > > I do have a Sun U10 laying around, but the on-board video chip broke > down some time ago, so I can't take a look at the ofw_console driver > anymore. :-( I have a fully functional U1 in the basement, but no room to set it up where I currently live (it used to be online as ultra.des.no in a previous employer's server room). I also have a puc(4)-compatible multi-port card which is in daily use (console and log server for my home network) DES --=20 Dag-Erling Sm=C3=B8rgrav - des@des.no From owner-freebsd-arch@FreeBSD.ORG Thu Feb 14 13:59:32 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9AC5C16A418; Thu, 14 Feb 2008 13:59:32 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (www.creo.hu [217.113.62.14]) by mx1.freebsd.org (Postfix) with ESMTP id EFB0813C46E; Thu, 14 Feb 2008 13:59:31 +0000 (UTC) (envelope-from csaba@beastie.creo.hu) Received: from beastie.creo.hu (localhost [127.0.0.1]) by beastie.creo.hu (8.14.1/8.14.1) with ESMTP id m1EDvZPt023709 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 14 Feb 2008 14:57:35 +0100 (CET) (envelope-from csaba@beastie.creo.hu) Received: (from csaba@localhost) by beastie.creo.hu (8.14.1/8.14.1/Submit) id m1EDvW46023708; Thu, 14 Feb 2008 14:57:32 +0100 (CET) (envelope-from csaba) Date: Thu, 14 Feb 2008 14:57:32 +0100 From: Csaba Henk To: Dag-Erling Smorgrav Message-ID: <20080214135732.GF49155@beastie.creo.hu> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> <20080213165923.GD49155@beastie.creo.hu> <86zlu493ep.fsf@ds4.des.no> <20080214101511.GE49155@beastie.creo.hu> <86d4qzlnwf.fsf@ds4.des.no> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <86d4qzlnwf.fsf@ds4.des.no> User-Agent: Mutt/1.5.16 (2007-06-09) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-2.0.2 (beastie.creo.hu [127.0.0.1]); Thu, 14 Feb 2008 14:57:35 +0100 (CET) Cc: freebsd-fs@freebsd.org, freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 14 Feb 2008 13:59:32 -0000 On Thu, Feb 14, 2008 at 01:32:00PM +0100, Dag-Erling Smorgrav wrote: > Csaba Henk writes: > > Regarding your assumption: I think it's not true. The only thing that > > the lib and the module have in common is the header fuse_kernel.h which > > defines the data structures and constants used in the kernel/userspace > > protocol. > > If those data structures and constants change, the port would have to > deal with supporting multiple FreeBSD versions simultaneously. No -- that's what the negotiation thingy is for. It's not a problem if the kld and the lib were compiled with different revisions of that header. Csaba From owner-freebsd-arch@FreeBSD.ORG Fri Feb 15 11:36:14 2008 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB5DC16A417 for ; Fri, 15 Feb 2008 11:36:14 +0000 (UTC) (envelope-from peterjeremy@optushome.com.au) Received: from fallbackmx06.syd.optusnet.com.au (fallbackmx06.syd.optusnet.com.au [211.29.132.8]) by mx1.freebsd.org (Postfix) with ESMTP id B3F9B13C458 for ; Fri, 15 Feb 2008 11:36:13 +0000 (UTC) (envelope-from peterjeremy@optushome.com.au) Received: from mail10.syd.optusnet.com.au (mail10.syd.optusnet.com.au [211.29.132.191]) by fallbackmx06.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id m1EIRoP4014011 for ; Fri, 15 Feb 2008 05:27:51 +1100 Received: from server.vk2pj.dyndns.org (c220-239-20-82.belrs4.nsw.optusnet.com.au [220.239.20.82]) by mail10.syd.optusnet.com.au (8.13.1/8.13.1) with ESMTP id m1EIRf2m008079 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Fri, 15 Feb 2008 05:27:43 +1100 Received: from server.vk2pj.dyndns.org (localhost.vk2pj.dyndns.org [127.0.0.1]) by server.vk2pj.dyndns.org (8.14.2/8.14.1) with ESMTP id m1EIRf7V032423; Fri, 15 Feb 2008 05:27:41 +1100 (EST) (envelope-from peter@server.vk2pj.dyndns.org) Received: (from peter@localhost) by server.vk2pj.dyndns.org (8.14.2/8.14.2/Submit) id m1EIRfWv032405; Fri, 15 Feb 2008 05:27:41 +1100 (EST) (envelope-from peter) Date: Fri, 15 Feb 2008 05:27:40 +1100 From: Peter Jeremy To: Csaba Henk Message-ID: <20080214182740.GZ64299@server.vk2pj.dyndns.org> References: <3bbf2fe10802061700p253e68b8s704deb3e5e4ad086@mail.gmail.com> <70e8236f0802070321n9097d3fy1b39f637b3c2a06@mail.gmail.com> <867ihdc34c.fsf@ds4.des.no> <20080212190207.GB49155@beastie.creo.hu> <86d4r2540f.fsf@ds4.des.no> <20080213165923.GD49155@beastie.creo.hu> <86zlu493ep.fsf@ds4.des.no> <20080214101511.GE49155@beastie.creo.hu> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="qD3brAgIG4LbUq6d" Content-Disposition: inline In-Reply-To: <20080214101511.GE49155@beastie.creo.hu> X-PGP-Key: http://members.optusnet.com.au/peterjeremy/pubkey.asc User-Agent: Mutt/1.5.17 (2007-11-01) Cc: freebsd-arch@freebsd.org Subject: Re: [RFC] Remove NTFS kernel support X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 15 Feb 2008 11:36:15 -0000 --qD3brAgIG4LbUq6d Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Feb 14, 2008 at 11:15:11AM +0100, Csaba Henk wrote: >So then, just to clean up more implicit principles: also you mean that >LGPL'd code can't go to the base system unless absolutely necessary? Yes. >yes, why so? FreeBSD has embraced recently a big chunk of CDDL'd code >without making much fuss about licensing, and for practical purposes, If you're talking about either dtrace or ZFS: 1) The features are highly desirable and no more suitably licenced alternative is available now or likely to become available in the near future. 2) It is not part of the GENERIC system and will remain optional due to the license. 3) In the case of dtrace, licensing issues have delayed its implementation by at least a year. --=20 Peter Jeremy Please excuse any delays as the result of my ISP's inability to implement an MTA that is either RFC2821-compliant or matches their claimed behaviour. --qD3brAgIG4LbUq6d Content-Type: application/pgp-signature Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.4 (FreeBSD) iD8DBQFHtIgc/opHv/APuIcRAq2tAJ9zGxLusQmIF3a0ysMROmjJ7mSMWACdF28I nhcOCY4Fg5U5nF31XpUZKoM= =v3jg -----END PGP SIGNATURE----- --qD3brAgIG4LbUq6d-- From owner-freebsd-arch@FreeBSD.ORG Sat Feb 16 17:53:54 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7B48B16A417 for ; Sat, 16 Feb 2008 17:53:54 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from mail.cksoft.de (mail.cksoft.de [62.111.66.27]) by mx1.freebsd.org (Postfix) with ESMTP id 352BA13C4CE for ; Sat, 16 Feb 2008 17:53:54 +0000 (UTC) (envelope-from bzeeb-lists@lists.zabbadoz.net) Received: from localhost (amavis.str.cksoft.de [192.168.74.71]) by mail.cksoft.de (Postfix) with ESMTP id 3792141C747; Sat, 16 Feb 2008 18:35:06 +0100 (CET) X-Virus-Scanned: amavisd-new at cksoft.de Received: from mail.cksoft.de ([62.111.66.27]) by localhost (amavis.str.cksoft.de [192.168.74.71]) (amavisd-new, port 10024) with ESMTP id x6Lti43XQjcm; Sat, 16 Feb 2008 18:35:05 +0100 (CET) Received: by mail.cksoft.de (Postfix, from userid 66) id DE86441C734; Sat, 16 Feb 2008 18:35:05 +0100 (CET) Received: from maildrop.int.zabbadoz.net (maildrop.int.zabbadoz.net [10.111.66.10]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.int.zabbadoz.net (Postfix) with ESMTP id E5E4244487F; Sat, 16 Feb 2008 17:34:01 +0000 (UTC) Date: Sat, 16 Feb 2008 17:34:01 +0000 (UTC) From: "Bjoern A. Zeeb" X-X-Sender: bz@maildrop.int.zabbadoz.net To: Poul-Henning Kamp In-Reply-To: <76888.1202655761@critter.freebsd.dk> Message-ID: <20080216172707.J49429@maildrop.int.zabbadoz.net> References: <76888.1202655761@critter.freebsd.dk> X-OpenPGP-Key: 0x14003F198FEFA3E77207EE8D2B58B8F83CCF1842 MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: arch@freebsd.org Subject: Re: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Feb 2008 17:53:54 -0000 On Sun, 10 Feb 2008, Poul-Henning Kamp wrote: Hi, > I need it as a free standing facility in another contract, and that got > me wondering if it should be included in FreeBSD as a general tool ? I think it's a very useful tool, especially for embedded systems and other installations with similar contraints, but I'd like to see it in ports rather than base (unless I am missing something and it depends on some special features of base that, when changing, could possible break it). /bz -- Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT Software is harder than hardware so better get it right the first time. From owner-freebsd-arch@FreeBSD.ORG Sat Feb 16 22:22:33 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2950316A41A for ; Sat, 16 Feb 2008 22:22:33 +0000 (UTC) (envelope-from michel@lpthe.jussieu.fr) Received: from shiva.jussieu.fr (shiva.jussieu.fr [134.157.0.129]) by mx1.freebsd.org (Postfix) with ESMTP id A347F13C459 for ; Sat, 16 Feb 2008 22:22:32 +0000 (UTC) (envelope-from michel@lpthe.jussieu.fr) Received: from parthe.lpthe.jussieu.fr (parthe.lpthe.jussieu.fr [134.157.10.1]) by shiva.jussieu.fr (8.14.2/jtpda-5.4) with ESMTP id m1GMMVuP079544 for ; Sat, 16 Feb 2008 23:22:31 +0100 (CET) X-Ids: 165 Received: from niobe.lpthe.jussieu.fr (niobe.lpthe.jussieu.fr [134.157.10.41]) by parthe.lpthe.jussieu.fr (Postfix) with ESMTP id 38D182377FB for ; Sat, 16 Feb 2008 23:22:30 +0100 (CET) Received: by niobe.lpthe.jussieu.fr (Postfix, from userid 2005) id 3BE4930; Sat, 16 Feb 2008 23:22:30 +0100 (CET) Date: Sat, 16 Feb 2008 23:22:30 +0100 From: Michel Talon To: arch@freebsd.org Message-ID: <20080216222230.GA47480@lpthe.jussieu.fr> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.2i X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-3.0 (shiva.jussieu.fr [134.157.0.165]); Sat, 16 Feb 2008 23:22:31 +0100 (CET) X-Virus-Scanned: ClamAV 0.92/5837/Sat Feb 16 18:14:09 2008 on shiva.jussieu.fr X-Virus-Status: Clean X-j-chkmail-Score: MSGID : 47B76227.001 on shiva.jussieu.fr : j-chkmail score : X : 0/50 0 0.517 -> 1 X-Miltered: at shiva.jussieu.fr with ID 47B76227.001 by Joe's j-chkmail (http://j-chkmail.ensmp.fr)! Cc: Subject: Re: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Feb 2008 22:22:33 -0000 Bjoern A. Zeeb wrote: > > I need it as a free standing facility in another contract, and that > > got > > me wondering if it should be included in FreeBSD as a general tool ? > > I think it's a very useful tool, especially for embedded systems and > other installations with similar contraints, but I'd like to see it > in ports rather than base (unless I am missing something and it > depends on some special features of base that, when changing, > could possible break it). One may argue that this facility is potentially useful for a straight computer in case you want to strictly bound the size of logs in /var, and as such should be a useful option in the base system. A contrario i don't see what is gained by relegating it to ports. Quite generally kernel modules in ports are more a hassle than anything else. -- Michel TALON From owner-freebsd-arch@FreeBSD.ORG Sat Feb 16 22:44:31 2008 Return-Path: Delivered-To: arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3260716A46B for ; Sat, 16 Feb 2008 22:44:31 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from phk.freebsd.dk (phk.freebsd.dk [130.225.244.222]) by mx1.freebsd.org (Postfix) with ESMTP id DE48913C46A for ; Sat, 16 Feb 2008 22:44:30 +0000 (UTC) (envelope-from phk@critter.freebsd.dk) Received: from critter.freebsd.dk (unknown [192.168.61.3]) by phk.freebsd.dk (Postfix) with ESMTP id 9CDD717104; Sat, 16 Feb 2008 22:44:29 +0000 (UTC) Received: from critter.freebsd.dk (localhost [127.0.0.1]) by critter.freebsd.dk (8.14.2/8.14.2) with ESMTP id m1GMiS6O013492; Sat, 16 Feb 2008 22:44:29 GMT (envelope-from phk@critter.freebsd.dk) To: Michel Talon From: "Poul-Henning Kamp" In-Reply-To: Your message of "Sat, 16 Feb 2008 23:22:30 +0100." <20080216222230.GA47480@lpthe.jussieu.fr> Date: Sat, 16 Feb 2008 22:44:28 +0000 Message-ID: <13491.1203201868@critter.freebsd.dk> Sender: phk@critter.freebsd.dk Cc: arch@freebsd.org Subject: Re: Fifolog - a circular file for embedded systems X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 16 Feb 2008 22:44:31 -0000 In message <20080216222230.GA47480@lpthe.jussieu.fr>, Michel Talon writes: >Bjoern A. Zeeb wrote: >> > I need it as a free standing facility in another contract, and that >> > got >> > me wondering if it should be included in FreeBSD as a general tool ? >> >> I think it's a very useful tool, especially for embedded systems and >> other installations with similar contraints, but I'd like to see it >> in ports rather than base (unless I am missing something and it >> depends on some special features of base that, when changing, >> could possible break it). > >One may argue that this facility is potentially useful for a straight >computer in case you want to strictly bound the size of logs in /var, >and as such should be a useful option in the base system. A contrario >i don't see what is gained by relegating it to ports. Quite generally >kernel modules in ports are more a hassle than anything else. First of all, this is not a kernel module, it is purely a userland thing. But yes, for a number of reasons, I personally lean towards the base system, as that would allow us to offer it as an option for syslog also on regular systems. -- Poul-Henning Kamp | UNIX since Zilog Zeus 3.20 phk@FreeBSD.ORG | TCP/IP since RFC 956 FreeBSD committer | BSD since 4.3-tahoe Never attribute to malice what can adequately be explained by incompetence.