From geert@linux-m68k.org Thu Jan 1 03:50:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n019owGf006663 for ; Thu, 1 Jan 2009 03:50:59 -0600 X-ASG-Debug-ID: 1230803456-664603e00000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from winston.telenet-ops.be (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id F2674577A9 for ; Thu, 1 Jan 2009 01:50:56 -0800 (PST) Received: from winston.telenet-ops.be (winston.telenet-ops.be [195.130.137.75]) by cuda.sgi.com with ESMTP id HLOEPBCk5oMGFtQj for ; Thu, 01 Jan 2009 01:50:56 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by winston.telenet-ops.be (Postfix) with SMTP id D3714A0038; Thu, 1 Jan 2009 10:50:55 +0100 (CET) Received: from anakin.of.borg (d54C15368.access.telenet.be [84.193.83.104]) by winston.telenet-ops.be (Postfix) with ESMTP id 890F2A0057; Thu, 1 Jan 2009 10:50:55 +0100 (CET) Received: from anakin.of.borg (localhost [127.0.0.1]) by anakin.of.borg (8.14.3/8.14.3/Debian-5) with ESMTP id n019ot1Y015490 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Thu, 1 Jan 2009 10:50:55 +0100 Received: from localhost (geert@localhost) by anakin.of.borg (8.14.3/8.14.3/Submit) with ESMTP id n019oqLs015487; Thu, 1 Jan 2009 10:50:52 +0100 X-Authentication-Warning: anakin.of.borg: geert owned process doing -bs Date: Thu, 1 Jan 2009 10:50:52 +0100 (CET) From: Geert Uytterhoeven Sender: geert@linux-m68k.org To: Lachlan McIlroy , Christoph Hellwig cc: Linus Torvalds , Linux Kernel Development , xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [GIT PULL] XFS update for 2.6.29 Subject: Re: [GIT PULL] XFS update for 2.6.29 In-Reply-To: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> Message-ID: References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: winston.telenet-ops.be[195.130.137.75] X-Barracuda-Start-Time: 1230803456 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14141 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, 30 Dec 2008, Lachlan McIlroy wrote: > The following changes since commit 3c92ec8ae91ecf59d88c798301833d7cf83f2179: > Linus Torvalds (1): > Merge branch 'next' of git://git.kernel.org/.../paulus/powerpc > > are available in the git repository at: > > git://oss.sgi.com/oss/git/xfs/xfs.git for-linus > Christoph Hellwig (91): > [XFS] refactor xfs_btree_readahead On m68k, with CONFIG_LBD=n: | fs/xfs/xfs_btree.c: In function 'xfs_btree_readahead_lblock': | fs/xfs/xfs_btree.c:736: warning: comparison is always true due to limited range of data type | fs/xfs/xfs_btree.c:741: warning: comparison is always true due to limited range of data type left/right = xfs_fsblock_t (32 or 64 bit), NULLDFSBNO = xfs_dfsbno_t (64 bit) Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 11:03:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01H3Vbv006469 for ; Thu, 1 Jan 2009 11:03:32 -0600 X-ASG-Debug-ID: 1230829410-1d3d021a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B3CF91BF7DAF; Thu, 1 Jan 2009 09:03:30 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id xMxWMhPS8M21HjC3; Thu, 01 Jan 2009 09:03:30 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIQxF-0004gN-4B; Thu, 01 Jan 2009 17:03:29 +0000 Date: Thu, 1 Jan 2009 12:03:29 -0500 From: Christoph Hellwig To: Geert Uytterhoeven Cc: Lachlan McIlroy , Christoph Hellwig , Linus Torvalds , Linux Kernel Development , xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [GIT PULL] XFS update for 2.6.29 Subject: Re: [GIT PULL] XFS update for 2.6.29 Message-ID: <20090101170329.GA17892@infradead.org> References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230829410 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 10:50:52AM +0100, Geert Uytterhoeven wrote: > | fs/xfs/xfs_btree.c: In function 'xfs_btree_readahead_lblock': > | fs/xfs/xfs_btree.c:736: warning: comparison is always true due to limited range of data type > | fs/xfs/xfs_btree.c:741: warning: comparison is always true due to limited range of data type > > left/right = xfs_fsblock_t (32 or 64 bit), NULLDFSBNO = xfs_dfsbno_t (64 bit) Hmm, can't reproduce it here with CONFIG_LBD=n on x86, but the following patch should fix it: Index: linux-2.6/fs/xfs/xfs_btree.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_btree.c 2009-01-01 15:57:04.606547140 +0100 +++ linux-2.6/fs/xfs/xfs_btree.c 2009-01-01 15:57:24.780673454 +0100 @@ -730,8 +730,8 @@ xfs_btree_readahead_lblock( struct xfs_btree_block *block) { int rval = 0; - xfs_fsblock_t left = be64_to_cpu(block->bb_u.l.bb_leftsib); - xfs_fsblock_t right = be64_to_cpu(block->bb_u.l.bb_rightsib); + xfs_dfsbno_t left = be64_to_cpu(block->bb_u.l.bb_leftsib); + xfs_dfsbno_t right = be64_to_cpu(block->bb_u.l.bb_rightsib); if ((lr & XFS_BTCUR_LEFTRA) && left != NULLDFSBNO) { xfs_btree_reada_bufl(cur->bc_mp, left, 1); From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 11:14:45 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01HEjH5007288 for ; Thu, 1 Jan 2009 11:14:45 -0600 X-ASG-Debug-ID: 1230830081-4213023f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2AC8657F1F for ; Thu, 1 Jan 2009 09:14:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 1UU7Ygkn4Tp57q5i for ; Thu, 01 Jan 2009 09:14:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIR7Z-0005nh-Nf; Thu, 01 Jan 2009 17:14:09 +0000 Date: Thu, 1 Jan 2009 12:14:09 -0500 From: Christoph Hellwig To: Mario Becroft Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error when NFS client accesses nonexistent inode Subject: Re: XFS internal error when NFS client accesses nonexistent inode Message-ID: <20090101171409.GA18020@infradead.org> References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230830084 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 03:09:08AM +1300, Mario Becroft wrote: > I hit a seemingly strange problem today when I xfsdump/restored some > filesystems from one volume onto another. When I exported the new > volumes, errors like the following started to occur: > > Dec 31 09:12:46 nfs1 kernel: nfsd: non-standard errno: -117 > > Bumping up the XFS debug level revealed the following (full details at > the end): > > Dec 31 09:12:46 nfs1 kernel: Filesystem "dm-17": XFS internal error xfs_imap_to_bp at line 186 of file fs/xfs/xfs_inode.c. Caller 0xffffffff80374c48 This is: di_ok = be16_to_cpu(dip->di_core.di_magic) == XFS_DINODE_GOOD_VERSION(dip->di_core.di_version); if (unlikely(XFS_TEST_ERROR(!di_ok, mp, XFS_ERRTAG_ITOBP_INOTOBP, XFS_RANDOM_ITOBP_INOTOBP))) { if (imap_flags & XFS_IMAP_BULKSTAT) { xfs_trans_brelse(tp, bp); return XFS_ERROR(EINVAL); } here --> XFS_CORRUPTION_ERROR("xfs_imap_to_bp", XFS_ERRLEVEL_HIGH, mp, dip); > After wasting quite a lot of time, I finally realised that this was > probably caused by NFS clients accessing nonexistent file handles that > they had open from when the filesystem was previously exported, prior to > the dump/restore. > > Is my analysis correct? Is an internal error the expected behaviour in > this case? And can this cause any harm? That explanation makes a lot of sense. As seen in the snipplet above we actually have checks for bulkstat which might hand in invalid inode numbers, and I think we need to extent this check to nfs export and the handle ioctls, too as we can get arbitrary inode numbers passed from a client / user space. In addition we should probably translate the error number into something more useful. I will create a testcase using the handle ioctls for this and provide a fix to handle this issue more gracefully. Except for shutting down a perfectly fine filesystem this should not cause additional damage. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 11:17:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01HHEWX007587 for ; Thu, 1 Jan 2009 11:17:15 -0600 X-ASG-Debug-ID: 1230830233-416d008a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E765E1BF7E05; Thu, 1 Jan 2009 09:17:13 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Z9elgotfTrEHgb3B; Thu, 01 Jan 2009 09:17:13 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIRAX-0006HL-Lv; Thu, 01 Jan 2009 17:17:13 +0000 Date: Thu, 1 Jan 2009 12:17:13 -0500 From: Christoph Hellwig To: Mario Becroft Cc: xfs@oss.sgi.com, wkendall@sgi.com X-ASG-Orig-Subj: Feature requests, was Re: XFS internal error when NFS client accesses nonexistent inode Subject: Feature requests, was Re: XFS internal error when NFS client accesses nonexistent inode Message-ID: <20090101171713.GB18020@infradead.org> References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230830233 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 03:09:08AM +1300, Mario Becroft wrote: > While I am writing, two things I wish XFS could do, and two more that > would be jolly nice to have: > > 1. shrink filesystems http://xfs.org/index.php/Shrinking_Support > 2. dump/restore preserving inode numbers That's very hard to do, given that inode numbers encode the location on disk. To support your NFS exporting scenario you would also have to preserve the generation number, which also forms part of the nfs file handle. > 3. high-performance dump with multi-threaded reading to fully utilise > disk throughput Didn't xfsdump in IRIX have some sort of multi-stream support. Bill, do you remember anything like that? > 4. on-line xfs_check/repair Well, you can check online, it's just not going to give good results. Using snaphots you can easily check online, and with a little hack even repair, but you'd still have to reboot to then use the repaired filesystem. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 11:37:57 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01HbvxJ009025 for ; Thu, 1 Jan 2009 11:37:57 -0600 X-ASG-Debug-ID: 1230831476-08b503af0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B47201BF7CEC for ; Thu, 1 Jan 2009 09:37:56 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id vwkoX3dO19H3RclK for ; Thu, 01 Jan 2009 09:37:56 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIRUa-00086T-FS; Thu, 01 Jan 2009 17:37:56 +0000 Date: Thu, 1 Jan 2009 12:37:56 -0500 From: Christoph Hellwig To: Mario Becroft Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error when NFS client accesses nonexistent inode Subject: Re: XFS internal error when NFS client accesses nonexistent inode Message-ID: <20090101173756.GA31126@infradead.org> References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> <20090101171409.GA18020@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101171409.GA18020@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230831476 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com This should cure your shutdowns on a 2.6.27-ish codebase: Index: btrfs-unstable/fs/xfs/linux-2.6/xfs_export.c =================================================================== --- btrfs-unstable.orig/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 18:34:39.868671500 +0100 +++ btrfs-unstable/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 18:35:37.224782654 +0100 @@ -127,8 +127,8 @@ xfs_nfs_get_inode( if (ino == 0) return ERR_PTR(-ESTALE); - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); + error = xfs_iget(mp, NULL, ino, XFS_IGET_BULKSTAT, XFS_ILOCK_SHARED, &ip, 0); return ERR_PTR(-error); if (!ip) return ERR_PTR(-EIO); From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 11:45:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_31,J_CHICKENPOX_41,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01HjuYN009427 for ; Thu, 1 Jan 2009 11:45:56 -0600 X-ASG-Debug-ID: 1230831955-416f010a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 527A71BF8141 for ; Thu, 1 Jan 2009 09:45:55 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id aut5NbdYra4ODB4o for ; Thu, 01 Jan 2009 09:45:55 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIRbn-0000Zx-UM; Thu, 01 Jan 2009 17:45:23 +0000 Date: Thu, 1 Jan 2009 12:45:23 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: J?rgen Tegn?r X-ASG-Orig-Subj: fix fsrlast location in --help output Subject: fix fsrlast location in --help output Message-ID: <20090101174523.GA515@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230831955 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Make sure xfs_fsr --help outputs the correct location for the fsrlast file. Also add a _PATH_FSRLAST define to not have to keep this multiple times in the source code, and remove a comment in xfs_fsr.c duplicating the help text and manpage. This fixes Debian bug #491525. Reported-by: J?rgen Tegn?r Signed-off-by: Christoph Hellwig Index: xfsdump/fsr/xfs_fsr.c =================================================================== --- xfsdump.orig/fsr/xfs_fsr.c 2009-01-01 11:00:32.298701760 +0100 +++ xfsdump/fsr/xfs_fsr.c 2009-01-01 11:03:47.782548742 +0100 @@ -16,31 +16,6 @@ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ -/* - * fsr - file system reorganizer - * - * fsr [-d] [-v] [-n] [-s] [-g] [-t secs] [-f leftf] [-m mtab] - * fsr [-d] [-v] [-n] [-s] [-g] xfsdev | dir | file ... - * - * If invoked in the first form fsr does the following: starting with the - * dev/inum specified in /etc/fsrlast this reorgs each reg file in each file - * system found in /etc/mtab. After 2 hours of this we record the current - * dev/inum in /etc/fsrlast. If there is no /etc/fsrlast fsr starts at the - * top of /etc/mtab. - * - * -g print to syslog (default if stdout not a tty) - * -m mtab use something other than /etc/mtab - * -t time how long to run - * -f leftoff use this instead of /etc/fsrlast - * - * -v verbose. more -v's more verbose - * -d debug. print even more - * -n do nothing. only interesting with -v. Not - * effective with in mtab mode. - * -s print statistics only. - * -p passes Number of passes before terminating global re-org. - */ - #include #include #include "config.h" @@ -63,6 +38,7 @@ #define XFS_XFLAG_NODEFRAG 0x00002000 /* src dependancy, remove later */ #endif +#define _PATH_FSRLAST "/var/tmp/.fsrlast_xfs" char *progname; @@ -98,7 +74,7 @@ static __int64_t minimumfree = 2048; #define min(x, y) ((x) < (y) ? (x) : (y)) static time_t howlong = 7200; /* default seconds of reorganizing */ -static char *leftofffile = "/var/tmp/.fsrlast_xfs";/* where we left off last */ +static char *leftofffile = _PATH_FSRLAST; /* where we left off last */ static char *mtab = MOUNTED; static time_t endtime; static time_t starttime; @@ -368,11 +344,11 @@ usage(int ret) " -g Print to syslog (default if stdout not a tty).\n" " -t time How long to run in seconds.\n" " -p passes Number of passes before terminating global re-org.\n" -" -f leftoff Use this instead of /etc/fsrlast.\n" +" -f leftoff Use this instead of %s.\n" " -m mtab Use something other than /etc/mtab.\n" " -d Debug, print even more.\n" " -v Verbose, more -v's more verbose.\n" - ), progname, progname); + ), progname, progname, _PATH_FSRLAST); exit(ret); } From sandeen@sandeen.net Thu Jan 1 11:55:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Htn6e010256 for ; Thu, 1 Jan 2009 11:55:56 -0600 X-ASG-Debug-ID: 1230832547-2a6e025f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C20D1BF805E for ; Thu, 1 Jan 2009 09:55:47 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id aOKqcQfXEaFpd1kK for ; Thu, 01 Jan 2009 09:55:47 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id DEE6FAABFCB; Thu, 1 Jan 2009 11:55:46 -0600 (CST) Message-ID: <495D03A1.6090307@sandeen.net> Date: Thu, 01 Jan 2009 11:55:45 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] xfsprogs: make install-qa should only install additional headers Subject: Re: [PATCH] xfsprogs: make install-qa should only install additional headers References: <20081230174152.GA18469@infradead.org> In-Reply-To: <20081230174152.GA18469@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230832548 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14168 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > make install-qa should only install the headers a normal install-dev > doesn't install instead of repeating the whole game. > > That way the additional headers for xfsqa can be installed manually > while using dpkg / rpm for the normal package. This seems mostly ok, but "install-qa" sort of sounds like it should install the headers you need for qa and it doesn't, it only (now) installs the extras right...? By itself it's kind of a useless target without also running install-dev isn't it? To be correct, I think install-qa should have install-dev as a prereq. Maybe do that, and add a new install-qa-only target? :) > > Signed-off-by: Christoph Hellwig > > Index: xfsprogs/Makefile > =================================================================== > --- xfsprogs/Makefile 2008-12-30 13:03:06.000000000 +0000 > +++ xfsprogs/Makefile 2008-12-30 13:03:15.000000000 +0000 > @@ -76,7 +76,7 @@ > > install-dev: default $(addsuffix -install-dev,$(SUBDIRS)) > > -install-qa: install $(addsuffix -install-qa,$(SUBDIRS)) > +install-qa: default $(addsuffix -install-qa,$(SUBDIRS)) > > %-install: > $(MAKE) -C $* install > Index: xfsprogs/include/Makefile > =================================================================== > --- xfsprogs/include/Makefile 2008-12-30 13:02:05.000000000 +0000 > +++ xfsprogs/include/Makefile 2008-12-30 13:02:31.000000000 +0000 > @@ -54,5 +54,5 @@ > $(INSTALL) -m 755 -d $(DK_INC_DIR) > $(INSTALL) -m 644 $(DKHFILES) $(DK_INC_DIR) > > -install-qa: install-dev > +install-qa: default > $(INSTALL) -m 644 $(QAHFILES) $(PKG_INC_DIR) > Index: xfsprogs/libdisk/Makefile > =================================================================== > --- xfsprogs/libdisk/Makefile 2008-12-30 13:00:53.000000000 +0000 > +++ xfsprogs/libdisk/Makefile 2008-12-30 13:01:39.000000000 +0000 > @@ -29,4 +29,4 @@ > install-dev: default > $(INSTALL_LTLIB_STATIC) > > -install-qa: install-dev > +install-qa: default > Index: xfsprogs/libhandle/Makefile > =================================================================== > --- xfsprogs/libhandle/Makefile 2008-12-30 13:01:09.000000000 +0000 > +++ xfsprogs/libhandle/Makefile 2008-12-30 13:01:34.000000000 +0000 > @@ -22,4 +22,4 @@ > install-dev: default > $(INSTALL_LTLIB_DEV) > > -install-qa: install-dev > +install-qa: default > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Jan 1 12:04:41 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_14, J_CHICKENPOX_31,J_CHICKENPOX_41,J_CHICKENPOX_53 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01I4fhv010728 for ; Thu, 1 Jan 2009 12:04:41 -0600 X-ASG-Debug-ID: 1230833079-417001870000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 448061BF7F72 for ; Thu, 1 Jan 2009 10:04:39 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id kyU2CTrVOJIekqnu for ; Thu, 01 Jan 2009 10:04:39 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 5B2E2A9FEA0; Thu, 1 Jan 2009 12:04:40 -0600 (CST) Message-ID: <495D05B7.8020600@sandeen.net> Date: Thu, 01 Jan 2009 12:04:39 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, J?rgen Tegn?r X-ASG-Orig-Subj: Re: fix fsrlast location in --help output Subject: Re: fix fsrlast location in --help output References: <20090101174523.GA515@infradead.org> In-Reply-To: <20090101174523.GA515@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230833080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14168 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > Make sure xfs_fsr --help outputs the correct location for the fsrlast > file. Also add a _PATH_FSRLAST define to not have to keep this multiple > times in the source code, and remove a comment in xfs_fsr.c duplicating > the help text and manpage. > > This fixes Debian bug #491525. > > > Reported-by: J?rgen Tegn?r > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > Index: xfsdump/fsr/xfs_fsr.c > =================================================================== > --- xfsdump.orig/fsr/xfs_fsr.c 2009-01-01 11:00:32.298701760 +0100 > +++ xfsdump/fsr/xfs_fsr.c 2009-01-01 11:03:47.782548742 +0100 > @@ -16,31 +16,6 @@ > * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA > */ > > -/* > - * fsr - file system reorganizer > - * > - * fsr [-d] [-v] [-n] [-s] [-g] [-t secs] [-f leftf] [-m mtab] > - * fsr [-d] [-v] [-n] [-s] [-g] xfsdev | dir | file ... > - * > - * If invoked in the first form fsr does the following: starting with the > - * dev/inum specified in /etc/fsrlast this reorgs each reg file in each file > - * system found in /etc/mtab. After 2 hours of this we record the current > - * dev/inum in /etc/fsrlast. If there is no /etc/fsrlast fsr starts at the > - * top of /etc/mtab. > - * > - * -g print to syslog (default if stdout not a tty) > - * -m mtab use something other than /etc/mtab > - * -t time how long to run > - * -f leftoff use this instead of /etc/fsrlast > - * > - * -v verbose. more -v's more verbose > - * -d debug. print even more > - * -n do nothing. only interesting with -v. Not > - * effective with in mtab mode. > - * -s print statistics only. > - * -p passes Number of passes before terminating global re-org. > - */ > - > #include > #include > #include "config.h" > @@ -63,6 +38,7 @@ > #define XFS_XFLAG_NODEFRAG 0x00002000 /* src dependancy, remove later */ > #endif > > +#define _PATH_FSRLAST "/var/tmp/.fsrlast_xfs" > > char *progname; > > @@ -98,7 +74,7 @@ static __int64_t minimumfree = 2048; > #define min(x, y) ((x) < (y) ? (x) : (y)) > > static time_t howlong = 7200; /* default seconds of reorganizing */ > -static char *leftofffile = "/var/tmp/.fsrlast_xfs";/* where we left off last */ > +static char *leftofffile = _PATH_FSRLAST; /* where we left off last */ > static char *mtab = MOUNTED; > static time_t endtime; > static time_t starttime; > @@ -368,11 +344,11 @@ usage(int ret) > " -g Print to syslog (default if stdout not a tty).\n" > " -t time How long to run in seconds.\n" > " -p passes Number of passes before terminating global re-org.\n" > -" -f leftoff Use this instead of /etc/fsrlast.\n" > +" -f leftoff Use this instead of %s.\n" > " -m mtab Use something other than /etc/mtab.\n" > " -d Debug, print even more.\n" > " -v Verbose, more -v's more verbose.\n" > - ), progname, progname); > + ), progname, progname, _PATH_FSRLAST); > exit(ret); > } > > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 13:00:41 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01J0ecQ014186 for ; Thu, 1 Jan 2009 13:00:41 -0600 X-ASG-Debug-ID: 1230836439-416e02990000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0FF171BF81F4 for ; Thu, 1 Jan 2009 11:00:39 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 3dDGwCEoFJ0en9mT for ; Thu, 01 Jan 2009 11:00:39 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LISmd-0008Cw-NI; Thu, 01 Jan 2009 19:00:39 +0000 Date: Thu, 1 Jan 2009 14:00:39 -0500 From: Christoph Hellwig To: Mario Becroft Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error when NFS client accesses nonexistent inode Subject: Re: XFS internal error when NFS client accesses nonexistent inode Message-ID: <20090101190039.GA29959@infradead.org> References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> <20090101171409.GA18020@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101171409.GA18020@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230836440 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Btw, you update /proc/sys/fs/xfs/error_level manually? The corruption test only triggers from a avalue of 5, but 3 is the default. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 13:21:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01JLI8J015967 for ; Thu, 1 Jan 2009 13:21:19 -0600 X-ASG-Debug-ID: 1230837676-4c6500310000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0B3E358275 for ; Thu, 1 Jan 2009 11:21:16 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id hSFeFEWLB3vQ8hzj for ; Thu, 01 Jan 2009 11:21:16 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIT6a-0001p0-Cg; Thu, 01 Jan 2009 19:21:16 +0000 Date: Thu, 1 Jan 2009 14:21:16 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Mario Becroft X-ASG-Orig-Subj: [PATCH] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations Subject: [PATCH] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations Message-ID: <20090101192116.GA6986@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230837678 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com NFS clients or users of the handle ioctls can pass us arbitrary inode numbers through the exportfs interface. Make sure we use the XFS_IGET_BULKSTAT so that these don't cause shutdowns due to the corruption checks. Also translate the EINVAL we get back for invalid inode clusters into an ESTALE which is more appropinquate, and remove the useless check for a NULL inode on a successfull xfs_iget return. I have a testcase to reproduce this using the handle interface which I will submit to xfsqa. Reported-by: Mario Becroft Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/linux-2.6/xfs_export.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 20:06:06.145674550 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 20:14:59.673658382 +0100 @@ -126,11 +126,26 @@ xfs_nfs_get_inode( if (ino == 0) return ERR_PTR(-ESTALE); - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); - if (error) + /* + * The XFS_IGET_BULKSTAT means that an invalid inode number is just + * fine and not an indication of a corrupted filesystem. Because + * clients can send any kind of invalid file handle, e.g. after + * a restore on the server we have to deal with this case gracefully. + */ + error = xfs_iget(mp, NULL, ino, XFS_IGET_BULKSTAT, + XFS_ILOCK_SHARED, &ip, 0); + if (error) { + /* + * EINVAL means the inode cluster doesn't exist anymore. + * This implies the filehandle is stale, so we should + * translate it here. + * We don't use ESTALE directly down the chain to not + * confuse applications using bulkstat that expect EINVAL. + */ + if (error == EINVAL) + error = ESTALE; return ERR_PTR(-error); - if (!ip) - return ERR_PTR(-EIO); + } if (ip->i_d.di_gen != generation) { xfs_iput_new(ip, XFS_ILOCK_SHARED); From sandeen@sandeen.net Thu Jan 1 16:25:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_93 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MPuhm030698 for ; Thu, 1 Jan 2009 16:25:56 -0600 X-ASG-Debug-ID: 1230848751-4257006a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C7F6258593 for ; Thu, 1 Jan 2009 14:25:52 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id QE5AUzN63D9LJnXi for ; Thu, 01 Jan 2009 14:25:52 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 9A64DAC6273 for ; Thu, 1 Jan 2009 16:25:19 -0600 (CST) Message-ID: <495D42CE.6060806@sandeen.net> Date: Thu, 01 Jan 2009 16:25:18 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] create xfstests install target Subject: [PATCH] create xfstests install target Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230848754 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Not sure what the best location for this is in the end, but that's just a one-line change in builddefs.in if it should move. Currently it goes to whatever configure thinks "libexecdir" is. Once we have an install target we can probably hook this up to makepkgs etc, too, and even publish tarballs & packages. :) Signed-off-by: Eric Sandeen --- Index: xfstests-dev.work/Makefile =================================================================== --- xfstests-dev.work.orig/Makefile +++ xfstests-dev.work/Makefile @@ -62,7 +62,21 @@ $(DMAPI_MAKEFILE): aclocal.m4:: aclocal --acdir=`pwd`/m4 --output=$@ -install install-dev install-lib: +install: default $(addsuffix -install,$(SUBDIRS)) + $(INSTALL) -m 755 -d $(PKG_LIB_DIR) + $(INSTALL) -m 755 check $(PKG_LIB_DIR) + $(INSTALL) -m 755 [0-9]?? $(PKG_LIB_DIR) + $(INSTALL) -m 755 run.* $(PKG_LIB_DIR) + $(INSTALL) -m 644 group $(PKG_LIB_DIR) + $(INSTALL) -m 644 randomize.awk $(PKG_LIB_DIR) + $(INSTALL) -m 644 [0-9]??.* $(PKG_LIB_DIR) + $(INSTALL) -m 644 common* $(PKG_LIB_DIR) + +# Nothing. +install-dev install-lib: + +%-install: + $(MAKE) -C $* install realclean distclean: clean rm -f $(LDIRT) $(CONFIGURE) Index: xfstests-dev.work/include/builddefs.in =================================================================== --- xfstests-dev.work.orig/include/builddefs.in +++ xfstests-dev.work/include/builddefs.in @@ -27,6 +27,8 @@ PKG_RELEASE = @pkg_release@ PKG_VERSION = @pkg_version@ PKG_PLATFORM = @pkg_platform@ PKG_DISTRIBUTION= @pkg_distribution@ +PKG_SBIN_DIR = @sbindir@ +PKG_LIB_DIR = @libexecdir@@libdirsuffix@/@pkg_name@ CC = @cc@ AWK = @awk@ Index: xfstests-dev.work/ltp/Makefile =================================================================== --- xfstests-dev.work.orig/ltp/Makefile +++ xfstests-dev.work/ltp/Makefile @@ -49,3 +49,8 @@ ifeq ($(HAVE_AIO), true) aio-stress: aio-stress.c $(LINKTEST) $(LIBAIO) $(LDLIBS) endif + +install: + $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/ltp + $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/ltp + Index: xfstests-dev.work/src/Makefile =================================================================== --- xfstests-dev.work.orig/src/Makefile +++ xfstests-dev.work/src/Makefile @@ -126,3 +126,10 @@ open_unlink: open_unlink.o $(LIBHANDLE) $(LINKTEST) $(LIBHANDLE) $(LDLIBS) endif + +install: + $(INSTALL) -m 755 -d $(PKG_LIB_DIR)/src + $(INSTALL) -m 755 $(TARGETS) $(PKG_LIB_DIR)/src + $(INSTALL) -m 755 fill2attr fill2fs $(PKG_LIB_DIR)/src + $(INSTALL) -m 755 fill2fs_check scaleread.sh $(PKG_LIB_DIR)/src + $(INSTALL) -m 644 dumpfile $(PKG_LIB_DIR)/src From sandeen@sandeen.net Thu Jan 1 16:32:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MW5gA031208 for ; Thu, 1 Jan 2009 16:32:05 -0600 X-ASG-Debug-ID: 1230849122-42ae013d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6C0CD1BF860C for ; Thu, 1 Jan 2009 14:32:02 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id xOWRVN92FT9aEZB1 for ; Thu, 01 Jan 2009 14:32:02 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 64A14AC6273; Thu, 1 Jan 2009 16:31:32 -0600 (CST) Message-ID: <495D4443.6010104@sandeen.net> Date: Thu, 01 Jan 2009 16:31:31 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs@oss.sgi.com, Mario Becroft X-ASG-Orig-Subj: Re: [PATCH] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations Subject: Re: [PATCH] pass XFS_IGET_BULKSTAT to xfs_iget for handle operations References: <20090101192116.GA6986@infradead.org> In-Reply-To: <20090101192116.GA6986@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849124 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > NFS clients or users of the handle ioctls can pass us arbitrary inode > numbers through the exportfs interface. Make sure we use the > XFS_IGET_BULKSTAT so that these don't cause shutdowns due to the corruption > checks. Also translate the EINVAL we get back for invalid inode clusters > into an ESTALE which is more appropinquate, and remove the useless check > for a NULL inode on a successfull xfs_iget return. > > I have a testcase to reproduce this using the handle interface which > I will submit to xfsqa. > > > Reported-by: Mario Becroft > Signed-off-by: Christoph Hellwig Reviewed-by: Eric Sandeen > Index: xfs/fs/xfs/linux-2.6/xfs_export.c > =================================================================== > --- xfs.orig/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 20:06:06.145674550 +0100 > +++ xfs/fs/xfs/linux-2.6/xfs_export.c 2009-01-01 20:14:59.673658382 +0100 > @@ -126,11 +126,26 @@ xfs_nfs_get_inode( > if (ino == 0) > return ERR_PTR(-ESTALE); > > - error = xfs_iget(mp, NULL, ino, 0, XFS_ILOCK_SHARED, &ip, 0); > - if (error) > + /* > + * The XFS_IGET_BULKSTAT means that an invalid inode number is just > + * fine and not an indication of a corrupted filesystem. Because > + * clients can send any kind of invalid file handle, e.g. after > + * a restore on the server we have to deal with this case gracefully. > + */ > + error = xfs_iget(mp, NULL, ino, XFS_IGET_BULKSTAT, > + XFS_ILOCK_SHARED, &ip, 0); > + if (error) { > + /* > + * EINVAL means the inode cluster doesn't exist anymore. > + * This implies the filehandle is stale, so we should > + * translate it here. > + * We don't use ESTALE directly down the chain to not > + * confuse applications using bulkstat that expect EINVAL. > + */ > + if (error == EINVAL) > + error = ESTALE; > return ERR_PTR(-error); > - if (!ip) > - return ERR_PTR(-EIO); > + } > > if (ip->i_d.di_gen != generation) { > xfs_iput_new(ip, XFS_ILOCK_SHARED); > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From sandeen@sandeen.net Thu Jan 1 16:40:58 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mewdh031892 for ; Thu, 1 Jan 2009 16:40:58 -0600 X-ASG-Debug-ID: 1230849656-135902070000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E1BFB58670 for ; Thu, 1 Jan 2009 14:40:56 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 0cvBYdAFE0zBvxin for ; Thu, 01 Jan 2009 14:40:56 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id 1FCBDA84090; Thu, 1 Jan 2009 16:40:57 -0600 (CST) Message-Id: <20090101224056.845580476@sandeen.net> References: <20090101224009.616367334@sandeen.net> User-Agent: quilt/0.46-1 Date: Thu, 01 Jan 2009 16:40:10 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 1/4] Remove several unused typedefs. Subject: [patch 1/4] Remove several unused typedefs. Content-Disposition: inline; filename=unused_typedefs X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849656 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/linux-2.6/xfs_aops.h =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_aops.h +++ xfs/fs/xfs/linux-2.6/xfs_aops.h @@ -21,8 +21,6 @@ extern struct workqueue_struct *xfsdatad_workqueue; extern mempool_t *xfs_ioend_pool; -typedef void (*xfs_ioend_func_t)(void *); - /* * xfs_ioend struct manages large extent writes for XFS. * It can manage several multi-page bio's at once. Index: xfs/fs/xfs/xfs_acl.h =================================================================== --- xfs.orig/fs/xfs/xfs_acl.h +++ xfs/fs/xfs/xfs_acl.h @@ -22,7 +22,6 @@ * Access Control Lists */ typedef __uint16_t xfs_acl_perm_t; -typedef __int32_t xfs_acl_type_t; typedef __int32_t xfs_acl_tag_t; typedef __int32_t xfs_acl_id_t; Index: xfs/fs/xfs/xfs_types.h =================================================================== --- xfs.orig/fs/xfs/xfs_types.h +++ xfs/fs/xfs/xfs_types.h @@ -111,8 +111,6 @@ typedef __uint64_t xfs_fileoff_t; /* blo typedef __int64_t xfs_sfiloff_t; /* signed block number in a file */ typedef __uint64_t xfs_filblks_t; /* number of blocks in a file */ -typedef __uint8_t xfs_arch_t; /* architecture of an xfs fs */ - /* * Null values for the types. */ -- From sandeen@sandeen.net Thu Jan 1 16:40:59 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_55, J_CHICKENPOX_57 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mex7o031902 for ; Thu, 1 Jan 2009 16:40:59 -0600 X-ASG-Debug-ID: 1230849656-3ef1020e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A141B1BF865F for ; Thu, 1 Jan 2009 14:40:56 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id UBcJiTI2IK8pWVwB for ; Thu, 01 Jan 2009 14:40:56 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id 6C4F8A81D59; Thu, 1 Jan 2009 16:40:57 -0600 (CST) Message-Id: <20090101224057.147361063@sandeen.net> References: <20090101224009.616367334@sandeen.net> User-Agent: quilt/0.46-1 Date: Thu, 01 Jan 2009 16:40:11 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 2/4] Remove macro-to-function indirections in attr code Subject: [patch 2/4] Remove macro-to-function indirections in attr code Content-Disposition: inline; filename=ATTR_SHOUTING X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849657 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/xfs_attr_leaf.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr_leaf.c +++ xfs/fs/xfs/xfs_attr_leaf.c @@ -736,7 +736,7 @@ xfs_attr_shortform_allfit(xfs_dabuf_t *b continue; /* don't copy partial entries */ if (!(entry->flags & XFS_ATTR_LOCAL)) return(0); - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); + name_loc = xfs_attr_leaf_name_local(leaf, i); if (name_loc->namelen >= XFS_ATTR_SF_ENTSIZE_MAX) return(0); if (be16_to_cpu(name_loc->valuelen) >= XFS_ATTR_SF_ENTSIZE_MAX) @@ -823,7 +823,7 @@ xfs_attr_leaf_to_shortform(xfs_dabuf_t * if (!entry->nameidx) continue; ASSERT(entry->flags & XFS_ATTR_LOCAL); - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); + name_loc = xfs_attr_leaf_name_local(leaf, i); nargs.name = (char *)name_loc->nameval; nargs.namelen = name_loc->namelen; nargs.value = (char *)&name_loc->nameval[nargs.namelen]; @@ -1141,14 +1141,14 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, * as part of this transaction (a split operation for example). */ if (entry->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); + name_loc = xfs_attr_leaf_name_local(leaf, args->index); name_loc->namelen = args->namelen; name_loc->valuelen = cpu_to_be16(args->valuelen); memcpy((char *)name_loc->nameval, args->name, args->namelen); memcpy((char *)&name_loc->nameval[args->namelen], args->value, be16_to_cpu(name_loc->valuelen)); } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf, args->index); name_rmt->namelen = args->namelen; memcpy((char *)name_rmt->name, args->name, args->namelen); entry->flags |= XFS_ATTR_INCOMPLETE; @@ -1159,7 +1159,7 @@ xfs_attr_leaf_add_work(xfs_dabuf_t *bp, args->rmtblkcnt = XFS_B_TO_FSB(mp, args->valuelen); } xfs_da_log_buf(args->trans, bp, - XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), + XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index), xfs_attr_leaf_entsize(leaf, args->index))); /* @@ -1749,10 +1749,10 @@ xfs_attr_leaf_remove(xfs_dabuf_t *bp, xf /* * Compress the remaining entries and zero out the removed stuff. */ - memset(XFS_ATTR_LEAF_NAME(leaf, args->index), 0, entsize); + memset(xfs_attr_leaf_name(leaf, args->index), 0, entsize); be16_add_cpu(&hdr->usedbytes, -entsize); xfs_da_log_buf(args->trans, bp, - XFS_DA_LOGRANGE(leaf, XFS_ATTR_LEAF_NAME(leaf, args->index), + XFS_DA_LOGRANGE(leaf, xfs_attr_leaf_name(leaf, args->index), entsize)); tmp = (be16_to_cpu(hdr->count) - args->index) @@ -1985,7 +1985,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp continue; } if (entry->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, probe); + name_loc = xfs_attr_leaf_name_local(leaf, probe); if (name_loc->namelen != args->namelen) continue; if (memcmp(args->name, (char *)name_loc->nameval, args->namelen) != 0) @@ -1995,7 +1995,7 @@ xfs_attr_leaf_lookup_int(xfs_dabuf_t *bp args->index = probe; return(XFS_ERROR(EEXIST)); } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, probe); + name_rmt = xfs_attr_leaf_name_remote(leaf, probe); if (name_rmt->namelen != args->namelen) continue; if (memcmp(args->name, (char *)name_rmt->name, @@ -2035,7 +2035,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, entry = &leaf->entries[args->index]; if (entry->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); + name_loc = xfs_attr_leaf_name_local(leaf, args->index); ASSERT(name_loc->namelen == args->namelen); ASSERT(memcmp(args->name, name_loc->nameval, args->namelen) == 0); valuelen = be16_to_cpu(name_loc->valuelen); @@ -2050,7 +2050,7 @@ xfs_attr_leaf_getvalue(xfs_dabuf_t *bp, args->valuelen = valuelen; memcpy(args->value, &name_loc->nameval[args->namelen], valuelen); } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf, args->index); ASSERT(name_rmt->namelen == args->namelen); ASSERT(memcmp(args->name, name_rmt->name, args->namelen) == 0); valuelen = be32_to_cpu(name_rmt->valuelen); @@ -2143,7 +2143,7 @@ xfs_attr_leaf_moveents(xfs_attr_leafbloc * off for 6.2, should be revisited later. */ if (entry_s->flags & XFS_ATTR_INCOMPLETE) { /* skip partials? */ - memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); + memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp); be16_add_cpu(&hdr_s->usedbytes, -tmp); be16_add_cpu(&hdr_s->count, -1); entry_d--; /* to compensate for ++ in loop hdr */ @@ -2160,11 +2160,11 @@ xfs_attr_leaf_moveents(xfs_attr_leafbloc entry_d->flags = entry_s->flags; ASSERT(be16_to_cpu(entry_d->nameidx) + tmp <= XFS_LBSIZE(mp)); - memmove(XFS_ATTR_LEAF_NAME(leaf_d, desti), - XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), tmp); + memmove(xfs_attr_leaf_name(leaf_d, desti), + xfs_attr_leaf_name(leaf_s, start_s + i), tmp); ASSERT(be16_to_cpu(entry_s->nameidx) + tmp <= XFS_LBSIZE(mp)); - memset(XFS_ATTR_LEAF_NAME(leaf_s, start_s + i), 0, tmp); + memset(xfs_attr_leaf_name(leaf_s, start_s + i), 0, tmp); be16_add_cpu(&hdr_s->usedbytes, -tmp); be16_add_cpu(&hdr_d->usedbytes, tmp); be16_add_cpu(&hdr_s->count, -1); @@ -2276,12 +2276,12 @@ xfs_attr_leaf_entsize(xfs_attr_leafblock ASSERT(be16_to_cpu(leaf->hdr.info.magic) == XFS_ATTR_LEAF_MAGIC); if (leaf->entries[index].flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, index); - size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(name_loc->namelen, + name_loc = xfs_attr_leaf_name_local(leaf, index); + size = xfs_attr_leaf_entsize_local(name_loc->namelen, be16_to_cpu(name_loc->valuelen)); } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, index); - size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(name_rmt->namelen); + name_rmt = xfs_attr_leaf_name_remote(leaf, index); + size = xfs_attr_leaf_entsize_remote(name_rmt->namelen); } return(size); } @@ -2297,13 +2297,13 @@ xfs_attr_leaf_newentsize(int namelen, in { int size; - size = XFS_ATTR_LEAF_ENTSIZE_LOCAL(namelen, valuelen); - if (size < XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(blocksize)) { + size = xfs_attr_leaf_entsize_local(namelen, valuelen); + if (size < xfs_attr_leaf_entsize_local_max(blocksize)) { if (local) { *local = 1; } } else { - size = XFS_ATTR_LEAF_ENTSIZE_REMOTE(namelen); + size = xfs_attr_leaf_entsize_remote(namelen); if (local) { *local = 0; } @@ -2372,7 +2372,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, if (entry->flags & XFS_ATTR_LOCAL) { xfs_attr_leaf_name_local_t *name_loc = - XFS_ATTR_LEAF_NAME_LOCAL(leaf, i); + xfs_attr_leaf_name_local(leaf, i); retval = context->put_listent(context, entry->flags, @@ -2384,7 +2384,7 @@ xfs_attr_leaf_list_int(xfs_dabuf_t *bp, return retval; } else { xfs_attr_leaf_name_remote_t *name_rmt = - XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); + xfs_attr_leaf_name_remote(leaf, i); int valuelen = be32_to_cpu(name_rmt->valuelen); @@ -2468,11 +2468,11 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *a #ifdef DEBUG if (entry->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf, args->index); + name_loc = xfs_attr_leaf_name_local(leaf, args->index); namelen = name_loc->namelen; name = (char *)name_loc->nameval; } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf, args->index); namelen = name_rmt->namelen; name = (char *)name_rmt->name; } @@ -2487,7 +2487,7 @@ xfs_attr_leaf_clearflag(xfs_da_args_t *a if (args->rmtblkno) { ASSERT((entry->flags & XFS_ATTR_LOCAL) == 0); - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf, args->index); name_rmt->valueblk = cpu_to_be32(args->rmtblkno); name_rmt->valuelen = cpu_to_be32(args->valuelen); xfs_da_log_buf(args->trans, bp, @@ -2534,7 +2534,7 @@ xfs_attr_leaf_setflag(xfs_da_args_t *arg xfs_da_log_buf(args->trans, bp, XFS_DA_LOGRANGE(leaf, entry, sizeof(*entry))); if ((entry->flags & XFS_ATTR_LOCAL) == 0) { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf, args->index); name_rmt->valueblk = 0; name_rmt->valuelen = 0; xfs_da_log_buf(args->trans, bp, @@ -2607,20 +2607,20 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *a #ifdef DEBUG if (entry1->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf1, args->index); + name_loc = xfs_attr_leaf_name_local(leaf1, args->index); namelen1 = name_loc->namelen; name1 = (char *)name_loc->nameval; } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index); namelen1 = name_rmt->namelen; name1 = (char *)name_rmt->name; } if (entry2->flags & XFS_ATTR_LOCAL) { - name_loc = XFS_ATTR_LEAF_NAME_LOCAL(leaf2, args->index2); + name_loc = xfs_attr_leaf_name_local(leaf2, args->index2); namelen2 = name_loc->namelen; name2 = (char *)name_loc->nameval; } else { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); + name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2); namelen2 = name_rmt->namelen; name2 = (char *)name_rmt->name; } @@ -2637,7 +2637,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *a XFS_DA_LOGRANGE(leaf1, entry1, sizeof(*entry1))); if (args->rmtblkno) { ASSERT((entry1->flags & XFS_ATTR_LOCAL) == 0); - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf1, args->index); + name_rmt = xfs_attr_leaf_name_remote(leaf1, args->index); name_rmt->valueblk = cpu_to_be32(args->rmtblkno); name_rmt->valuelen = cpu_to_be32(args->valuelen); xfs_da_log_buf(args->trans, bp1, @@ -2648,7 +2648,7 @@ xfs_attr_leaf_flipflags(xfs_da_args_t *a xfs_da_log_buf(args->trans, bp2, XFS_DA_LOGRANGE(leaf2, entry2, sizeof(*entry2))); if ((entry2->flags & XFS_ATTR_LOCAL) == 0) { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf2, args->index2); + name_rmt = xfs_attr_leaf_name_remote(leaf2, args->index2); name_rmt->valueblk = 0; name_rmt->valuelen = 0; xfs_da_log_buf(args->trans, bp2, @@ -2855,7 +2855,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **tra for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) { if (be16_to_cpu(entry->nameidx) && ((entry->flags & XFS_ATTR_LOCAL) == 0)) { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); + name_rmt = xfs_attr_leaf_name_remote(leaf, i); if (name_rmt->valueblk) count++; } @@ -2883,7 +2883,7 @@ xfs_attr_leaf_inactive(xfs_trans_t **tra for (i = 0; i < be16_to_cpu(leaf->hdr.count); entry++, i++) { if (be16_to_cpu(entry->nameidx) && ((entry->flags & XFS_ATTR_LOCAL) == 0)) { - name_rmt = XFS_ATTR_LEAF_NAME_REMOTE(leaf, i); + name_rmt = xfs_attr_leaf_name_remote(leaf, i); if (name_rmt->valueblk) { lp->valueblk = be32_to_cpu(name_rmt->valueblk); lp->valuelen = XFS_B_TO_FSB(dp->i_mount, Index: xfs/fs/xfs/xfs_attr_leaf.h =================================================================== --- xfs.orig/fs/xfs/xfs_attr_leaf.h +++ xfs/fs/xfs/xfs_attr_leaf.h @@ -151,8 +151,6 @@ typedef struct xfs_attr_leafblock { /* * Cast typed pointers for "local" and "remote" name/value structs. */ -#define XFS_ATTR_LEAF_NAME_REMOTE(leafp,idx) \ - xfs_attr_leaf_name_remote(leafp,idx) static inline xfs_attr_leaf_name_remote_t * xfs_attr_leaf_name_remote(xfs_attr_leafblock_t *leafp, int idx) { @@ -160,8 +158,6 @@ xfs_attr_leaf_name_remote(xfs_attr_leafb &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; } -#define XFS_ATTR_LEAF_NAME_LOCAL(leafp,idx) \ - xfs_attr_leaf_name_local(leafp,idx) static inline xfs_attr_leaf_name_local_t * xfs_attr_leaf_name_local(xfs_attr_leafblock_t *leafp, int idx) { @@ -169,8 +165,6 @@ xfs_attr_leaf_name_local(xfs_attr_leafbl &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; } -#define XFS_ATTR_LEAF_NAME(leafp,idx) \ - xfs_attr_leaf_name(leafp,idx) static inline char *xfs_attr_leaf_name(xfs_attr_leafblock_t *leafp, int idx) { return &((char *)leafp)[be16_to_cpu(leafp->entries[idx].nameidx)]; @@ -181,24 +175,18 @@ static inline char *xfs_attr_leaf_name(x * a "local" name/value structure, a "remote" name/value structure, and * a pointer which might be either. */ -#define XFS_ATTR_LEAF_ENTSIZE_REMOTE(nlen) \ - xfs_attr_leaf_entsize_remote(nlen) static inline int xfs_attr_leaf_entsize_remote(int nlen) { return ((uint)sizeof(xfs_attr_leaf_name_remote_t) - 1 + (nlen) + \ XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1); } -#define XFS_ATTR_LEAF_ENTSIZE_LOCAL(nlen,vlen) \ - xfs_attr_leaf_entsize_local(nlen,vlen) static inline int xfs_attr_leaf_entsize_local(int nlen, int vlen) { return ((uint)sizeof(xfs_attr_leaf_name_local_t) - 1 + (nlen) + (vlen) + XFS_ATTR_LEAF_NAME_ALIGN - 1) & ~(XFS_ATTR_LEAF_NAME_ALIGN - 1); } -#define XFS_ATTR_LEAF_ENTSIZE_LOCAL_MAX(bsize) \ - xfs_attr_leaf_entsize_local_max(bsize) static inline int xfs_attr_leaf_entsize_local_max(int bsize) { return (((bsize) >> 1) + ((bsize) >> 2)); -- From sandeen@sandeen.net Thu Jan 1 16:41:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_102, J_CHICKENPOX_32,J_CHICKENPOX_42,J_CHICKENPOX_44,J_CHICKENPOX_45, J_CHICKENPOX_61,J_CHICKENPOX_62,J_CHICKENPOX_63,J_CHICKENPOX_64, J_CHICKENPOX_66,LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mf15Q031909 for ; Thu, 1 Jan 2009 16:41:01 -0600 X-ASG-Debug-ID: 1230849657-2e68036f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4678A1BF8668 for ; Thu, 1 Jan 2009 14:40:57 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 0HHTRZCzFemoWxKE for ; Thu, 01 Jan 2009 14:40:57 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id E4511A84090; Thu, 1 Jan 2009 16:40:57 -0600 (CST) Message-Id: <20090101224057.782251520@sandeen.net> References: <20090101224009.616367334@sandeen.net> User-Agent: quilt/0.46-1 Date: Thu, 01 Jan 2009 16:40:13 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 4/4] Remove the rest of the macro-to-function indirections. Subject: [patch 4/4] Remove the rest of the macro-to-function indirections. Content-Disposition: inline; filename=last_shouting X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849658 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/quota/xfs_dquot.c =================================================================== --- xfs.orig/fs/xfs/quota/xfs_dquot.c +++ xfs/fs/xfs/quota/xfs_dquot.c @@ -421,7 +421,7 @@ xfs_qm_dqalloc( /* * Initialize the bmap freelist prior to calling bmapi code. */ - XFS_BMAP_INIT(&flist, &firstblock); + xfs_bmap_init(&flist, &firstblock); xfs_ilock(quotip, XFS_ILOCK_EXCL); /* * Return if this type of quotas is turned off while we didn't Index: xfs/fs/xfs/xfs_attr.c =================================================================== --- xfs.orig/fs/xfs/xfs_attr.c +++ xfs/fs/xfs/xfs_attr.c @@ -374,7 +374,7 @@ xfs_attr_set_int(xfs_inode_t *dp, struct * It won't fit in the shortform, transform to a leaf block. * GROT: another possible req'mt for a double-split btree op. */ - XFS_BMAP_INIT(args.flist, args.firstblock); + xfs_bmap_init(args.flist, args.firstblock); error = xfs_attr_shortform_to_leaf(&args); if (!error) { error = xfs_bmap_finish(&args.trans, args.flist, @@ -956,7 +956,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *arg * Commit that transaction so that the node_addname() call * can manage its own transactions. */ - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr_leaf_to_node(args); if (!error) { error = xfs_bmap_finish(&args->trans, args->flist, @@ -1057,7 +1057,7 @@ xfs_attr_leaf_addname(xfs_da_args_t *arg * If the result is small enough, shrink it all into the inode. */ if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr_leaf_to_shortform(bp, args, forkoff); /* bp is gone due to xfs_da_shrink_inode */ if (!error) { @@ -1135,7 +1135,7 @@ xfs_attr_leaf_removename(xfs_da_args_t * * If the result is small enough, shrink it all into the inode. */ if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr_leaf_to_shortform(bp, args, forkoff); /* bp is gone due to xfs_da_shrink_inode */ if (!error) { @@ -1290,7 +1290,7 @@ restart: * have been a b-tree. */ xfs_da_state_free(state); - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr_leaf_to_node(args); if (!error) { error = xfs_bmap_finish(&args->trans, @@ -1331,7 +1331,7 @@ restart: * in the index/blkno/rmtblkno/rmtblkcnt fields and * in the index2/blkno2/rmtblkno2/rmtblkcnt2 fields. */ - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_da_split(state); if (!error) { error = xfs_bmap_finish(&args->trans, args->flist, @@ -1443,7 +1443,7 @@ restart: * Check to see if the tree needs to be collapsed. */ if (retval && (state->path.active > 1)) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_da_join(state); if (!error) { error = xfs_bmap_finish(&args->trans, @@ -1579,7 +1579,7 @@ xfs_attr_node_removename(xfs_da_args_t * * Check to see if the tree needs to be collapsed. */ if (retval && (state->path.active > 1)) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_da_join(state); if (!error) { error = xfs_bmap_finish(&args->trans, args->flist, @@ -1630,7 +1630,7 @@ xfs_attr_node_removename(xfs_da_args_t * == XFS_ATTR_LEAF_MAGIC); if ((forkoff = xfs_attr_shortform_allfit(bp, dp))) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_attr_leaf_to_shortform(bp, args, forkoff); /* bp is gone due to xfs_da_shrink_inode */ if (!error) { @@ -2069,7 +2069,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) /* * Allocate a single extent, up to the size of the value. */ - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); nmap = 1; error = xfs_bmapi(args->trans, dp, (xfs_fileoff_t)lblkno, blkcnt, @@ -2123,7 +2123,7 @@ xfs_attr_rmtval_set(xfs_da_args_t *args) /* * Try to remember where we decided to put the value. */ - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); nmap = 1; error = xfs_bmapi(NULL, dp, (xfs_fileoff_t)lblkno, args->rmtblkcnt, @@ -2188,7 +2188,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *ar /* * Try to remember where we decided to put the value. */ - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); nmap = 1; error = xfs_bmapi(NULL, args->dp, (xfs_fileoff_t)lblkno, args->rmtblkcnt, @@ -2229,7 +2229,7 @@ xfs_attr_rmtval_remove(xfs_da_args_t *ar blkcnt = args->rmtblkcnt; done = 0; while (!done) { - XFS_BMAP_INIT(args->flist, args->firstblock); + xfs_bmap_init(args->flist, args->firstblock); error = xfs_bunmapi(args->trans, args->dp, lblkno, blkcnt, XFS_BMAPI_ATTRFORK | XFS_BMAPI_METADATA, 1, args->firstblock, args->flist, Index: xfs/fs/xfs/xfs_bmap.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.c +++ xfs/fs/xfs/xfs_bmap.c @@ -549,9 +549,9 @@ xfs_bmap_add_extent( xfs_iext_insert(ifp, 0, 1, new); ASSERT(cur == NULL); ifp->if_lastex = 0; - if (!ISNULLSTARTBLOCK(new->br_startblock)) { + if (!isnullstartblock(new->br_startblock)) { XFS_IFORK_NEXT_SET(ip, whichfork, 1); - logflags = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); + logflags = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); } else logflags = 0; /* DELTA: single new extent */ @@ -567,7 +567,7 @@ xfs_bmap_add_extent( /* * Any kind of new delayed allocation goes here. */ - else if (ISNULLSTARTBLOCK(new->br_startblock)) { + else if (isnullstartblock(new->br_startblock)) { if (cur) ASSERT((cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL) == 0); @@ -598,11 +598,11 @@ xfs_bmap_add_extent( * in a delayed or unwritten allocation with a real one, or * converting real back to unwritten. */ - if (!ISNULLSTARTBLOCK(new->br_startblock) && + if (!isnullstartblock(new->br_startblock) && new->br_startoff + new->br_blockcount > prev.br_startoff) { if (prev.br_state != XFS_EXT_UNWRITTEN && - ISNULLSTARTBLOCK(prev.br_startblock)) { - da_old = STARTBLOCKVAL(prev.br_startblock); + isnullstartblock(prev.br_startblock)) { + da_old = startblockval(prev.br_startblock); if (cur) ASSERT(cur->bc_private.b.flags & XFS_BTCUR_BPRV_WASDEL); @@ -757,7 +757,7 @@ xfs_bmap_add_extent_delay_real( */ if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); - STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); + STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock)); } STATE_SET(LEFT_CONTIG, STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && @@ -774,7 +774,7 @@ xfs_bmap_add_extent_delay_real( idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); - STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); + STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock)); } STATE_SET(RIGHT_CONTIG, STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && @@ -973,8 +973,8 @@ xfs_bmap_add_extent_delay_real( goto done; } temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), - STARTBLOCKVAL(PREV.br_startblock)); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + startblockval(PREV.br_startblock)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("LF|LC", ip, idx, XFS_DATA_FORK); *dnew = temp; /* DELTA: The boundary between two in-core extents moved. */ @@ -1021,10 +1021,10 @@ xfs_bmap_add_extent_delay_real( goto done; } temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), - STARTBLOCKVAL(PREV.br_startblock) - + startblockval(PREV.br_startblock) - (cur ? cur->bc_private.b.allocated : 0)); ep = xfs_iext_get_ext(ifp, idx + 1); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("LF", ip, idx + 1, XFS_DATA_FORK); *dnew = temp; /* DELTA: One in-core extent is split in two. */ @@ -1064,8 +1064,8 @@ xfs_bmap_add_extent_delay_real( goto done; } temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), - STARTBLOCKVAL(PREV.br_startblock)); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + startblockval(PREV.br_startblock)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("RF|RC", ip, idx, XFS_DATA_FORK); *dnew = temp; /* DELTA: The boundary between two in-core extents moved. */ @@ -1111,10 +1111,10 @@ xfs_bmap_add_extent_delay_real( goto done; } temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), - STARTBLOCKVAL(PREV.br_startblock) - + startblockval(PREV.br_startblock) - (cur ? cur->bc_private.b.allocated : 0)); ep = xfs_iext_get_ext(ifp, idx); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("RF", ip, idx, XFS_DATA_FORK); *dnew = temp; /* DELTA: One in-core extent is split in two. */ @@ -1167,7 +1167,7 @@ xfs_bmap_add_extent_delay_real( } temp = xfs_bmap_worst_indlen(ip, temp); temp2 = xfs_bmap_worst_indlen(ip, temp2); - diff = (int)(temp + temp2 - STARTBLOCKVAL(PREV.br_startblock) - + 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, -((int64_t)diff), rsvd)) { @@ -1195,11 +1195,11 @@ xfs_bmap_add_extent_delay_real( } } ep = xfs_iext_get_ext(ifp, idx); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx, XFS_DATA_FORK); XFS_BMAP_TRACE_PRE_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx + 2), - NULLSTARTBLOCK((int)temp2)); + nullstartblock((int)temp2)); XFS_BMAP_TRACE_POST_UPDATE("0", ip, idx + 2, XFS_DATA_FORK); *dnew = temp + temp2; /* DELTA: One in-core extent is split in three. */ @@ -1319,7 +1319,7 @@ xfs_bmap_add_extent_unwritten_real( */ if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &LEFT); - STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(LEFT.br_startblock)); + STATE_SET(LEFT_DELAY, isnullstartblock(LEFT.br_startblock)); } STATE_SET(LEFT_CONTIG, STATE_TEST(LEFT_VALID) && !STATE_TEST(LEFT_DELAY) && @@ -1336,7 +1336,7 @@ xfs_bmap_add_extent_unwritten_real( idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t) - 1)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx + 1), &RIGHT); - STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(RIGHT.br_startblock)); + STATE_SET(RIGHT_DELAY, isnullstartblock(RIGHT.br_startblock)); } STATE_SET(RIGHT_CONTIG, STATE_TEST(RIGHT_VALID) && !STATE_TEST(RIGHT_DELAY) && @@ -1843,13 +1843,13 @@ xfs_bmap_add_extent_hole_delay( ifp = XFS_IFORK_PTR(ip, XFS_DATA_FORK); ep = xfs_iext_get_ext(ifp, idx); state = 0; - ASSERT(ISNULLSTARTBLOCK(new->br_startblock)); + ASSERT(isnullstartblock(new->br_startblock)); /* * Check and set flags if this segment has a left neighbor */ if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); - STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); + STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock)); } /* * Check and set flags if the current (right) segment exists. @@ -1859,7 +1859,7 @@ xfs_bmap_add_extent_hole_delay( idx < ip->i_df.if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { xfs_bmbt_get_all(ep, &right); - STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); + STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock)); } /* * Set contiguity flags on the left and right neighbors. @@ -1892,12 +1892,12 @@ xfs_bmap_add_extent_hole_delay( XFS_BMAP_TRACE_PRE_UPDATE("LC|RC", ip, idx - 1, XFS_DATA_FORK); xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); - oldlen = STARTBLOCKVAL(left.br_startblock) + - STARTBLOCKVAL(new->br_startblock) + - STARTBLOCKVAL(right.br_startblock); + oldlen = startblockval(left.br_startblock) + + startblockval(new->br_startblock) + + startblockval(right.br_startblock); newlen = xfs_bmap_worst_indlen(ip, temp); xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), - NULLSTARTBLOCK((int)newlen)); + nullstartblock((int)newlen)); XFS_BMAP_TRACE_POST_UPDATE("LC|RC", ip, idx - 1, XFS_DATA_FORK); XFS_BMAP_TRACE_DELETE("LC|RC", ip, idx, 1, XFS_DATA_FORK); @@ -1918,11 +1918,11 @@ xfs_bmap_add_extent_hole_delay( XFS_BMAP_TRACE_PRE_UPDATE("LC", ip, idx - 1, XFS_DATA_FORK); xfs_bmbt_set_blockcount(xfs_iext_get_ext(ifp, idx - 1), temp); - oldlen = STARTBLOCKVAL(left.br_startblock) + - STARTBLOCKVAL(new->br_startblock); + oldlen = startblockval(left.br_startblock) + + startblockval(new->br_startblock); newlen = xfs_bmap_worst_indlen(ip, temp); xfs_bmbt_set_startblock(xfs_iext_get_ext(ifp, idx - 1), - NULLSTARTBLOCK((int)newlen)); + nullstartblock((int)newlen)); XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, XFS_DATA_FORK); ip->i_df.if_lastex = idx - 1; @@ -1939,11 +1939,11 @@ xfs_bmap_add_extent_hole_delay( */ XFS_BMAP_TRACE_PRE_UPDATE("RC", ip, idx, XFS_DATA_FORK); temp = new->br_blockcount + right.br_blockcount; - oldlen = STARTBLOCKVAL(new->br_startblock) + - STARTBLOCKVAL(right.br_startblock); + oldlen = startblockval(new->br_startblock) + + startblockval(right.br_startblock); newlen = xfs_bmap_worst_indlen(ip, temp); xfs_bmbt_set_allf(ep, new->br_startoff, - NULLSTARTBLOCK((int)newlen), temp, right.br_state); + nullstartblock((int)newlen), temp, right.br_state); XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, XFS_DATA_FORK); ip->i_df.if_lastex = idx; /* DELTA: One in-core extent grew into a hole. */ @@ -2039,7 +2039,7 @@ xfs_bmap_add_extent_hole_real( */ if (STATE_SET_TEST(LEFT_VALID, idx > 0)) { xfs_bmbt_get_all(xfs_iext_get_ext(ifp, idx - 1), &left); - STATE_SET(LEFT_DELAY, ISNULLSTARTBLOCK(left.br_startblock)); + STATE_SET(LEFT_DELAY, isnullstartblock(left.br_startblock)); } /* * Check and set flags if this segment has a current value. @@ -2049,7 +2049,7 @@ xfs_bmap_add_extent_hole_real( idx < ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t))) { xfs_bmbt_get_all(ep, &right); - STATE_SET(RIGHT_DELAY, ISNULLSTARTBLOCK(right.br_startblock)); + STATE_SET(RIGHT_DELAY, isnullstartblock(right.br_startblock)); } /* * We're inserting a real allocation between "left" and "right". @@ -2097,7 +2097,7 @@ xfs_bmap_add_extent_hole_real( XFS_IFORK_NEXT_SET(ip, whichfork, XFS_IFORK_NEXTENTS(ip, whichfork) - 1); if (cur == NULL) { - rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); + rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); } else { rval = XFS_ILOG_CORE; if ((error = xfs_bmbt_lookup_eq(cur, @@ -2139,7 +2139,7 @@ xfs_bmap_add_extent_hole_real( XFS_BMAP_TRACE_POST_UPDATE("LC", ip, idx - 1, whichfork); ifp->if_lastex = idx - 1; if (cur == NULL) { - rval = XFS_ILOG_FEXT(whichfork); + rval = xfs_ilog_fext(whichfork); } else { rval = 0; if ((error = xfs_bmbt_lookup_eq(cur, @@ -2174,7 +2174,7 @@ xfs_bmap_add_extent_hole_real( XFS_BMAP_TRACE_POST_UPDATE("RC", ip, idx, whichfork); ifp->if_lastex = idx; if (cur == NULL) { - rval = XFS_ILOG_FEXT(whichfork); + rval = xfs_ilog_fext(whichfork); } else { rval = 0; if ((error = xfs_bmbt_lookup_eq(cur, @@ -2208,7 +2208,7 @@ xfs_bmap_add_extent_hole_real( XFS_IFORK_NEXT_SET(ip, whichfork, XFS_IFORK_NEXTENTS(ip, whichfork) + 1); if (cur == NULL) { - rval = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); + rval = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); } else { rval = XFS_ILOG_CORE; if ((error = xfs_bmbt_lookup_eq(cur, @@ -2436,7 +2436,7 @@ xfs_bmap_adjacent( * try to use it's last block as our starting point. */ if (ap->eof && ap->prevp->br_startoff != NULLFILEOFF && - !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && + !isnullstartblock(ap->prevp->br_startblock) && ISVALID(ap->prevp->br_startblock + ap->prevp->br_blockcount, ap->prevp->br_startblock)) { ap->rval = ap->prevp->br_startblock + ap->prevp->br_blockcount; @@ -2465,7 +2465,7 @@ xfs_bmap_adjacent( * start block based on it. */ if (ap->prevp->br_startoff != NULLFILEOFF && - !ISNULLSTARTBLOCK(ap->prevp->br_startblock) && + !isnullstartblock(ap->prevp->br_startblock) && (prevbno = ap->prevp->br_startblock + ap->prevp->br_blockcount) && ISVALID(prevbno, ap->prevp->br_startblock)) { @@ -2506,7 +2506,7 @@ xfs_bmap_adjacent( * If there's a following (right) block, select a requested * start block based on it. */ - if (!ISNULLSTARTBLOCK(ap->gotp->br_startblock)) { + if (!isnullstartblock(ap->gotp->br_startblock)) { /* * Calculate gap to start of next block. */ @@ -3036,7 +3036,7 @@ xfs_bmap_btree_to_extents( ASSERT(ifp->if_broot == NULL); ASSERT((ifp->if_flags & XFS_IFBROOT) == 0); XFS_IFORK_FMT_SET(ip, whichfork, XFS_DINODE_FMT_EXTENTS); - *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FEXT(whichfork); + *logflagsp = XFS_ILOG_CORE | xfs_ilog_fext(whichfork); return 0; } @@ -3090,8 +3090,8 @@ xfs_bmap_del_extent( del_endoff = del->br_startoff + del->br_blockcount; got_endoff = got.br_startoff + got.br_blockcount; ASSERT(got_endoff >= del_endoff); - delay = ISNULLSTARTBLOCK(got.br_startblock); - ASSERT(ISNULLSTARTBLOCK(del->br_startblock) == delay); + delay = isnullstartblock(got.br_startblock); + ASSERT(isnullstartblock(del->br_startblock) == delay); flags = 0; qfield = 0; error = 0; @@ -3143,7 +3143,7 @@ xfs_bmap_del_extent( } da_old = da_new = 0; } else { - da_old = STARTBLOCKVAL(got.br_startblock); + da_old = startblockval(got.br_startblock); da_new = 0; nblks = 0; do_fx = 0; @@ -3167,7 +3167,7 @@ xfs_bmap_del_extent( XFS_IFORK_NEXTENTS(ip, whichfork) - 1); flags |= XFS_ILOG_CORE; if (!cur) { - flags |= XFS_ILOG_FEXT(whichfork); + flags |= xfs_ilog_fext(whichfork); break; } if ((error = xfs_bmbt_delete(cur, &i))) @@ -3187,7 +3187,7 @@ xfs_bmap_del_extent( if (delay) { temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), da_old); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork); da_new = temp; @@ -3196,7 +3196,7 @@ xfs_bmap_del_extent( xfs_bmbt_set_startblock(ep, del_endblock); XFS_BMAP_TRACE_POST_UPDATE("2", ip, idx, whichfork); if (!cur) { - flags |= XFS_ILOG_FEXT(whichfork); + flags |= xfs_ilog_fext(whichfork); break; } if ((error = xfs_bmbt_update(cur, del_endoff, del_endblock, @@ -3216,7 +3216,7 @@ xfs_bmap_del_extent( if (delay) { temp = XFS_FILBLKS_MIN(xfs_bmap_worst_indlen(ip, temp), da_old); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork); da_new = temp; @@ -3224,7 +3224,7 @@ xfs_bmap_del_extent( } XFS_BMAP_TRACE_POST_UPDATE("1", ip, idx, whichfork); if (!cur) { - flags |= XFS_ILOG_FEXT(whichfork); + flags |= xfs_ilog_fext(whichfork); break; } if ((error = xfs_bmbt_update(cur, got.br_startoff, @@ -3299,22 +3299,22 @@ xfs_bmap_del_extent( } XFS_WANT_CORRUPTED_GOTO(i == 1, done); } else - flags |= XFS_ILOG_FEXT(whichfork); + flags |= xfs_ilog_fext(whichfork); XFS_IFORK_NEXT_SET(ip, whichfork, XFS_IFORK_NEXTENTS(ip, whichfork) + 1); } else { ASSERT(whichfork == XFS_DATA_FORK); temp = xfs_bmap_worst_indlen(ip, temp); - xfs_bmbt_set_startblock(ep, NULLSTARTBLOCK((int)temp)); + xfs_bmbt_set_startblock(ep, nullstartblock((int)temp)); temp2 = xfs_bmap_worst_indlen(ip, temp2); - new.br_startblock = NULLSTARTBLOCK((int)temp2); + new.br_startblock = nullstartblock((int)temp2); da_new = temp + temp2; while (da_new > da_old) { if (temp) { temp--; da_new--; xfs_bmbt_set_startblock(ep, - NULLSTARTBLOCK((int)temp)); + nullstartblock((int)temp)); } if (da_new == da_old) break; @@ -3322,7 +3322,7 @@ xfs_bmap_del_extent( temp2--; da_new--; new.br_startblock = - NULLSTARTBLOCK((int)temp2); + nullstartblock((int)temp2); } } } @@ -3498,7 +3498,7 @@ xfs_bmap_extents_to_btree( nextents = ifp->if_bytes / (uint)sizeof(xfs_bmbt_rec_t); for (cnt = i = 0; i < nextents; i++) { ep = xfs_iext_get_ext(ifp, i); - if (!ISNULLSTARTBLOCK(xfs_bmbt_get_startblock(ep))) { + if (!isnullstartblock(xfs_bmbt_get_startblock(ep))) { arp->l0 = cpu_to_be64(ep->l0); arp->l1 = cpu_to_be64(ep->l1); arp++; cnt++; @@ -3522,7 +3522,7 @@ xfs_bmap_extents_to_btree( xfs_bmbt_log_recs(cur, abp, 1, be16_to_cpu(ablock->bb_numrecs)); ASSERT(*curp == NULL); *curp = cur; - *logflagsp = XFS_ILOG_CORE | XFS_ILOG_FBROOT(whichfork); + *logflagsp = XFS_ILOG_CORE | xfs_ilog_fbroot(whichfork); return 0; } @@ -3626,7 +3626,7 @@ xfs_bmap_local_to_extents( ip->i_d.di_nblocks = 1; XFS_TRANS_MOD_DQUOT_BYINO(args.mp, tp, ip, XFS_TRANS_DQ_BCOUNT, 1L); - flags |= XFS_ILOG_FEXT(whichfork); + flags |= xfs_ilog_fext(whichfork); } else { ASSERT(XFS_IFORK_NEXTENTS(ip, whichfork) == 0); xfs_bmap_forkoff_reset(ip->i_mount, ip, whichfork); @@ -4032,7 +4032,7 @@ xfs_bmap_add_attrfork( XFS_IFORK_ASIZE(ip) / (uint)sizeof(xfs_bmbt_rec_t); ip->i_afp->if_flags = XFS_IFEXTENTS; logflags = 0; - XFS_BMAP_INIT(&flist, &firstblock); + xfs_bmap_init(&flist, &firstblock); switch (ip->i_d.di_format) { case XFS_DINODE_FMT_LOCAL: error = xfs_bmap_add_attrfork_local(tp, ip, &firstblock, &flist, @@ -4112,7 +4112,7 @@ xfs_bmap_add_free( ASSERT(bno != NULLFSBLOCK); ASSERT(len > 0); ASSERT(len <= MAXEXTLEN); - ASSERT(!ISNULLSTARTBLOCK(bno)); + ASSERT(!isnullstartblock(bno)); agno = XFS_FSB_TO_AGNO(mp, bno); agbno = XFS_FSB_TO_AGBNO(mp, bno); ASSERT(agno < mp->m_sb.sb_agcount); @@ -4837,7 +4837,7 @@ xfs_bmapi( got.br_startoff = end; inhole = eof || got.br_startoff > bno; wasdelay = wr && !inhole && !(flags & XFS_BMAPI_DELAY) && - ISNULLSTARTBLOCK(got.br_startblock); + isnullstartblock(got.br_startblock); /* * First, deal with the hole before the allocated space * that we found, if any. @@ -4956,7 +4956,7 @@ xfs_bmapi( } ip->i_delayed_blks += alen; - abno = NULLSTARTBLOCK(indlen); + abno = nullstartblock(indlen); } else { /* * If first time, allocate and fill in @@ -5073,8 +5073,8 @@ xfs_bmapi( aoff + alen); #ifdef DEBUG if (flags & XFS_BMAPI_DELAY) { - ASSERT(ISNULLSTARTBLOCK(got.br_startblock)); - ASSERT(STARTBLOCKVAL(got.br_startblock) > 0); + ASSERT(isnullstartblock(got.br_startblock)); + ASSERT(startblockval(got.br_startblock) > 0); } ASSERT(got.br_state == XFS_EXT_NORM || got.br_state == XFS_EXT_UNWRITTEN); @@ -5108,7 +5108,7 @@ xfs_bmapi( ASSERT((bno >= obno) || (n == 0)); ASSERT(bno < end); mval->br_startoff = bno; - if (ISNULLSTARTBLOCK(got.br_startblock)) { + if (isnullstartblock(got.br_startblock)) { ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); mval->br_startblock = DELAYSTARTBLOCK; } else @@ -5130,7 +5130,7 @@ xfs_bmapi( ASSERT(mval->br_blockcount <= len); } else { *mval = got; - if (ISNULLSTARTBLOCK(mval->br_startblock)) { + if (isnullstartblock(mval->br_startblock)) { ASSERT(!wr || (flags & XFS_BMAPI_DELAY)); mval->br_startblock = DELAYSTARTBLOCK; } @@ -5259,12 +5259,12 @@ error0: * Log everything. Do this after conversion, there's no point in * logging the extent records if we've converted to btree format. */ - if ((logflags & XFS_ILOG_FEXT(whichfork)) && + if ((logflags & xfs_ilog_fext(whichfork)) && XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) - logflags &= ~XFS_ILOG_FEXT(whichfork); - else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && + logflags &= ~xfs_ilog_fext(whichfork); + else if ((logflags & xfs_ilog_fbroot(whichfork)) && XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) - logflags &= ~XFS_ILOG_FBROOT(whichfork); + logflags &= ~xfs_ilog_fbroot(whichfork); /* * Log whatever the flags say, even if error. Otherwise we might miss * detecting a case where the data is changed, there's an error, @@ -5341,7 +5341,7 @@ xfs_bmapi_single( *fsb = NULLFSBLOCK; return 0; } - ASSERT(!ISNULLSTARTBLOCK(got.br_startblock)); + ASSERT(!isnullstartblock(got.br_startblock)); ASSERT(bno < got.br_startoff + got.br_blockcount); *fsb = got.br_startblock + (bno - got.br_startoff); ifp->if_lastex = lastx; @@ -5474,7 +5474,7 @@ xfs_bunmapi( */ ASSERT(ep != NULL); del = got; - wasdel = ISNULLSTARTBLOCK(del.br_startblock); + wasdel = isnullstartblock(del.br_startblock); if (got.br_startoff < start) { del.br_startoff = start; del.br_blockcount -= start - got.br_startoff; @@ -5569,7 +5569,7 @@ xfs_bunmapi( xfs_bmbt_get_all(xfs_iext_get_ext(ifp, lastx - 1), &prev); ASSERT(prev.br_state == XFS_EXT_NORM); - ASSERT(!ISNULLSTARTBLOCK(prev.br_startblock)); + ASSERT(!isnullstartblock(prev.br_startblock)); ASSERT(del.br_startblock == prev.br_startblock + prev.br_blockcount); if (prev.br_startoff < start) { @@ -5597,7 +5597,7 @@ xfs_bunmapi( } } if (wasdel) { - ASSERT(STARTBLOCKVAL(del.br_startblock) > 0); + ASSERT(startblockval(del.br_startblock) > 0); /* Update realtime/data freespace, unreserve quota */ if (isrt) { xfs_filblks_t rtexts; @@ -5713,12 +5713,12 @@ error0: * Log everything. Do this after conversion, there's no point in * logging the extent records if we've converted to btree format. */ - if ((logflags & XFS_ILOG_FEXT(whichfork)) && + if ((logflags & xfs_ilog_fext(whichfork)) && XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_EXTENTS) - logflags &= ~XFS_ILOG_FEXT(whichfork); - else if ((logflags & XFS_ILOG_FBROOT(whichfork)) && + logflags &= ~xfs_ilog_fext(whichfork); + else if ((logflags & xfs_ilog_fbroot(whichfork)) && XFS_IFORK_FORMAT(ip, whichfork) != XFS_DINODE_FMT_BTREE) - logflags &= ~XFS_ILOG_FBROOT(whichfork); + logflags &= ~xfs_ilog_fbroot(whichfork); /* * Log inode even in the error case, if the transaction * is dirty we'll need to shut down the filesystem. @@ -5763,7 +5763,7 @@ xfs_getbmapx_fix_eof_hole( out->bmv_length = fixlen; } } else { - out->bmv_block = XFS_FSB_TO_DB(ip, startblock); + out->bmv_block = xfs_fsb_to_db(ip, startblock); } return 1; @@ -5895,7 +5895,7 @@ xfs_getbmap( if (nex > XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1) nex = XFS_IFORK_NEXTENTS(ip, whichfork) * 2 + 1; - bmapi_flags = XFS_BMAPI_AFLAG(whichfork) | + bmapi_flags = xfs_bmapi_aflag(whichfork) | ((sh_unwritten) ? 0 : XFS_BMAPI_IGSTATE); /* @@ -6023,7 +6023,7 @@ xfs_bmap_isaeof( */ *aeof = (off >= s.br_startoff && off < s.br_startoff + s.br_blockcount && - ISNULLSTARTBLOCK(s.br_startblock)) || + isnullstartblock(s.br_startblock)) || off >= s.br_startoff + s.br_blockcount; return 0; } Index: xfs/fs/xfs/xfs_bmap.h =================================================================== --- xfs.orig/fs/xfs/xfs_bmap.h +++ xfs/fs/xfs/xfs_bmap.h @@ -95,7 +95,6 @@ typedef struct xfs_bmap_free /* need write cache flushing and no */ /* additional allocation alignments */ -#define XFS_BMAPI_AFLAG(w) xfs_bmapi_aflag(w) static inline int xfs_bmapi_aflag(int w) { return (w == XFS_ATTR_FORK ? XFS_BMAPI_ATTRFORK : 0); @@ -107,7 +106,6 @@ static inline int xfs_bmapi_aflag(int w) #define DELAYSTARTBLOCK ((xfs_fsblock_t)-1LL) #define HOLESTARTBLOCK ((xfs_fsblock_t)-2LL) -#define XFS_BMAP_INIT(flp,fbp) xfs_bmap_init(flp,fbp) static inline void xfs_bmap_init(xfs_bmap_free_t *flp, xfs_fsblock_t *fbp) { ((flp)->xbf_first = NULL, (flp)->xbf_count = 0, \ Index: xfs/fs/xfs/xfs_bmap_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap_btree.c +++ xfs/fs/xfs/xfs_bmap_btree.c @@ -949,7 +949,7 @@ xfs_bmbt_killroot( cur->bc_bufs[level - 1] = NULL; be16_add_cpu(&block->bb_level, -1); xfs_trans_log_inode(cur->bc_tp, ip, - XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); + XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork)); cur->bc_nlevels--; XFS_BMBT_TRACE_CURSOR(cur, EXIT); return 0; @@ -986,7 +986,7 @@ xfs_bmbt_log_keys( ip = cur->bc_private.b.ip; xfs_trans_log_inode(tp, ip, - XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); + xfs_ilog_fbroot(cur->bc_private.b.whichfork)); } XFS_BMBT_TRACE_CURSOR(cur, EXIT); } @@ -1022,7 +1022,7 @@ xfs_bmbt_log_ptrs( ip = cur->bc_private.b.ip; xfs_trans_log_inode(tp, ip, - XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); + xfs_ilog_fbroot(cur->bc_private.b.whichfork)); } XFS_BMBT_TRACE_CURSOR(cur, EXIT); } @@ -1838,7 +1838,7 @@ __xfs_bmbt_get_all( b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) | (((xfs_dfsbno_t)l1) >> 21); - ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); + ASSERT((b >> 32) == 0 || isnulldstartblock(b)); s->br_startblock = (xfs_fsblock_t)b; } #else /* !DEBUG */ @@ -1914,7 +1914,7 @@ xfs_bmbt_get_startblock( b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) | (((xfs_dfsbno_t)r->l1) >> 21); - ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); + ASSERT((b >> 32) == 0 || isnulldstartblock(b)); return (xfs_fsblock_t)b; #else /* !DEBUG */ return (xfs_fsblock_t)(((xfs_dfsbno_t)r->l1) >> 21); @@ -2146,7 +2146,7 @@ xfs_bmbt_log_block( xfs_trans_log_buf(tp, bp, first, last); } else xfs_trans_log_inode(tp, cur->bc_private.b.ip, - XFS_ILOG_FBROOT(cur->bc_private.b.whichfork)); + xfs_ilog_fbroot(cur->bc_private.b.whichfork)); XFS_BMBT_TRACE_CURSOR(cur, EXIT); } @@ -2312,7 +2312,7 @@ xfs_bmbt_newroot( xfs_bmbt_log_ptrs(cur, bp, 1, be16_to_cpu(cblock->bb_numrecs)); XFS_BMBT_TRACE_CURSOR(cur, EXIT); *logflags |= - XFS_ILOG_CORE | XFS_ILOG_FBROOT(cur->bc_private.b.whichfork); + XFS_ILOG_CORE | xfs_ilog_fbroot(cur->bc_private.b.whichfork); *stat = 1; return 0; } @@ -2344,7 +2344,7 @@ xfs_bmbt_set_allf( ((xfs_bmbt_rec_base_t)blockcount & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); #else /* !XFS_BIG_BLKNOS */ - if (ISNULLSTARTBLOCK(startblock)) { + if (isnullstartblock(startblock)) { r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9) | (xfs_bmbt_rec_base_t)xfs_mask64lo(9); @@ -2404,7 +2404,7 @@ xfs_bmbt_disk_set_allf( ((xfs_bmbt_rec_base_t)blockcount & (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); #else /* !XFS_BIG_BLKNOS */ - if (ISNULLSTARTBLOCK(startblock)) { + if (isnullstartblock(startblock)) { r->l0 = cpu_to_be64( ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9) | @@ -2465,7 +2465,7 @@ xfs_bmbt_set_startblock( r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) | (xfs_bmbt_rec_base_t)(v << 21); #else /* !XFS_BIG_BLKNOS */ - if (ISNULLSTARTBLOCK(v)) { + if (isnullstartblock(v)) { r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9); r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) | ((xfs_bmbt_rec_base_t)v << 21) | Index: xfs/fs/xfs/xfs_bmap_btree.h =================================================================== --- xfs.orig/fs/xfs/xfs_bmap_btree.h +++ xfs/fs/xfs/xfs_bmap_btree.h @@ -75,26 +75,22 @@ typedef struct xfs_bmbt_rec_host { #define DSTARTBLOCKMASK \ (((((xfs_dfsbno_t)1) << DSTARTBLOCKMASKBITS) - 1) << STARTBLOCKVALBITS) -#define ISNULLSTARTBLOCK(x) isnullstartblock(x) static inline int isnullstartblock(xfs_fsblock_t x) { return ((x) & STARTBLOCKMASK) == STARTBLOCKMASK; } -#define ISNULLDSTARTBLOCK(x) isnulldstartblock(x) static inline int isnulldstartblock(xfs_dfsbno_t x) { return ((x) & DSTARTBLOCKMASK) == DSTARTBLOCKMASK; } -#define NULLSTARTBLOCK(k) nullstartblock(k) static inline xfs_fsblock_t nullstartblock(int k) { ASSERT(k < (1 << STARTBLOCKVALBITS)); return STARTBLOCKMASK | (k); } -#define STARTBLOCKVAL(x) startblockval(x) static inline xfs_filblks_t startblockval(xfs_fsblock_t x) { return (xfs_filblks_t)((x) & ~STARTBLOCKMASK); Index: xfs/fs/xfs/xfs_da_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_da_btree.c +++ xfs/fs/xfs/xfs_da_btree.c @@ -1594,7 +1594,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, x nmap = 1; ASSERT(args->firstblock != NULL); if ((error = xfs_bmapi(tp, dp, bno, count, - XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA| + xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE|XFS_BMAPI_METADATA| XFS_BMAPI_CONTIG, args->firstblock, args->total, &map, &nmap, args->flist, NULL))) { @@ -1615,7 +1615,7 @@ xfs_da_grow_inode(xfs_da_args_t *args, x nmap = MIN(XFS_BMAP_MAX_NMAP, count); c = (int)(bno + count - b); if ((error = xfs_bmapi(tp, dp, b, c, - XFS_BMAPI_AFLAG(w)|XFS_BMAPI_WRITE| + xfs_bmapi_aflag(w)|XFS_BMAPI_WRITE| XFS_BMAPI_METADATA, args->firstblock, args->total, &mapp[mapi], &nmap, args->flist, @@ -1877,7 +1877,7 @@ xfs_da_shrink_inode(xfs_da_args_t *args, * the last block to the place we want to kill. */ if ((error = xfs_bunmapi(tp, dp, dead_blkno, count, - XFS_BMAPI_AFLAG(w)|XFS_BMAPI_METADATA, + xfs_bmapi_aflag(w)|XFS_BMAPI_METADATA, 0, args->firstblock, args->flist, NULL, &done)) == ENOSPC) { if (w != XFS_DATA_FORK) @@ -1982,7 +1982,7 @@ xfs_da_do_buf( if ((error = xfs_bmapi(trans, dp, (xfs_fileoff_t)bno, nfsb, XFS_BMAPI_METADATA | - XFS_BMAPI_AFLAG(whichfork), + xfs_bmapi_aflag(whichfork), NULL, 0, mapp, &nmap, NULL, NULL))) goto exit0; } Index: xfs/fs/xfs/xfs_ialloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.c +++ xfs/fs/xfs/xfs_ialloc.c @@ -315,7 +315,7 @@ xfs_ialloc_ag_alloc( */ xfs_biozero(fbuf, 0, ninodes << args.mp->m_sb.sb_inodelog); for (i = 0; i < ninodes; i++) { - free = XFS_MAKE_IPTR(args.mp, fbuf, i); + free = xfs_make_iptr(args.mp, fbuf, i); free->di_core.di_magic = cpu_to_be16(XFS_DINODE_MAGIC); free->di_core.di_version = version; free->di_core.di_gen = cpu_to_be32(gen); @@ -898,7 +898,7 @@ nextag: } } } - offset = XFS_IALLOC_FIND_FREE(&rec.ir_free); + offset = xfs_ialloc_find_free(&rec.ir_free); ASSERT(offset >= 0); ASSERT(offset < XFS_INODES_PER_CHUNK); ASSERT((XFS_AGINO_TO_OFFSET(mp, rec.ir_startino) % Index: xfs/fs/xfs/xfs_ialloc.h =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc.h +++ xfs/fs/xfs/xfs_ialloc.h @@ -38,7 +38,6 @@ struct xfs_trans; /* * Make an inode pointer out of the buffer/offset. */ -#define XFS_MAKE_IPTR(mp,b,o) xfs_make_iptr(mp,b,o) static inline struct xfs_dinode * xfs_make_iptr(struct xfs_mount *mp, struct xfs_buf *b, int o) { @@ -49,7 +48,6 @@ xfs_make_iptr(struct xfs_mount *mp, stru /* * Find a free (set) bit in the inode bitmask. */ -#define XFS_IALLOC_FIND_FREE(fp) xfs_ialloc_find_free(fp) static inline int xfs_ialloc_find_free(xfs_inofree_t *fp) { return xfs_lowbit64(*fp); Index: xfs/fs/xfs/xfs_ialloc_btree.h =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc_btree.h +++ xfs/fs/xfs/xfs_ialloc_btree.h @@ -37,7 +37,6 @@ typedef __uint64_t xfs_inofree_t; #define XFS_INODES_PER_CHUNK_LOG (XFS_NBBYLOG + 3) #define XFS_INOBT_ALL_FREE ((xfs_inofree_t)-1) -#define XFS_INOBT_MASKN(i,n) xfs_inobt_maskn(i,n) static inline xfs_inofree_t xfs_inobt_maskn(int i, int n) { return (((n) >= XFS_INODES_PER_CHUNK ? \ Index: xfs/fs/xfs/xfs_inode.c =================================================================== --- xfs.orig/fs/xfs/xfs_inode.c +++ xfs/fs/xfs/xfs_inode.c @@ -1662,10 +1662,10 @@ xfs_itruncate_finish( * in this file with garbage in them once recovery * runs. */ - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); error = xfs_bunmapi(ntp, ip, first_unmap_block, unmap_len, - XFS_BMAPI_AFLAG(fork) | + xfs_bmapi_aflag(fork) | (sync ? 0 : XFS_BMAPI_ASYNC), XFS_ITRUNC_MAX_EXTENTS, &first_block, &free_list, @@ -2784,7 +2784,7 @@ xfs_iextents_copy( for (i = 0; i < nrecs; i++) { xfs_bmbt_rec_host_t *ep = xfs_iext_get_ext(ifp, i); start_block = xfs_bmbt_get_startblock(ep); - if (ISNULLSTARTBLOCK(start_block)) { + if (isnullstartblock(start_block)) { /* * It's a delayed allocation extent, so skip it. */ Index: xfs/fs/xfs/xfs_inode_item.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.h +++ xfs/fs/xfs/xfs_inode_item.h @@ -147,22 +147,13 @@ typedef struct xfs_inode_log_item { xfs_inode_log_format_t ili_format; /* logged structure */ } xfs_inode_log_item_t; - -#define XFS_ILOG_FDATA(w) xfs_ilog_fdata(w) -static inline int xfs_ilog_fdata(int w) -{ - return (w == XFS_DATA_FORK ? XFS_ILOG_DDATA : XFS_ILOG_ADATA); -} - #endif /* __KERNEL__ */ -#define XFS_ILOG_FBROOT(w) xfs_ilog_fbroot(w) static inline int xfs_ilog_fbroot(int w) { return (w == XFS_DATA_FORK ? XFS_ILOG_DBROOT : XFS_ILOG_ABROOT); } -#define XFS_ILOG_FEXT(w) xfs_ilog_fext(w) static inline int xfs_ilog_fext(int w) { return (w == XFS_DATA_FORK ? XFS_ILOG_DEXT : XFS_ILOG_AEXT); Index: xfs/fs/xfs/xfs_iomap.c =================================================================== --- xfs.orig/fs/xfs/xfs_iomap.c +++ xfs/fs/xfs/xfs_iomap.c @@ -155,7 +155,7 @@ xfs_imap_to_bmap( iomapp->iomap_bn = IOMAP_DADDR_NULL; iomapp->iomap_flags |= IOMAP_DELAY; } else { - iomapp->iomap_bn = XFS_FSB_TO_DB(ip, start_block); + iomapp->iomap_bn = xfs_fsb_to_db(ip, start_block); if (ISUNWRITTEN(imap)) iomapp->iomap_flags |= IOMAP_UNWRITTEN; } @@ -261,7 +261,7 @@ xfs_iomap( xfs_iunlock(ip, lockmode); lockmode = 0; - if (nimaps && !ISNULLSTARTBLOCK(imap.br_startblock)) { + if (nimaps && !isnullstartblock(imap.br_startblock)) { xfs_iomap_map_trace(XFS_IOMAP_WRITE_MAP, ip, offset, count, iomapp, &imap, flags); break; @@ -498,7 +498,7 @@ xfs_iomap_write_direct( /* * Issue the xfs_bmapi() call to allocate the blocks */ - XFS_BMAP_INIT(&free_list, &firstfsb); + xfs_bmap_init(&free_list, &firstfsb); nimaps = 1; error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, bmapi_flag, &firstfsb, 0, &imap, &nimaps, &free_list, NULL); @@ -765,7 +765,7 @@ xfs_iomap_write_allocate( xfs_trans_ijoin(tp, ip, XFS_ILOCK_EXCL); xfs_trans_ihold(tp, ip); - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); /* * it is possible that the extents have changed since @@ -925,7 +925,7 @@ xfs_iomap_write_unwritten( /* * Modify the unwritten extent state of the buffer. */ - XFS_BMAP_INIT(&free_list, &firstfsb); + xfs_bmap_init(&free_list, &firstfsb); nimaps = 1; error = xfs_bmapi(tp, ip, offset_fsb, count_fsb, XFS_BMAPI_WRITE|XFS_BMAPI_CONVERT, &firstfsb, Index: xfs/fs/xfs/xfs_itable.c =================================================================== --- xfs.orig/fs/xfs/xfs_itable.c +++ xfs/fs/xfs/xfs_itable.c @@ -442,7 +442,7 @@ xfs_bulkstat( (chunkidx = agino - gino + 1) < XFS_INODES_PER_CHUNK && /* there are some left allocated */ - XFS_INOBT_MASKN(chunkidx, + xfs_inobt_maskn(chunkidx, XFS_INODES_PER_CHUNK - chunkidx) & ~gfree) { /* * Grab the chunk record. Mark all the @@ -453,7 +453,7 @@ xfs_bulkstat( if (XFS_INOBT_MASK(i) & ~gfree) gcnt++; } - gfree |= XFS_INOBT_MASKN(0, chunkidx); + gfree |= xfs_inobt_maskn(0, chunkidx); irbp->ir_startino = gino; irbp->ir_freecount = gcnt; irbp->ir_free = gfree; @@ -524,7 +524,7 @@ xfs_bulkstat( chunkidx < XFS_INODES_PER_CHUNK; chunkidx += nicluster, agbno += nbcluster) { - if (XFS_INOBT_MASKN(chunkidx, + if (xfs_inobt_maskn(chunkidx, nicluster) & ~gfree) xfs_btree_reada_bufs(mp, agno, agbno, nbcluster); Index: xfs/fs/xfs/xfs_rename.c =================================================================== --- xfs.orig/fs/xfs/xfs_rename.c +++ xfs/fs/xfs/xfs_rename.c @@ -172,7 +172,7 @@ xfs_rename( xfs_sort_for_rename(src_dp, target_dp, src_ip, target_ip, inodes, &num_inodes); - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); tp = xfs_trans_alloc(mp, XFS_TRANS_RENAME); cancel_flags = XFS_TRANS_RELEASE_LOG_RES; spaceres = XFS_RENAME_SPACE_RES(mp, target_name->len); Index: xfs/fs/xfs/xfs_rtalloc.c =================================================================== --- xfs.orig/fs/xfs/xfs_rtalloc.c +++ xfs/fs/xfs/xfs_rtalloc.c @@ -120,7 +120,7 @@ xfs_growfs_rt_alloc( if ((error = xfs_trans_iget(mp, tp, ino, 0, XFS_ILOCK_EXCL, &ip))) goto error_cancel; - XFS_BMAP_INIT(&flist, &firstblock); + xfs_bmap_init(&flist, &firstblock); /* * Allocate blocks to the bitmap file. */ Index: xfs/fs/xfs/xfs_rw.h =================================================================== --- xfs.orig/fs/xfs/xfs_rw.h +++ xfs/fs/xfs/xfs_rw.h @@ -28,7 +28,6 @@ struct xfs_mount; * file is a real time file or not, because the bmap code * does. */ -#define XFS_FSB_TO_DB(ip,fsb) xfs_fsb_to_db(ip,fsb) static inline xfs_daddr_t xfs_fsb_to_db(struct xfs_inode *ip, xfs_fsblock_t fsb) { Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c +++ xfs/fs/xfs/xfs_vnodeops.c @@ -971,7 +971,7 @@ xfs_inactive_symlink_rmt( * Find the block(s) so we can inval and unmap them. */ done = 0; - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); nmaps = ARRAY_SIZE(mval); if ((error = xfs_bmapi(tp, ip, 0, XFS_B_TO_FSB(mp, size), XFS_BMAPI_METADATA, &first_block, 0, mval, &nmaps, @@ -1391,7 +1391,7 @@ xfs_inactive( /* * Free the inode. */ - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); error = xfs_ifree(tp, ip, &free_list); if (error) { /* @@ -1564,7 +1564,7 @@ xfs_create( xfs_ilock(dp, XFS_ILOCK_EXCL | XFS_ILOCK_PARENT); unlock_dp_on_error = B_TRUE; - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); ASSERT(ip == NULL); @@ -1984,7 +1984,7 @@ xfs_remove( } } - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); error = xfs_dir_removename(tp, dp, name, ip->i_ino, &first_block, &free_list, resblks); if (error) { @@ -2171,7 +2171,7 @@ xfs_link( if (error) goto error_return; - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); error = xfs_dir_createname(tp, tdp, target_name, sip->i_ino, &first_block, &free_list, resblks); @@ -2344,7 +2344,7 @@ xfs_mkdir( xfs_trans_ijoin(tp, dp, XFS_ILOCK_EXCL); unlock_dp_on_error = B_FALSE; - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); error = xfs_dir_createname(tp, dp, dir_name, cdp->i_ino, &first_block, &free_list, resblks ? @@ -2559,7 +2559,7 @@ xfs_symlink( * Initialize the bmap freelist prior to calling either * bmapi or the directory create code. */ - XFS_BMAP_INIT(&free_list, &first_block); + xfs_bmap_init(&free_list, &first_block); /* * Allocate an inode for the symlink. @@ -3100,7 +3100,7 @@ retry: /* * Issue the xfs_bmapi() call to allocate the blocks */ - XFS_BMAP_INIT(&free_list, &firstfsb); + xfs_bmap_init(&free_list, &firstfsb); error = xfs_bmapi(tp, ip, startoffset_fsb, allocatesize_fsb, bmapi_flag, &firstfsb, 0, imapp, &nimaps, @@ -3218,7 +3218,7 @@ xfs_zero_remaining_bytes( XFS_BUF_UNDONE(bp); XFS_BUF_UNWRITE(bp); XFS_BUF_READ(bp); - XFS_BUF_SET_ADDR(bp, XFS_FSB_TO_DB(ip, imap.br_startblock)); + XFS_BUF_SET_ADDR(bp, xfs_fsb_to_db(ip, imap.br_startblock)); xfsbdstrat(mp, bp); error = xfs_iowait(bp); if (error) { @@ -3423,7 +3423,7 @@ xfs_free_file_space( /* * issue the bunmapi() call to free the blocks */ - XFS_BMAP_INIT(&free_list, &firstfsb); + xfs_bmap_init(&free_list, &firstfsb); error = xfs_bunmapi(tp, ip, startoffset_fsb, endoffset_fsb - startoffset_fsb, 0, 2, &firstfsb, &free_list, NULL, &done); Index: xfs/fs/xfs/xfs_ag.h =================================================================== --- xfs.orig/fs/xfs/xfs_ag.h +++ xfs/fs/xfs/xfs_ag.h @@ -233,8 +233,8 @@ typedef struct xfs_perag #define XFS_AG_CHECK_DADDR(mp,d,len) \ ((len) == 1 ? \ ASSERT((d) == XFS_SB_DADDR || \ - XFS_DADDR_TO_AGBNO(mp, d) != XFS_SB_DADDR) : \ - ASSERT(XFS_DADDR_TO_AGNO(mp, d) == \ - XFS_DADDR_TO_AGNO(mp, (d) + (len) - 1))) + xfs_daddr_to_agbno(mp, d) != XFS_SB_DADDR) : \ + ASSERT(xfs_daddr_to_agno(mp, d) == \ + xfs_daddr_to_agno(mp, (d) + (len) - 1))) #endif /* __XFS_AG_H__ */ Index: xfs/fs/xfs/xfs_alloc_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_alloc_btree.c +++ xfs/fs/xfs/xfs_alloc_btree.c @@ -1368,7 +1368,7 @@ xfs_alloc_newroot( /* * Our block is left, pick up the right block. */ - lbno = XFS_DADDR_TO_AGBNO(mp, XFS_BUF_ADDR(lbp)); + lbno = xfs_daddr_to_agbno(mp, XFS_BUF_ADDR(lbp)); rbno = be32_to_cpu(left->bb_rightsib); if ((error = xfs_btree_read_bufs(mp, cur->bc_tp, cur->bc_private.a.agno, rbno, 0, &rbp, @@ -1385,7 +1385,7 @@ xfs_alloc_newroot( */ rbp = lbp; right = left; - rbno = XFS_DADDR_TO_AGBNO(mp, XFS_BUF_ADDR(rbp)); + rbno = xfs_daddr_to_agbno(mp, XFS_BUF_ADDR(rbp)); lbno = be32_to_cpu(right->bb_leftsib); if ((error = xfs_btree_read_bufs(mp, cur->bc_tp, cur->bc_private.a.agno, lbno, 0, &lbp, @@ -1688,7 +1688,7 @@ xfs_alloc_split( * Find the left block number by looking in the buffer. * Adjust numrecs, sibling pointers. */ - lbno = XFS_DADDR_TO_AGBNO(cur->bc_mp, XFS_BUF_ADDR(lbp)); + lbno = xfs_daddr_to_agbno(cur->bc_mp, XFS_BUF_ADDR(lbp)); be16_add_cpu(&left->bb_numrecs, -(be16_to_cpu(right->bb_numrecs))); right->bb_rightsib = left->bb_rightsib; left->bb_rightsib = cpu_to_be32(rbno); Index: xfs/fs/xfs/xfs_ialloc_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_ialloc_btree.c +++ xfs/fs/xfs/xfs_ialloc_btree.c @@ -1252,7 +1252,7 @@ xfs_inobt_newroot( * Our block is left, pick up the right block. */ lbp = bp; - lbno = XFS_DADDR_TO_AGBNO(args.mp, XFS_BUF_ADDR(lbp)); + lbno = xfs_daddr_to_agbno(args.mp, XFS_BUF_ADDR(lbp)); left = block; rbno = be32_to_cpu(left->bb_rightsib); if ((error = xfs_btree_read_bufs(args.mp, args.tp, args.agno, @@ -1269,7 +1269,7 @@ xfs_inobt_newroot( * Our block is right, pick up the left block. */ rbp = bp; - rbno = XFS_DADDR_TO_AGBNO(args.mp, XFS_BUF_ADDR(rbp)); + rbno = xfs_daddr_to_agbno(args.mp, XFS_BUF_ADDR(rbp)); right = block; lbno = be32_to_cpu(right->bb_leftsib); if ((error = xfs_btree_read_bufs(args.mp, args.tp, args.agno, @@ -1487,7 +1487,7 @@ xfs_inobt_split( lbp = cur->bc_bufs[level]; args.tp = cur->bc_tp; args.mp = cur->bc_mp; - lbno = XFS_DADDR_TO_AGBNO(args.mp, XFS_BUF_ADDR(lbp)); + lbno = xfs_daddr_to_agbno(args.mp, XFS_BUF_ADDR(lbp)); /* * Allocate the new block. * If we can't do it, we're toast. Give up. Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h +++ xfs/fs/xfs/xfs_mount.h @@ -47,9 +47,9 @@ typedef struct xfs_trans_reservations { /* * Moved here from xfs_ag.h to avoid reordering header files */ -#define XFS_DADDR_TO_AGNO(mp,d) \ +#define xfs_daddr_to_agno(mp,d) \ ((xfs_agnumber_t)(XFS_BB_TO_FSBT(mp, d) / (mp)->m_sb.sb_agblocks)) -#define XFS_DADDR_TO_AGBNO(mp,d) \ +#define xfs_daddr_to_agbno(mp,d) \ ((xfs_agblock_t)(XFS_BB_TO_FSBT(mp, d) % (mp)->m_sb.sb_agblocks)) #else struct cred; @@ -444,7 +444,6 @@ void xfs_do_force_shutdown(struct xfs_mo */ #define XFS_MFSI_QUIET 0x40 /* Be silent if mount errors found */ -#define XFS_DADDR_TO_AGNO(mp,d) xfs_daddr_to_agno(mp,d) static inline xfs_agnumber_t xfs_daddr_to_agno(struct xfs_mount *mp, xfs_daddr_t d) { @@ -453,7 +452,6 @@ xfs_daddr_to_agno(struct xfs_mount *mp, return (xfs_agnumber_t) ld; } -#define XFS_DADDR_TO_AGBNO(mp,d) xfs_daddr_to_agbno(mp,d) static inline xfs_agblock_t xfs_daddr_to_agbno(struct xfs_mount *mp, xfs_daddr_t d) { Index: xfs/fs/xfs/xfs_sb.h =================================================================== --- xfs.orig/fs/xfs/xfs_sb.h +++ xfs/fs/xfs/xfs_sb.h @@ -498,7 +498,7 @@ static inline void xfs_sb_version_remove #define XFS_HDR_BLOCK(mp,d) ((xfs_agblock_t)XFS_BB_TO_FSBT(mp,d)) #define XFS_DADDR_TO_FSB(mp,d) XFS_AGB_TO_FSB(mp, \ - XFS_DADDR_TO_AGNO(mp,d), XFS_DADDR_TO_AGBNO(mp,d)) + xfs_daddr_to_agno(mp,d), xfs_daddr_to_agbno(mp,d)) #define XFS_FSB_TO_DADDR(mp,fsbno) XFS_AGB_TO_DADDR(mp, \ XFS_FSB_TO_AGNO(mp,fsbno), XFS_FSB_TO_AGBNO(mp,fsbno)) -- From sandeen@sandeen.net Thu Jan 1 16:41:28 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MfSMS032011 for ; Thu, 1 Jan 2009 16:41:28 -0600 X-ASG-Debug-ID: 1230849687-7a94031a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A65A658686 for ; Thu, 1 Jan 2009 14:41:27 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id RDs85GiYHSZ3uSbf for ; Thu, 01 Jan 2009 14:41:27 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id C7D79AC6273; Thu, 1 Jan 2009 16:40:56 -0600 (CST) Message-Id: <20090101224009.616367334@sandeen.net> User-Agent: quilt/0.46-1 Date: Thu, 01 Jan 2009 16:40:09 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 0/4] Remove unused typedefs & last of the macro-to-function indirections Subject: [patch 0/4] Remove unused typedefs & last of the macro-to-function indirections X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849687 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- At least I think it's the last of them. :) -- From sandeen@sandeen.net Thu Jan 1 16:41:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-3.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_61, J_CHICKENPOX_65,LOCAL_GNU_PATCH autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MfUTl032023 for ; Thu, 1 Jan 2009 16:41:30 -0600 X-ASG-Debug-ID: 1230849688-083b02320000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 94EFE58688 for ; Thu, 1 Jan 2009 14:41:28 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id zLONI8CiHB0F0zLA for ; Thu, 01 Jan 2009 14:41:28 -0800 (PST) Received: by mail.sandeen.net (Postfix, from userid 500) id BC0AAA81D5D; Thu, 1 Jan 2009 16:40:57 -0600 (CST) Message-Id: <20090101224057.464622607@sandeen.net> References: <20090101224009.616367334@sandeen.net> User-Agent: quilt/0.46-1 Date: Thu, 01 Jan 2009 16:40:12 -0600 From: Eric Sandeen To: xfs@oss.sgi.com X-ASG-Orig-Subj: [patch 3/4] Remove macro-to-function indirections in the mask code Subject: [patch 3/4] Remove macro-to-function indirections in the mask code Content-Disposition: inline; filename=XFS_MASK_SHOUTING X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849688 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/xfs_bit.h =================================================================== --- xfs.orig/fs/xfs/xfs_bit.h +++ xfs/fs/xfs/xfs_bit.h @@ -23,24 +23,16 @@ */ /* - * masks with n high/low bits set, 32-bit values & 64-bit values + * masks with n high/low bits set, 64-bit values */ -#define XFS_MASK32HI(n) xfs_mask32hi(n) -static inline __uint32_t xfs_mask32hi(int n) -{ - return (__uint32_t)-1 << (32 - (n)); -} -#define XFS_MASK64HI(n) xfs_mask64hi(n) static inline __uint64_t xfs_mask64hi(int n) { return (__uint64_t)-1 << (64 - (n)); } -#define XFS_MASK32LO(n) xfs_mask32lo(n) static inline __uint32_t xfs_mask32lo(int n) { return ((__uint32_t)1 << (n)) - 1; } -#define XFS_MASK64LO(n) xfs_mask64lo(n) static inline __uint64_t xfs_mask64lo(int n) { return ((__uint64_t)1 << (n)) - 1; Index: xfs/fs/xfs/xfs_bmap_btree.c =================================================================== --- xfs.orig/fs/xfs/xfs_bmap_btree.c +++ xfs/fs/xfs/xfs_bmap_btree.c @@ -1827,16 +1827,16 @@ __xfs_bmbt_get_all( ext_flag = (int)(l0 >> (64 - BMBT_EXNTFLAG_BITLEN)); s->br_startoff = ((xfs_fileoff_t)l0 & - XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; + xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; #if XFS_BIG_BLKNOS - s->br_startblock = (((xfs_fsblock_t)l0 & XFS_MASK64LO(9)) << 43) | + s->br_startblock = (((xfs_fsblock_t)l0 & xfs_mask64lo(9)) << 43) | (((xfs_fsblock_t)l1) >> 21); #else #ifdef DEBUG { xfs_dfsbno_t b; - b = (((xfs_dfsbno_t)l0 & XFS_MASK64LO(9)) << 43) | + b = (((xfs_dfsbno_t)l0 & xfs_mask64lo(9)) << 43) | (((xfs_dfsbno_t)l1) >> 21); ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); s->br_startblock = (xfs_fsblock_t)b; @@ -1845,7 +1845,7 @@ __xfs_bmbt_get_all( s->br_startblock = (xfs_fsblock_t)(((xfs_dfsbno_t)l1) >> 21); #endif /* DEBUG */ #endif /* XFS_BIG_BLKNOS */ - s->br_blockcount = (xfs_filblks_t)(l1 & XFS_MASK64LO(21)); + s->br_blockcount = (xfs_filblks_t)(l1 & xfs_mask64lo(21)); /* This is xfs_extent_state() in-line */ if (ext_flag) { ASSERT(s->br_blockcount != 0); /* saved for DMIG */ @@ -1895,7 +1895,7 @@ xfs_filblks_t xfs_bmbt_get_blockcount( xfs_bmbt_rec_host_t *r) { - return (xfs_filblks_t)(r->l1 & XFS_MASK64LO(21)); + return (xfs_filblks_t)(r->l1 & xfs_mask64lo(21)); } /* @@ -1906,13 +1906,13 @@ xfs_bmbt_get_startblock( xfs_bmbt_rec_host_t *r) { #if XFS_BIG_BLKNOS - return (((xfs_fsblock_t)r->l0 & XFS_MASK64LO(9)) << 43) | + return (((xfs_fsblock_t)r->l0 & xfs_mask64lo(9)) << 43) | (((xfs_fsblock_t)r->l1) >> 21); #else #ifdef DEBUG xfs_dfsbno_t b; - b = (((xfs_dfsbno_t)r->l0 & XFS_MASK64LO(9)) << 43) | + b = (((xfs_dfsbno_t)r->l0 & xfs_mask64lo(9)) << 43) | (((xfs_dfsbno_t)r->l1) >> 21); ASSERT((b >> 32) == 0 || ISNULLDSTARTBLOCK(b)); return (xfs_fsblock_t)b; @@ -1930,7 +1930,7 @@ xfs_bmbt_get_startoff( xfs_bmbt_rec_host_t *r) { return ((xfs_fileoff_t)r->l0 & - XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; + xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; } xfs_exntst_t @@ -1960,7 +1960,7 @@ xfs_filblks_t xfs_bmbt_disk_get_blockcount( xfs_bmbt_rec_t *r) { - return (xfs_filblks_t)(be64_to_cpu(r->l1) & XFS_MASK64LO(21)); + return (xfs_filblks_t)(be64_to_cpu(r->l1) & xfs_mask64lo(21)); } /* @@ -1971,7 +1971,7 @@ xfs_bmbt_disk_get_startoff( xfs_bmbt_rec_t *r) { return ((xfs_fileoff_t)be64_to_cpu(r->l0) & - XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; + xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN)) >> 9; } /* @@ -2331,33 +2331,33 @@ xfs_bmbt_set_allf( int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); - ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); - ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); + ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0); + ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); #if XFS_BIG_BLKNOS - ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); + ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0); r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9) | ((xfs_bmbt_rec_base_t)startblock >> 43); r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); #else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(startblock)) { r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9) | - (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); - r->l1 = XFS_MASK64HI(11) | + (xfs_bmbt_rec_base_t)xfs_mask64lo(9); + r->l1 = xfs_mask64hi(11) | ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); } else { r->l0 = ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9); r->l1 = ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); } #endif /* XFS_BIG_BLKNOS */ } @@ -2389,11 +2389,11 @@ xfs_bmbt_disk_set_allf( int extent_flag = (state == XFS_EXT_NORM) ? 0 : 1; ASSERT(state == XFS_EXT_NORM || state == XFS_EXT_UNWRITTEN); - ASSERT((startoff & XFS_MASK64HI(64-BMBT_STARTOFF_BITLEN)) == 0); - ASSERT((blockcount & XFS_MASK64HI(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); + ASSERT((startoff & xfs_mask64hi(64-BMBT_STARTOFF_BITLEN)) == 0); + ASSERT((blockcount & xfs_mask64hi(64-BMBT_BLOCKCOUNT_BITLEN)) == 0); #if XFS_BIG_BLKNOS - ASSERT((startblock & XFS_MASK64HI(64-BMBT_STARTBLOCK_BITLEN)) == 0); + ASSERT((startblock & xfs_mask64hi(64-BMBT_STARTBLOCK_BITLEN)) == 0); r->l0 = cpu_to_be64( ((xfs_bmbt_rec_base_t)extent_flag << 63) | @@ -2402,17 +2402,17 @@ xfs_bmbt_disk_set_allf( r->l1 = cpu_to_be64( ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); #else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(startblock)) { r->l0 = cpu_to_be64( ((xfs_bmbt_rec_base_t)extent_flag << 63) | ((xfs_bmbt_rec_base_t)startoff << 9) | - (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); - r->l1 = cpu_to_be64(XFS_MASK64HI(11) | + (xfs_bmbt_rec_base_t)xfs_mask64lo(9)); + r->l1 = cpu_to_be64(xfs_mask64hi(11) | ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); } else { r->l0 = cpu_to_be64( ((xfs_bmbt_rec_base_t)extent_flag << 63) | @@ -2420,7 +2420,7 @@ xfs_bmbt_disk_set_allf( r->l1 = cpu_to_be64( ((xfs_bmbt_rec_base_t)startblock << 21) | ((xfs_bmbt_rec_base_t)blockcount & - (xfs_bmbt_rec_base_t)XFS_MASK64LO(21))); + (xfs_bmbt_rec_base_t)xfs_mask64lo(21))); } #endif /* XFS_BIG_BLKNOS */ } @@ -2445,9 +2445,9 @@ xfs_bmbt_set_blockcount( xfs_bmbt_rec_host_t *r, xfs_filblks_t v) { - ASSERT((v & XFS_MASK64HI(43)) == 0); - r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(43)) | - (xfs_bmbt_rec_base_t)(v & XFS_MASK64LO(21)); + ASSERT((v & xfs_mask64hi(43)) == 0); + r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64hi(43)) | + (xfs_bmbt_rec_base_t)(v & xfs_mask64lo(21)); } /* @@ -2459,21 +2459,21 @@ xfs_bmbt_set_startblock( xfs_fsblock_t v) { #if XFS_BIG_BLKNOS - ASSERT((v & XFS_MASK64HI(12)) == 0); - r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64HI(55)) | + ASSERT((v & xfs_mask64hi(12)) == 0); + r->l0 = (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64hi(55)) | (xfs_bmbt_rec_base_t)(v >> 43); - r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)) | + r->l1 = (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)) | (xfs_bmbt_rec_base_t)(v << 21); #else /* !XFS_BIG_BLKNOS */ if (ISNULLSTARTBLOCK(v)) { - r->l0 |= (xfs_bmbt_rec_base_t)XFS_MASK64LO(9); - r->l1 = (xfs_bmbt_rec_base_t)XFS_MASK64HI(11) | + r->l0 |= (xfs_bmbt_rec_base_t)xfs_mask64lo(9); + r->l1 = (xfs_bmbt_rec_base_t)xfs_mask64hi(11) | ((xfs_bmbt_rec_base_t)v << 21) | - (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); + (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); } else { - r->l0 &= ~(xfs_bmbt_rec_base_t)XFS_MASK64LO(9); + r->l0 &= ~(xfs_bmbt_rec_base_t)xfs_mask64lo(9); r->l1 = ((xfs_bmbt_rec_base_t)v << 21) | - (r->l1 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(21)); + (r->l1 & (xfs_bmbt_rec_base_t)xfs_mask64lo(21)); } #endif /* XFS_BIG_BLKNOS */ } @@ -2486,10 +2486,10 @@ xfs_bmbt_set_startoff( xfs_bmbt_rec_host_t *r, xfs_fileoff_t v) { - ASSERT((v & XFS_MASK64HI(9)) == 0); - r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) XFS_MASK64HI(1)) | + ASSERT((v & xfs_mask64hi(9)) == 0); + r->l0 = (r->l0 & (xfs_bmbt_rec_base_t) xfs_mask64hi(1)) | ((xfs_bmbt_rec_base_t)v << 9) | - (r->l0 & (xfs_bmbt_rec_base_t)XFS_MASK64LO(9)); + (r->l0 & (xfs_bmbt_rec_base_t)xfs_mask64lo(9)); } /* @@ -2502,9 +2502,9 @@ xfs_bmbt_set_state( { ASSERT(v == XFS_EXT_NORM || v == XFS_EXT_UNWRITTEN); if (v == XFS_EXT_NORM) - r->l0 &= XFS_MASK64LO(64 - BMBT_EXNTFLAG_BITLEN); + r->l0 &= xfs_mask64lo(64 - BMBT_EXNTFLAG_BITLEN); else - r->l0 |= XFS_MASK64HI(BMBT_EXNTFLAG_BITLEN); + r->l0 |= xfs_mask64hi(BMBT_EXNTFLAG_BITLEN); } /* Index: xfs/fs/xfs/xfs_ag.h =================================================================== --- xfs.orig/fs/xfs/xfs_ag.h +++ xfs/fs/xfs/xfs_ag.h @@ -220,7 +220,7 @@ typedef struct xfs_perag #define XFS_FSB_TO_AGNO(mp,fsbno) \ ((xfs_agnumber_t)((fsbno) >> (mp)->m_sb.sb_agblklog)) #define XFS_FSB_TO_AGBNO(mp,fsbno) \ - ((xfs_agblock_t)((fsbno) & XFS_MASK32LO((mp)->m_sb.sb_agblklog))) + ((xfs_agblock_t)((fsbno) & xfs_mask32lo((mp)->m_sb.sb_agblklog))) #define XFS_AGB_TO_DADDR(mp,agno,agbno) \ ((xfs_daddr_t)XFS_FSB_TO_BB(mp, \ (xfs_fsblock_t)(agno) * (mp)->m_sb.sb_agblocks + (agbno))) -- From sandeen@sandeen.net Thu Jan 1 16:45:33 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MjXsq000361 for ; Thu, 1 Jan 2009 16:45:33 -0600 X-ASG-Debug-ID: 1230849931-1358021d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3BBC6586BF for ; Thu, 1 Jan 2009 14:45:31 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 2BZuDeHFHnOwC5AW for ; Thu, 01 Jan 2009 14:45:31 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 6C48AAC6273 for ; Thu, 1 Jan 2009 16:45:32 -0600 (CST) Message-ID: <495D478B.9080702@sandeen.net> Date: Thu, 01 Jan 2009 16:45:31 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] remove flags param from xfs_free_eofblocks Subject: [PATCH] remove flags param from xfs_free_eofblocks Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230849932 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.82 X-Barracuda-Spam-Status: No, SCORE=-1.82 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_MJ615 X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14183 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_MJ615 Custom Rule MJ615 Remove unused XFS_FREE_EOF_NOLOCK and make XFS_FREE_EOF_LOCK default. XFS_FREE_EOF_NOLOCK is never used, so remove it, make XFS_FREE_EOF_LOCK the only behavior, and remove the flags parameters. Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/xfs_rw.h =================================================================== --- xfs.orig/fs/xfs/xfs_rw.h +++ xfs/fs/xfs/xfs_rw.h @@ -37,13 +37,6 @@ xfs_fsb_to_db(struct xfs_inode *ip, xfs_ } /* - * Flags for xfs_free_eofblocks - */ -#define XFS_FREE_EOF_LOCK (1<<0) -#define XFS_FREE_EOF_NOLOCK (1<<1) - - -/* * helper function to extract extent size hint from inode */ STATIC_INLINE xfs_extlen_t @@ -81,7 +74,6 @@ extern void xfs_ioerror_alert(char *func /* * Prototypes for functions in xfs_vnodeops.c. */ -extern int xfs_free_eofblocks(struct xfs_mount *mp, struct xfs_inode *ip, - int flags); +extern int xfs_free_eofblocks(struct xfs_mount *mp, struct xfs_inode *ip); #endif /* __XFS_RW_H__ */ Index: xfs/fs/xfs/xfs_vnodeops.c =================================================================== --- xfs.orig/fs/xfs/xfs_vnodeops.c +++ xfs/fs/xfs/xfs_vnodeops.c @@ -814,8 +814,7 @@ xfs_fsync( int xfs_free_eofblocks( xfs_mount_t *mp, - xfs_inode_t *ip, - int flags) + xfs_inode_t *ip) { xfs_trans_t *tp; int error; @@ -824,7 +823,6 @@ xfs_free_eofblocks( xfs_filblks_t map_len; int nimaps; xfs_bmbt_irec_t imap; - int use_iolock = (flags & XFS_FREE_EOF_LOCK); /* * Figure out if there are any blocks beyond the end @@ -865,14 +863,12 @@ xfs_free_eofblocks( * cache and we can't * do that within a transaction. */ - if (use_iolock) - xfs_ilock(ip, XFS_IOLOCK_EXCL); + xfs_ilock(ip, XFS_IOLOCK_EXCL); error = xfs_itruncate_start(ip, XFS_ITRUNC_DEFINITE, ip->i_size); if (error) { xfs_trans_cancel(tp, 0); - if (use_iolock) - xfs_iunlock(ip, XFS_IOLOCK_EXCL); + xfs_iunlock(ip, XFS_IOLOCK_EXCL); return error; } @@ -909,8 +905,7 @@ xfs_free_eofblocks( error = xfs_trans_commit(tp, XFS_TRANS_RELEASE_LOG_RES); } - xfs_iunlock(ip, (use_iolock ? (XFS_IOLOCK_EXCL|XFS_ILOCK_EXCL) - : XFS_ILOCK_EXCL)); + xfs_iunlock(ip, XFS_IOLOCK_EXCL|XFS_ILOCK_EXCL); } return error; } @@ -1204,7 +1199,7 @@ xfs_release( (ip->i_df.if_flags & XFS_IFEXTENTS)) && (!(ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)))) { - error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_LOCK); + error = xfs_free_eofblocks(mp, ip); if (error) return error; } @@ -1275,7 +1270,7 @@ xfs_inactive( (!(ip->i_d.di_flags & (XFS_DIFLAG_PREALLOC | XFS_DIFLAG_APPEND)) || (ip->i_delayed_blks != 0)))) { - error = xfs_free_eofblocks(mp, ip, XFS_FREE_EOF_LOCK); + error = xfs_free_eofblocks(mp, ip); if (error) return VN_INACTIVE_CACHE; } From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 16:47:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mln15000514 for ; Thu, 1 Jan 2009 16:47:49 -0600 X-ASG-Debug-ID: 1230850068-60e700110000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A4091BF869E for ; Thu, 1 Jan 2009 14:47:48 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 8VavSpLQPEtAYW3y for ; Thu, 01 Jan 2009 14:47:48 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWKR-00024Y-SS; Thu, 01 Jan 2009 22:47:47 +0000 Date: Thu, 1 Jan 2009 17:47:47 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 2/4] Remove macro-to-function indirections in attr code Subject: Re: [patch 2/4] Remove macro-to-function indirections in attr code Message-ID: <20090101224747.GB7510@infradead.org> References: <20090101224009.616367334@sandeen.net> <20090101224057.147361063@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101224057.147361063@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230850068 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Nice, thanks. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 16:48:03 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mm3wY000552 for ; Thu, 1 Jan 2009 16:48:03 -0600 X-ASG-Debug-ID: 1230850082-135802330000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DF87E587F7 for ; Thu, 1 Jan 2009 14:48:02 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 0ZNgPn5fAljGR8Rc for ; Thu, 01 Jan 2009 14:48:02 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWKB-000231-Pg; Thu, 01 Jan 2009 22:47:31 +0000 Date: Thu, 1 Jan 2009 17:47:31 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 1/4] Remove several unused typedefs. Subject: Re: [patch 1/4] Remove several unused typedefs. Message-ID: <20090101224731.GA7510@infradead.org> References: <20090101224009.616367334@sandeen.net> <20090101224056.845580476@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101224056.845580476@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230850082 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Looks good. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 16:48:05 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Mm49v000559 for ; Thu, 1 Jan 2009 16:48:05 -0600 X-ASG-Debug-ID: 1230850083-4202026e0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 17D9B1BF86DE for ; Thu, 1 Jan 2009 14:48:03 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id sEpZv8SMcoZMiy08 for ; Thu, 01 Jan 2009 14:48:03 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWKh-00028d-P6; Thu, 01 Jan 2009 22:48:03 +0000 Date: Thu, 1 Jan 2009 17:48:03 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 3/4] Remove macro-to-function indirections in the mask code Subject: Re: [patch 3/4] Remove macro-to-function indirections in the mask code Message-ID: <20090101224803.GC7510@infradead.org> References: <20090101224009.616367334@sandeen.net> <20090101224057.464622607@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101224057.464622607@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230850084 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Looks good. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 16:57:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01Muxrt001557 for ; Thu, 1 Jan 2009 16:57:00 -0600 X-ASG-Debug-ID: 1230850618-083b028a0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 136545874B for ; Thu, 1 Jan 2009 14:56:58 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id WGOxJuX0BRzzNped for ; Thu, 01 Jan 2009 14:56:58 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWSq-00042I-5V; Thu, 01 Jan 2009 22:56:28 +0000 Date: Thu, 1 Jan 2009 17:56:28 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 4/4] Remove the rest of the macro-to-function indirections. Subject: Re: [patch 4/4] Remove the rest of the macro-to-function indirections. Message-ID: <20090101225628.GD7510@infradead.org> References: <20090101224009.616367334@sandeen.net> <20090101224057.782251520@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101224057.782251520@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230850619 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Looks good. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 16:57:18 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01MvIUd001619 for ; Thu, 1 Jan 2009 16:57:18 -0600 X-ASG-Debug-ID: 1230850637-425701150000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C99B758778 for ; Thu, 1 Jan 2009 14:57:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id MLRbiziELxM1GO6T for ; Thu, 01 Jan 2009 14:57:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWTd-0003Ya-FQ; Thu, 01 Jan 2009 22:57:17 +0000 Date: Thu, 1 Jan 2009 17:57:17 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] remove flags param from xfs_free_eofblocks Subject: Re: [PATCH] remove flags param from xfs_free_eofblocks Message-ID: <20090101225717.GE7510@infradead.org> References: <495D478B.9080702@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495D478B.9080702@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230850637 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 04:45:31PM -0600, Eric Sandeen wrote: > Remove unused XFS_FREE_EOF_NOLOCK and make XFS_FREE_EOF_LOCK default. > > XFS_FREE_EOF_NOLOCK is never used, so remove it, make > XFS_FREE_EOF_LOCK the only behavior, and remove the > flags parameters. Looks good to me. From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 17:03:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01N3tUJ002121 for ; Thu, 1 Jan 2009 17:03:56 -0600 X-ASG-Debug-ID: 1230851034-057f03140000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 12A3F58742 for ; Thu, 1 Jan 2009 15:03:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id HZHcVKjTe4FhUC1j for ; Thu, 01 Jan 2009 15:03:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWa2-0007xE-67; Thu, 01 Jan 2009 23:03:54 +0000 Date: Thu, 1 Jan 2009 18:03:54 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] remove flags param from xfs_free_eofblocks Subject: Re: [PATCH] remove flags param from xfs_free_eofblocks Message-ID: <20090101230354.GF7510@infradead.org> References: <495D478B.9080702@sandeen.net> <20090101225717.GE7510@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090101225717.GE7510@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230851035 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 05:57:17PM -0500, Christoph Hellwig wrote: > On Thu, Jan 01, 2009 at 04:45:31PM -0600, Eric Sandeen wrote: > > Remove unused XFS_FREE_EOF_NOLOCK and make XFS_FREE_EOF_LOCK default. > > > > XFS_FREE_EOF_NOLOCK is never used, so remove it, make > > XFS_FREE_EOF_LOCK the only behavior, and remove the > > flags parameters. > > Looks good to me. Actually it's used by dmapi, so we have to keep it. Would be nice if we actually had some uptodate tree with dmapi, though.. From sandeen@sandeen.net Thu Jan 1 17:04:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01N4f01002245 for ; Thu, 1 Jan 2009 17:04:42 -0600 X-ASG-Debug-ID: 1230851080-60e600f20000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9D5B51BF8588 for ; Thu, 1 Jan 2009 15:04:40 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id YyPtXvnOavZtUE7a for ; Thu, 01 Jan 2009 15:04:40 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id AE16BAC6273; Thu, 1 Jan 2009 17:04:40 -0600 (CST) Message-ID: <495D4C07.5050903@sandeen.net> Date: Thu, 01 Jan 2009 17:04:39 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] remove flags param from xfs_free_eofblocks Subject: Re: [PATCH] remove flags param from xfs_free_eofblocks References: <495D478B.9080702@sandeen.net> <20090101225717.GE7510@infradead.org> <20090101230354.GF7510@infradead.org> In-Reply-To: <20090101230354.GF7510@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230851080 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14185 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Thu, Jan 01, 2009 at 05:57:17PM -0500, Christoph Hellwig wrote: >> On Thu, Jan 01, 2009 at 04:45:31PM -0600, Eric Sandeen wrote: >>> Remove unused XFS_FREE_EOF_NOLOCK and make XFS_FREE_EOF_LOCK default. >>> >>> XFS_FREE_EOF_NOLOCK is never used, so remove it, make >>> XFS_FREE_EOF_LOCK the only behavior, and remove the >>> flags parameters. >> Looks good to me. > > Actually it's used by dmapi, so we have to keep it. Would be nice if > we actually had some uptodate tree with dmapi, though.. > yep I had the wrong tree :( sorry for the noise. -Eric From sandeen@sandeen.net Thu Jan 1 17:08:50 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01N8ltB002546 for ; Thu, 1 Jan 2009 17:08:50 -0600 X-ASG-Debug-ID: 1230850228-135a025b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 26D5958562 for ; Thu, 1 Jan 2009 14:50:28 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 0vNzw8NMe5TNBiCc for ; Thu, 01 Jan 2009 14:50:28 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 4B637AC6273 for ; Thu, 1 Jan 2009 16:50:29 -0600 (CST) Message-ID: <495D48B3.2080708@sandeen.net> Date: Thu, 01 Jan 2009 16:50:27 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] remove always-true #ifndef HAVE_FORMAT32 tests Subject: [PATCH] remove always-true #ifndef HAVE_FORMAT32 tests Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230850229 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14185 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- There are several tests for #ifndef HAVE_FORMAT32, but this is never defined anywhere so it is always the default behavior; just remove the ifndef goop. Signed-off-by: Eric Sandeen --- Index: xfs/fs/xfs/xfs_extfree_item.h =================================================================== --- xfs.orig/fs/xfs/xfs_extfree_item.h +++ xfs/fs/xfs/xfs_extfree_item.h @@ -33,12 +33,10 @@ typedef struct xfs_extent { * conversion routine. */ -#ifndef HAVE_FORMAT32 typedef struct xfs_extent_32 { __uint64_t ext_start; __uint32_t ext_len; } __attribute__((packed)) xfs_extent_32_t; -#endif typedef struct xfs_extent_64 { __uint64_t ext_start; @@ -59,7 +57,6 @@ typedef struct xfs_efi_log_format { xfs_extent_t efi_extents[1]; /* array of extents to free */ } xfs_efi_log_format_t; -#ifndef HAVE_FORMAT32 typedef struct xfs_efi_log_format_32 { __uint16_t efi_type; /* efi log item type */ __uint16_t efi_size; /* size of this item */ @@ -67,7 +64,6 @@ typedef struct xfs_efi_log_format_32 { __uint64_t efi_id; /* efi identifier */ xfs_extent_32_t efi_extents[1]; /* array of extents to free */ } __attribute__((packed)) xfs_efi_log_format_32_t; -#endif typedef struct xfs_efi_log_format_64 { __uint16_t efi_type; /* efi log item type */ @@ -90,7 +86,6 @@ typedef struct xfs_efd_log_format { xfs_extent_t efd_extents[1]; /* array of extents freed */ } xfs_efd_log_format_t; -#ifndef HAVE_FORMAT32 typedef struct xfs_efd_log_format_32 { __uint16_t efd_type; /* efd log item type */ __uint16_t efd_size; /* size of this item */ @@ -98,7 +93,6 @@ typedef struct xfs_efd_log_format_32 { __uint64_t efd_efi_id; /* id of corresponding efi */ xfs_extent_32_t efd_extents[1]; /* array of extents freed */ } __attribute__((packed)) xfs_efd_log_format_32_t; -#endif typedef struct xfs_efd_log_format_64 { __uint16_t efd_type; /* efd log item type */ Index: xfs/fs/xfs/xfs_inode_item.h =================================================================== --- xfs.orig/fs/xfs/xfs_inode_item.h +++ xfs/fs/xfs/xfs_inode_item.h @@ -40,7 +40,6 @@ typedef struct xfs_inode_log_format { __int32_t ilf_boffset; /* off of inode in buffer */ } xfs_inode_log_format_t; -#ifndef HAVE_FORMAT32 typedef struct xfs_inode_log_format_32 { __uint16_t ilf_type; /* inode log item type */ __uint16_t ilf_size; /* size of this item */ @@ -56,7 +55,6 @@ typedef struct xfs_inode_log_format_32 { __int32_t ilf_len; /* len of inode buffer */ __int32_t ilf_boffset; /* off of inode in buffer */ } __attribute__((packed)) xfs_inode_log_format_32_t; -#endif typedef struct xfs_inode_log_format_64 { __uint16_t ilf_type; /* inode log item type */ From mb@gem.win.co.nz Thu Jan 1 17:29:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01NTMJu004505 for ; Thu, 1 Jan 2009 17:29:25 -0600 X-ASG-Debug-ID: 1230852559-083b03730000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from isp.becroft.co.nz (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2D7075882E for ; Thu, 1 Jan 2009 15:29:20 -0800 (PST) Received: from isp.becroft.co.nz (isp.becroft.co.nz [202.89.33.33]) by cuda.sgi.com with ESMTP id s7ZrwuNjQGWR6qMS for ; Thu, 01 Jan 2009 15:29:20 -0800 (PST) Received: from server.ak.quickcircuit.co.nz (gateway.quickcircuit.co.nz [210.55.214.217]) by isp.becroft.co.nz (8.12.11.20060308/8.12.9) with ESMTP id n01NFk2u026819; Fri, 2 Jan 2009 12:15:47 +1300 To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error when NFS client accesses nonexistent inode Subject: Re: XFS internal error when NFS client accesses nonexistent inode References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> <20090101171409.GA18020@infradead.org> <20090101190039.GA29959@infradead.org> From: Mario Becroft Date: Fri, 02 Jan 2009 12:15:46 +1300 In-Reply-To: <20090101190039.GA29959@infradead.org> (Christoph Hellwig's message of "Thu\, 1 Jan 2009 14\:00\:39 -0500") Message-ID: <87ocyqpqhp.fsf@server.ak.quickcircuit.co.nz> User-Agent: Gnus/5.11 (Gnus v5.11) Emacs/22.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Virus-Scanned: ClamAV version 0.88, clamav-milter version 0.87 on isp.becroft.co.nz X-Virus-Status: Clean X-Barracuda-Connect: isp.becroft.co.nz[202.89.33.33] X-Barracuda-Start-Time: 1230852561 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14187 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig writes: > Btw, you update /proc/sys/fs/xfs/error_level manually? The corruption > test only triggers from a avalue of 5, but 3 is the default. I was getting: Dec 31 09:12:46 nfs1 kernel: nfsd: non-standard errno: -117 and in trying to figure out what it meant, I bumped up the XFS debug level to 6, which enabled me to see the errors from XFS. Maybe I should have just left it alone? I should have pointed out that when this happened, the filesystem did not actually shut down. So it did not cause any real problems. Should it have been shutting down? I was mainly just worried that depending on what data it happened to hit when accessing the nonexistent inode, it might screw things up. If I do encounter any shutdowns, I will apply the patch you sent through. Thanks for the ultra-fast response. I realise preserving inode/generation numbers on dump/restore is probably hard and never going to happen. None of the other Linux filesystems I have looked at do it either. It would be very, very nice though... This is a feature I have wanted for ages. -- Mario Becroft From SRS0+5d7d118362e34cbfec1b+1957+infradead.org+hch@bombadil.srs.infradead.org Thu Jan 1 17:38:48 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01NcmOU005114 for ; Thu, 1 Jan 2009 17:38:48 -0600 X-ASG-Debug-ID: 1230852047-135a03160000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4592A5855C for ; Thu, 1 Jan 2009 15:20:47 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id SFO94DeAwBMp9SXC for ; Thu, 01 Jan 2009 15:20:47 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIWps-0001bf-6A; Thu, 01 Jan 2009 23:20:16 +0000 Date: Thu, 1 Jan 2009 18:20:16 -0500 From: Christoph Hellwig To: Mario Becroft Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: XFS internal error when NFS client accesses nonexistent inode Subject: Re: XFS internal error when NFS client accesses nonexistent inode Message-ID: <20090101232016.GA4476@infradead.org> References: <87zlicfncr.fsf@server.ak.quickcircuit.co.nz> <20090101171409.GA18020@infradead.org> <20090101190039.GA29959@infradead.org> <87ocyqpqhp.fsf@server.ak.quickcircuit.co.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87ocyqpqhp.fsf@server.ak.quickcircuit.co.nz> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230852047 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Jan 02, 2009 at 12:15:46PM +1300, Mario Becroft wrote: > Christoph Hellwig writes: > > > Btw, you update /proc/sys/fs/xfs/error_level manually? The corruption > > test only triggers from a avalue of 5, but 3 is the default. > > I was getting: > > Dec 31 09:12:46 nfs1 kernel: nfsd: non-standard errno: -117 > > and in trying to figure out what it meant, I bumped up the XFS debug > level to 6, which enabled me to see the errors from XFS. Maybe I should > have just left it alone? > > I should have pointed out that when this happened, the filesystem did > not actually shut down. So it did not cause any real problems. Should it > have been shutting down? > > I was mainly just worried that depending on what data it happened to hit Looking at the code again there indeed aren't shutdowns, just stacktraces. So yes, the stacktraces are caused by the higher error level. With debug kernels it's still a kernel crash though, but no one should run debug kernels on their production machines. > when accessing the nonexistent inode, it might screw things up. If I do > encounter any shutdowns, I will apply the patch you sent through. Thanks > for the ultra-fast response. Please try the second patch which I cc'ed you on as it gives back the correct error code to the nfs clients. From david@fromorbit.com Thu Jan 1 17:54:55 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n01NsqAs006599 for ; Thu, 1 Jan 2009 17:54:55 -0600 X-ASG-Debug-ID: 1230854090-6df0034b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A49471BF85CE for ; Thu, 1 Jan 2009 15:54:50 -0800 (PST) Received: from ipmail05.adl2.internode.on.net (ipmail05.adl2.internode.on.net [203.16.214.145]) by cuda.sgi.com with ESMTP id XlLdQ6iFPR6Uh5iI for ; Thu, 01 Jan 2009 15:54:50 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AqUCAKbkXEl5LB1fgWdsb2JhbACTewEBFiK2NYVy X-IronPort-AV: E=Sophos;i="4.36,315,1228051800"; d="scan'208";a="285410379" Received: from ppp121-44-29-95.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.29.95]) by ipmail05.adl2.internode.on.net with ESMTP; 02 Jan 2009 10:24:48 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LIXNH-0005P7-61; Fri, 02 Jan 2009 10:54:47 +1100 Date: Fri, 2 Jan 2009 10:54:47 +1100 From: Dave Chinner To: Elrond , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: xfsaild wakeups Subject: Re: xfsaild wakeups Message-ID: <20090101235447.GH10725@disturbed> Mail-Followup-To: Elrond , xfs@oss.sgi.com References: <20081229232915.GA6724@memak.tu-darmstadt.de> <20081230233522.GB10725@disturbed> <20081231153050.GA18736@memak.tu-darmstadt.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081231153050.GA18736@memak.tu-darmstadt.de> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1230854091 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0209 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14189 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Wed, Dec 31, 2008 at 04:30:50PM +0100, Elrond wrote: > On Wed, Dec 31, 2008 at 10:35:22AM +1100, Dave Chinner wrote: > > On Tue, Dec 30, 2008 at 12:29:15AM +0100, Elrond wrote: > > > > > > Hi, > > > > > > The major issue of xfsaild wakeups was analyzed in > > > February. (see > > > http://oss.sgi.com/archives/xfs/2008-02/msg00169.html ). > > > > > > A small issue persists. We're now at 1 wakeup per second > > > and mounted filesystem. I have three xfs on my box and the > > > number wants to grow. xfsaild is on place two of my > > > powertop wakeup list. Sometimes place one. > > > > > > Is anyone working on reducing this to zero for an idle fs? > > > > It's on the list of things to do given that 2.6.29 will have > > the fix for the bug that the periodic wakeup is catching. > > So the xfs part is mostly prepared and when 2.6.29 has the > base fix, xfs will follow soon? It's all XFS stuff ;) What I mean is that the underlying XFS problem that required the AIL watchdog (the 1s wakeup) is now fixed so we can remove the periodic wakeup. That removal will probably be in 2.6.30.... Cheers, Dave. -- Dave Chinner david@fromorbit.com From thomas.gutzler@gmail.com Thu Jan 1 20:46:29 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,J_CHICKENPOX_23 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n022kSuH017974 for ; Thu, 1 Jan 2009 20:46:29 -0600 X-ASG-Debug-ID: 1230864385-7c2f00450000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ti-out-0910.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id B844158C5C for ; Thu, 1 Jan 2009 18:46:26 -0800 (PST) Received: from ti-out-0910.google.com (ti-out-0910.google.com [209.85.142.189]) by cuda.sgi.com with ESMTP id sAK6aEeJKxZD2oEj for ; Thu, 01 Jan 2009 18:46:26 -0800 (PST) Received: by ti-out-0910.google.com with SMTP id y6so5391609tia.18 for ; Thu, 01 Jan 2009 18:46:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:mime-version:content-type:content-transfer-encoding :content-disposition; bh=r2t1CMjJ3+pTUWqQIGtkjyJxJKrVBEHtAXGskzah4RA=; b=MwY8lBhBCzeznQsbE3xH4r89XEXoA6AsQ+hPYlWGxEycpPqnTx5RV1L7EU+VhCXDQc 2fRlu1U8fR7PvqTaPHChjzivnhA84JOf+dfFH1HN5M6+N118m5LJyWk1VUp8P8iXpE1v WDOP15/2iPaNCv5Bu+DDTUaAX6u0VrM/hvwl0= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:mime-version:content-type :content-transfer-encoding:content-disposition; b=cG0HHCu68vnB8oMC4sNo5CgxrY84jCrtW87iMU255ie+4o0Wct+KTJMAuJbVCVlhh4 bDqES6ZdhLEYt0cX5AZy1wOfeGmo/u3Ep+WCimHHN/zI7hxZRUgmeNqOh9NBUeOOaAdf e1G7/4k12I662jWESypWinb15I5o5xeutDOsE= Received: by 10.110.109.12 with SMTP id h12mr26692370tic.56.1230864383768; Thu, 01 Jan 2009 18:46:23 -0800 (PST) Received: by 10.110.17.11 with HTTP; Thu, 1 Jan 2009 18:46:23 -0800 (PST) Message-ID: <169670ec0901011846q1d370e6cu31514519afc8295d@mail.gmail.com> Date: Fri, 2 Jan 2009 11:46:23 +0900 From: "Thomas Gutzler" To: xfs@oss.sgi.com X-ASG-Orig-Subj: Corruption of in-memory data detected Subject: Corruption of in-memory data detected MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Content-Disposition: inline X-Barracuda-Connect: ti-out-0910.google.com[209.85.142.189] X-Barracuda-Start-Time: 1230864387 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14198 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hi, I've been running an 8x500G hardware SATA RAID5 on an adaptec 31605 controller for a while. The operating system is ubuntu feisty with the 2.6.22-16-server kernel. Recently, I added a disk. After the array rebuild was completed, I kept getting errors from the xfs module such as this one: Dec 30 22:55:39 io kernel: [21844.939832] Filesystem "sda": xfs_iflush: Bad inode 1610669723 magic number 0xec9d, ptr 0xe523eb00 Dec 30 22:55:39 io kernel: [21844.939879] xfs_force_shutdown(sda,0x8) called from line 3277 of file /build/buildd/linux-source-2.6.22-2.6.22/fs/xfs/xfs_inode.c. Return address = 0xf8af263c Dec 30 22:55:39 io kernel: [21844.939885] Filesystem "sda": Corruption of in-memory data detected. Shutting down filesystem: sda My first thought was to run memcheck on the machine, which completed several passes without error; the raid controller doesn't report any SMART failures either. After an xfs_repair, which fixed a few things, I mounted the file system but the error kept reappearing after a few hours unless I mounted read-only. Since xfs_ncheck -i always exited with 'Out of memory' I decided to reduce the max amount of inodes to 1% (156237488) by running xfs_growfs -m 1 - the total amount of inodes used is still less than 1%. Unfortunately, both xfs_check and xfs_ncheck still say 'out of memory' with 2GB installed. . After the modification, the file system survived for a day until the following happened: Jan 2 09:33:29 io kernel: [232751.699812] BUG: unable to handle kernel paging request at virtual address 0003fffb Jan 2 09:33:29 io kernel: [232751.699848] printing eip: Jan 2 09:33:29 io kernel: [232751.699863] c017d872 Jan 2 09:33:29 io kernel: [232751.699865] *pdpt = 000000003711e001 Jan 2 09:33:29 io kernel: [232751.699881] *pde = 0000000000000000 Jan 2 09:33:29 io kernel: [232751.699898] Oops: 0002 [#1] Jan 2 09:33:29 io kernel: [232751.699913] SMP Jan 2 09:33:29 io kernel: [232751.699931] Modules linked in: nfs nfsd exportfs lockd sunrpc xt_tcpudp nf_conntrack_ipv4 xt_state nf_conntrack nfnetlink iptable_filter ip_tables x_tables ipv6 ext2 mbcache coretemp w83627ehf i2c_isa i2c_core acpi_cpufreq cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand freq_table cpufreq_conservative psmouse serio_raw pcspkr shpchp pci_hotplug evdev intel_agp agpgart xfs sr_mod cdrom pata_jmicron ata_piix sg sd_mod ata_generic ohci1394 ieee1394 ahci libata e1000 aacraid scsi_mod uhci_hcd ehci_hcd usbcore thermal processor fan fuse apparmor commoncap Jan 2 09:33:29 io kernel: [232751.700180] CPU: 1 Jan 2 09:33:29 io kernel: [232751.700181] EIP: 0060:[__slab_free+50/672] Not tainted VLI Jan 2 09:33:29 io kernel: [232751.700182] EFLAGS: 00010046 (2.6.22-16-server #1) Jan 2 09:33:29 io kernel: [232751.700234] EIP is at __slab_free+0x32/0x2a0 Jan 2 09:33:29 io kernel: [232751.700252] eax: 0000ffff ebx: ffffffff ecx: ffffffff edx: 000014aa Jan 2 09:33:29 io kernel: [232751.700273] esi: c17fffe0 edi: e6b8e0c0 ebp: f8ac2c8c esp: c21dfe44 Jan 2 09:33:29 io kernel: [232751.700293] ds: 007b es: 007b fs: 00d8 gs: 0000 ss: 0068 Jan 2 09:33:29 io kernel: [232751.700313] Process kswapd0 (pid: 198, ti=c21de000 task=c21f39f0 task.ti=c21de000) Jan 2 09:33:29 io kernel: [232751.700334] Stack: 00000000 00000065 00000000 fffffffe ffffffff c17fffe0 00000287 e6b8e0c0 Jan 2 09:33:29 io kernel: [232751.700378] 00000001 c017e3fe f8ac2c8c cecb7d20 00000001 df2e2600 f8ac2c8c df2e2600 Jan 2 09:33:29 io kernel: [232751.700422] f8d7559c e8247900 f8ac5224 df2e2600 f8d7559c e8247900 f8ae1606 00000001 Jan 2 09:33:29 io kernel: [232751.700466] Call Trace: Jan 2 09:33:29 io kernel: [232751.700499] [kfree+126/192] kfree+0x7e/0xc0 Jan 2 09:33:29 io kernel: [232751.700519] [] xfs_idestroy_fork+0x2c/0xf0 [xfs] Jan 2 09:33:29 io kernel: [232751.700561] [] xfs_idestroy_fork+0x2c/0xf0 [xfs] Jan 2 09:33:29 io kernel: [232751.700601] [] xfs_idestroy+0x44/0xb0 [xfs] Jan 2 09:33:29 io kernel: [232751.700640] [] xfs_finish_reclaim+0x36/0x160 [xfs] Jan 2 09:33:29 io kernel: [232751.700681] [] xfs_fs_clear_inode+0x97/0xc0 [xfs] Jan 2 09:33:29 io kernel: [232751.700721] [clear_inode+143/320] clear_inode+0x8f/0x140 Jan 2 09:33:29 io kernel: [232751.700743] [dispose_list+26/224] dispose_list+0x1a/0xe0 Jan 2 09:33:29 io kernel: [232751.700765] [shrink_icache_memory+379/592] shrink_icache_memory+0x17b/0x250 Jan 2 09:33:29 io kernel: [232751.700789] [shrink_slab+279/368] shrink_slab+0x117/0x170 Jan 2 09:33:29 io kernel: [232751.700815] [kswapd+859/1136] kswapd+0x35b/0x470 Jan 2 09:33:29 io kernel: [232751.700842] [autoremove_wake_function+0/80] autoremove_wake_function+0x0/0x50 Jan 2 09:33:29 io kernel: [232751.700867] [kswapd+0/1136] kswapd+0x0/0x470 Jan 2 09:33:29 io kernel: [232751.700886] [kthread+66/112] kthread+0x42/0x70 Jan 2 09:33:29 io kernel: [232751.700904] [kthread+0/112] kthread+0x0/0x70 Jan 2 09:33:29 io kernel: [232751.700923] [kernel_thread_helper+7/28] kernel_thread_helper+0x7/0x1c Jan 2 09:33:29 io kernel: [232751.700946] ======================= Jan 2 09:33:29 io kernel: [232751.700962] Code: 53 89 cb 83 ec 14 8b 6c 24 28 f0 0f ba 2e 00 19 c0 85 c0 74 0a 8b 06 a8 01 74 ef f3 90 eb f6 f6 06 02 75 48 0f b7 46 0a 8b 56 14 <89> 14 83 0f b7 46 08 89 5e 14 83 e8 01 f6 06 40 66 89 46 08 75 Jan 2 09:33:29 io kernel: [232751.701128] EIP: [__slab_free+50/672] __slab_free+0x32/0x2a0 SS:ESP 0068:c21dfe44 Any thoughts what this could be or what could be done to fix it? Cheers, Tom From sandeen@sandeen.net Thu Jan 1 21:24:34 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_23 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n023OYdj020689 for ; Thu, 1 Jan 2009 21:24:34 -0600 X-ASG-Debug-ID: 1230866672-7c2e01a30000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id E84F358C99 for ; Thu, 1 Jan 2009 19:24:32 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 9iR9Q5toQcGjGnns for ; Thu, 01 Jan 2009 19:24:32 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B975EAC6273; Thu, 1 Jan 2009 21:24:31 -0600 (CST) Message-ID: <495D88EE.2040406@sandeen.net> Date: Thu, 01 Jan 2009 21:24:30 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Thomas Gutzler CC: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: Corruption of in-memory data detected Subject: Re: Corruption of in-memory data detected References: <169670ec0901011846q1d370e6cu31514519afc8295d@mail.gmail.com> In-Reply-To: <169670ec0901011846q1d370e6cu31514519afc8295d@mail.gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230866672 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14202 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Thomas Gutzler wrote: > Hi, > > I've been running an 8x500G hardware SATA RAID5 on an adaptec 31605 > controller for a while. The operating system is ubuntu feisty with the > 2.6.22-16-server kernel. Recently, I added a disk. After the array > rebuild was completed, I kept getting errors from the xfs module such > as this one: > Dec 30 22:55:39 io kernel: [21844.939832] Filesystem "sda": > xfs_iflush: Bad inode 1610669723 magic number 0xec9d, ptr 0xe523eb00 > Dec 30 22:55:39 io kernel: [21844.939879] xfs_force_shutdown(sda,0x8) > called from line 3277 of file > /build/buildd/linux-source-2.6.22-2.6.22/fs/xfs/xfs_inode.c. Return > address = 0xf8af263c > Dec 30 22:55:39 io kernel: [21844.939885] Filesystem "sda": Corruption > of in-memory data detected. Shutting down filesystem: sda > > My first thought was to run memcheck on the machine, which completed > several passes without error; the raid controller doesn't report any > SMART failures either. Both good ideas, but note that "Corruption of in-memory data detected" doesn't necessarily mean bad memory (though it might, so memcheck was prudent). 0xec9d is not the correct magic nr. for an on-disk inode, so that's why things went south. Were there no storage related errors prior to this? > After an xfs_repair, which fixed a few things, Knowing which things were fixed might lend some clues ... > I mounted the file > system but the error kept reappearing after a few hours unless I > mounted read-only. Since xfs_ncheck -i always exited with 'Out of > memory' xfs_check takes a ton of memory; xfs_repair much less so > I decided to reduce the max amount of inodes to 1% (156237488) > by running xfs_growfs -m 1 - the total amount of inodes used is still > less than 1%. Unfortunately, both xfs_check and xfs_ncheck still say > 'out of memory' with 2GB installed. the max inodes really have no bearing on check or repair memory usage; it's just an upper limit on how many inodes *could* be created. > After the modification, the file system survived for a day until the > following happened: > Jan 2 09:33:29 io kernel: [232751.699812] BUG: unable to handle > kernel paging request at virtual address 0003fffb > Jan 2 09:33:29 io kernel: [232751.699848] printing eip: > Jan 2 09:33:29 io kernel: [232751.699863] c017d872 > Jan 2 09:33:29 io kernel: [232751.699865] *pdpt = 000000003711e001 > Jan 2 09:33:29 io kernel: [232751.699881] *pde = 0000000000000000 > Jan 2 09:33:29 io kernel: [232751.699898] Oops: 0002 [#1] > Jan 2 09:33:29 io kernel: [232751.699913] SMP > Jan 2 09:33:29 io kernel: [232751.699931] Modules linked in: nfs nfsd > exportfs lockd sunrpc xt_tcpudp nf_conntrack_ipv4 xt_state > nf_conntrack nfnetlink iptable_filter ip_tables x_tables ipv6 ext2 > mbcache coretemp w83627ehf i2c_isa i2c_core acpi_cpufreq > cpufreq_userspace cpufreq_stats cpufreq_powersave cpufreq_ondemand > freq_table cpufreq_conservative psmouse serio_raw pcspkr shpchp > pci_hotplug evdev intel_agp agpgart xfs sr_mod cdrom pata_jmicron > ata_piix sg sd_mod ata_generic ohci1394 ieee1394 ahci libata e1000 > aacraid scsi_mod uhci_hcd ehci_hcd usbcore thermal processor fan fuse > apparmor commoncap > Jan 2 09:33:29 io kernel: [232751.700180] CPU: 1 > Jan 2 09:33:29 io kernel: [232751.700181] EIP: > 0060:[__slab_free+50/672] Not tainted VLI > Jan 2 09:33:29 io kernel: [232751.700182] EFLAGS: 00010046 > (2.6.22-16-server #1) > Jan 2 09:33:29 io kernel: [232751.700234] EIP is at __slab_free+0x32/0x2a0 Memory corruption perhaps? > Jan 2 09:33:29 io kernel: [232751.700252] eax: 0000ffff ebx: > ffffffff ecx: ffffffff edx: 000014aa > Jan 2 09:33:29 io kernel: [232751.700273] esi: c17fffe0 edi: > e6b8e0c0 ebp: f8ac2c8c esp: c21dfe44 > Jan 2 09:33:29 io kernel: [232751.700293] ds: 007b es: 007b fs: > 00d8 gs: 0000 ss: 0068 > Jan 2 09:33:29 io kernel: [232751.700313] Process kswapd0 (pid: 198, > ti=c21de000 task=c21f39f0 task.ti=c21de000) > Jan 2 09:33:29 io kernel: [232751.700334] Stack: 00000000 00000065 > 00000000 fffffffe ffffffff c17fffe0 00000287 e6b8e0c0 > Jan 2 09:33:29 io kernel: [232751.700378] 00000001 c017e3fe > f8ac2c8c cecb7d20 00000001 df2e2600 f8ac2c8c df2e2600 > Jan 2 09:33:29 io kernel: [232751.700422] f8d7559c e8247900 > f8ac5224 df2e2600 f8d7559c e8247900 f8ae1606 00000001 > Jan 2 09:33:29 io kernel: [232751.700466] Call Trace: > Jan 2 09:33:29 io kernel: [232751.700499] [kfree+126/192] kfree+0x7e/0xc0 > Jan 2 09:33:29 io kernel: [232751.700519] [] > xfs_idestroy_fork+0x2c/0xf0 [xfs] > Jan 2 09:33:29 io kernel: [232751.700561] [] > xfs_idestroy_fork+0x2c/0xf0 [xfs] > Jan 2 09:33:29 io kernel: [232751.700601] [] > xfs_idestroy+0x44/0xb0 [xfs] > Jan 2 09:33:29 io kernel: [232751.700640] [] > xfs_finish_reclaim+0x36/0x160 [xfs] > Jan 2 09:33:29 io kernel: [232751.700681] [] > xfs_fs_clear_inode+0x97/0xc0 [xfs] > Jan 2 09:33:29 io kernel: [232751.700721] [clear_inode+143/320] > clear_inode+0x8f/0x140 > Jan 2 09:33:29 io kernel: [232751.700743] [dispose_list+26/224] > dispose_list+0x1a/0xe0 > Jan 2 09:33:29 io kernel: [232751.700765] > [shrink_icache_memory+379/592] shrink_icache_memory+0x17b/0x250 > Jan 2 09:33:29 io kernel: [232751.700789] [shrink_slab+279/368] > shrink_slab+0x117/0x170 > Jan 2 09:33:29 io kernel: [232751.700815] [kswapd+859/1136] kswapd+0x35b/0x470 > Jan 2 09:33:29 io kernel: [232751.700842] > [autoremove_wake_function+0/80] autoremove_wake_function+0x0/0x50 > Jan 2 09:33:29 io kernel: [232751.700867] [kswapd+0/1136] kswapd+0x0/0x470 > Jan 2 09:33:29 io kernel: [232751.700886] [kthread+66/112] kthread+0x42/0x70 > Jan 2 09:33:29 io kernel: [232751.700904] [kthread+0/112] kthread+0x0/0x70 > Jan 2 09:33:29 io kernel: [232751.700923] > [kernel_thread_helper+7/28] kernel_thread_helper+0x7/0x1c > Jan 2 09:33:29 io kernel: [232751.700946] ======================= > Jan 2 09:33:29 io kernel: [232751.700962] Code: 53 89 cb 83 ec 14 8b > 6c 24 28 f0 0f ba 2e 00 19 c0 85 c0 74 0a 8b 06 a8 01 74 ef f3 90 eb > f6 f6 06 02 75 48 0f b7 46 0a 8b 56 14 <89> 14 83 0f b7 46 08 89 5e 14 > 83 e8 01 f6 06 40 66 89 46 08 75 > Jan 2 09:33:29 io kernel: [232751.701128] EIP: [__slab_free+50/672] > __slab_free+0x32/0x2a0 SS:ESP 0068:c21dfe44 > > Any thoughts what this could be or what could be done to fix it? seems like maybe something went wrong w/ the raid rebuild, if that's when things started going south. Do you get any storage error related messages at all? Ubuntu knows best what's in this oldish distro kernel, I guess; I don't know offhand what might be going wrong. If they have a debug kernel variant, you could run that to see if you get earlier indications of problems. If you can reproduce on a more recent upstream kernel, that would be interesting. -Eric > Cheers, > Tom From sandeen@sandeen.net Thu Jan 1 21:47:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_53, J_CHICKENPOX_74,J_CHICKENPOX_83 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n023lrSD022002 for ; Thu, 1 Jan 2009 21:47:54 -0600 X-ASG-Debug-ID: 1230868069-190102fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 702F01BF8A21 for ; Thu, 1 Jan 2009 19:47:49 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 3QdOpB8Ts97JgPZK for ; Thu, 01 Jan 2009 19:47:49 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id CFB4DAC6273 for ; Thu, 1 Jan 2009 21:47:49 -0600 (CST) Message-ID: <495D8E64.5070206@sandeen.net> Date: Thu, 01 Jan 2009 21:47:48 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: [PATCH] xfstests Makepkgs framework, builds rpms Subject: [PATCH] xfstests Makepkgs framework, builds rpms References: <495D42CE.6060806@sandeen.net> In-Reply-To: <495D42CE.6060806@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230868072 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14202 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- With the install target in place, this lets us do Makepkgs: == dist, log is Logs/dist Wrote: /root/src/xfstests-dev.work/build/xfstests-1.0.0.src.tar.gz Wrote: /root/src/xfstests-dev.work/build/tar/xfstests-1.0.0.tar.gz Wrote: /root/src/xfstests-dev.work/build/rpm/xfstests-1.0.0-1.src.rpm Wrote: /root/src/xfstests-dev.work/build/rpm/xfstests-1.0.0-1.x86_64.rpm It's all largely cut & pasted from the xfsprogs framework. I'll let the debian elves do the things they do for debian packaging if they're interested... xfstests could use more work to make it package-friendly but this is a good start at least. Signed-off-by: Eric Sandeen --- Index: xfstests-dev.work/Makepkgs =================================================================== --- /dev/null +++ xfstests-dev.work/Makepkgs @@ -0,0 +1,88 @@ +#! /bin/sh +# +# Make whichever packages have been requested. +# Defaults to RPMs. +# +LOGDIR=Logs + +type=rpm +verbose=false + +MAKE=${MAKE:-make} +test ! -z "$MAKE" && make=$MAKE + +for opt in $* +do + case "$opt" in + clean) + ;; # ignored, kept for backward compatibility + rpm) + type=rpm ;; + debian) + type=debian ;; + verbose) + verbose=true ;; + *) + echo "Usage: Makepkgs [verbose] [debian|rpm]"; exit 1 ;; + esac +done + +# start with a clean manifest +test -f files.rpm && rm -f files.rpm +test -f filesdevel.rpm && rm -f filesdevel.rpm +test -f fileslib.rpm && rm -f fileslib.rpm + +test ! -d $LOGDIR && mkdir $LOGDIR +rm -rf $LOGDIR/* > /dev/null 2>&1 + +# build Debian packages, cleans itself before starting +SUDO=${SUDO:-sudo} +test ! -z "$SUDO" && sudo=$SUDO +if [ $type = debian ] ; then + LOGDEB=`pwd` + LOGDEB=../`basename $LOGDEB`.log + echo "== Debian build, log is $LOGDEB"; echo + if $verbose ; then + dpkg-buildpackage -r$SUDO | tee $LOGDEB + else + dpkg-buildpackage -r$SUDO > $LOGDEB || exit 1 + fi + exit 0 +fi + +# build RPM packages - manual clean before starting +echo "== clean, log is $LOGDIR/clean" +if $verbose ; then + $MAKE clean 2>&1 | tee $LOGDIR/clean +else + $MAKE clean > $LOGDIR/clean 2>&1 || exit 1 +fi + +echo +echo "== configure, log is $LOGDIR/configure" +rm -f .census # force configure to run here +if $verbose ; then + $MAKE configure 2>&1 | tee $LOGDIR/configure +else + $MAKE configure > $LOGDIR/configure 2>&1 || exit 1 +fi + +echo +echo "== default, log is $LOGDIR/default" +if $verbose ; then + $MAKE default 2>&1 | tee $LOGDIR/default +else + $MAKE default > $LOGDIR/default 2>&1 || exit 1 +fi + +echo +echo "== dist, log is $LOGDIR/dist" +[ ! -f .census ] && touch .census +if $verbose ; then + $MAKE -C build dist 2>&1 | tee $LOGDIR/dist +else + $MAKE -C build dist > $LOGDIR/dist 2>&1 || exit 1 + grep '^Wrote:' $LOGDIR/dist | sed -e 's/\.\.\/\.\.\///' +fi + +exit 0 Index: xfstests-dev.work/build/rpm/macros.template =================================================================== --- /dev/null +++ xfstests-dev.work/build/rpm/macros.template @@ -0,0 +1,30 @@ +# +# rpmrc.template +# +# Template to fudge rpm directory structure inside IRIX-like build +# environment + +# Force 386 build on all platforms +%_target i386-pc-linux +%_target_cpu i386 +%_target_os linux + +# topdir == $(WORKAREA) +%_topdir %topdir% + +# Following directories are specific to the topdir +# This is where build is done. In our case it's the same as $WORKAREA +%_builddir %topdir% + +# This is where foo.1.99.tar.gz is living in the real world. +# Be careful not to run full rpm build as it will override the sources +%_sourcedir %topdir%/build + +# This is where binary RPM and source RPM would end up +%_rpmdir %topdir%/build/rpm +%_srcrpmdir %topdir%/build/rpm +%_specdir %topdir%/build/rpm + +# Leave RPM files in the same directory - we're not building for +# multiple architectures +%_rpmfilename %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm Index: xfstests-dev.work/build/rpm/xfstests.spec.in =================================================================== --- /dev/null +++ xfstests-dev.work/build/rpm/xfstests.spec.in @@ -0,0 +1,49 @@ +Summary: XFS regression test suite +Name: @pkg_name@ +Version: @pkg_version@ +Release: @pkg_release@ +Distribution: @pkg_distribution@ +Packager: Silicon Graphics, Inc. +BuildRoot: @build_root@ +BuildRequires: autoconf, xfsprogs-devel, e2fsprogs-devel +BuildREquires: libacl-devel, libattr-devel, libaio-devel +Requires: bash, xfsprogs, xfsdump, perl, acl, attr, bind-utils +Requires: bc, indent, quota +Source: @pkg_name@-@pkg_version@.src.tar.gz +License: GPL2+ +Vendor: Silicon Graphics, Inc. +URL: http://oss.sgi.com/projects/xfs/ +Group: System Environment/Base + +%description +The XFS regression test suite. Also includes some support for +acl, attr, dmapi, udf, and nfs testing. Contains around 200 specific tests +for userspace & kernelspace. + +%prep +if [ -f .census ] ; then + if [ ! -d ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION} ] ; then + ln -s . ${RPM_PACKAGE_NAME}-${RPM_PACKAGE_VERSION} + fi +else +%setup +INSTALL_USER=root +INSTALL_GROUP=root +export INSTALL_USER INSTALL_GROUP +@make@ configure +fi + +%build +@make@ + +%install +DIST_ROOT="$RPM_BUILD_ROOT" +DIST_INSTALL=`pwd`/install.manifest +export DIST_ROOT DIST_INSTALL +@make@ install DIST_MANIFEST="$DIST_INSTALL" +@make@ -C build/rpm rpmfiles DIST_MANIFEST="$DIST_INSTALL" + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -f build/rpm/rpmfiles From sandeen@sandeen.net Thu Jan 1 22:01:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n0241dxx023004 for ; Thu, 1 Jan 2009 22:01:39 -0600 X-ASG-Debug-ID: 1230868897-4f7100ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C2068176A80A for ; Thu, 1 Jan 2009 20:01:37 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id psF2aTxVLDAeiApO for ; Thu, 01 Jan 2009 20:01:37 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 1A461AC6273 for ; Thu, 1 Jan 2009 22:01:38 -0600 (CST) Message-ID: <495D91A0.4050304@sandeen.net> Date: Thu, 01 Jan 2009 22:01:36 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: xfs-oss X-ASG-Orig-Subj: oopses in xfs_attr_shortform_* on kerneloops.org Subject: oopses in xfs_attr_shortform_* on kerneloops.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230868897 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.52 X-Barracuda-Spam-Status: No, SCORE=-1.52 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_RULE_7582B X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14204 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.50 BSF_RULE_7582B Custom Rule 7582B I noticed this on kerneloops.org and pinged Christoph about it but I'll go ahead & point it out here & file a bug so it doesn't get lost: http://www.kerneloops.org/search.php?search=xfs_attr_shortform&btnG=Function+Search would seem to indicate a problem, though not a (recent) regression anyway. Many traces like: RIP: 0010:[] [] :xfs:xfs_attr_shortform_getvalue+0x27/0xf3 ... Call Trace: [] :xfs:xfs_attr_fetch+0xba/0x114 [] ? inotify_d_instantiate+0x1a/0x42 [] :xfs:xfs_attr_get+0xb1/0xd1 [] :xfs:attr_generic_get+0x1e/0x2e [] :xfs:xfs_vn_getxattr+0x86/0x95 [] vfs_getxattr+0xa1/0xb4 [] getxattr+0x9c/0xfb [] ? mntput_no_expire+0x20/0x85 [] ? path_put+0x2c/0x30 [] ? path_walk+0xb6/0xc3 [] ? do_path_lookup+0x1d6/0x231 [] ? putname+0x30/0x39 [] ? __user_walk_fd+0x4c/0x5c [] sys_lgetxattr+0x53/0x73 [] ? sys_newlstat+0x31/0x3c [] system_call_after_swapgs+0x7b/0x80 -Eric From sandeen@sandeen.net Thu Jan 1 23:22:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n025MJHW027990 for ; Thu, 1 Jan 2009 23:22:19 -0600 X-ASG-Debug-ID: 1230873737-591400810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4F11158D94 for ; Thu, 1 Jan 2009 21:22:17 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id YwUIAlA7tA3kn07x for ; Thu, 01 Jan 2009 21:22:17 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 1B297A9FEA2; Thu, 1 Jan 2009 23:22:18 -0600 (CST) Message-ID: <495DA488.7080702@sandeen.net> Date: Thu, 01 Jan 2009 23:22:16 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Takashi Sato CC: Andrew Morton , Christoph Hellwig , "linux-fsdevel@vger.kernel.org" , "dm-devel@redhat.com" , "viro@ZenIV.linux.org.uk" , "linux-ext4@vger.kernel.org" , "xfs@oss.sgi.com" , "mtk.manpages@googlemail.com" , "axboe@kernel.dk" , "linux-kernel@vger.kernel.org" X-ASG-Orig-Subj: Re: [PATCH 0/3] freeze feature ver 1.14 Subject: Re: [PATCH 0/3] freeze feature ver 1.14 References: <20081027215811t-sato@mail.jp.nec.com> In-Reply-To: <20081027215811t-sato@mail.jp.nec.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230873738 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14209 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- In lieu of the timeout feature which was originally proposed, how about access to an emergency un-freeze via magic sysrq, maybe piggy-backed on emergency sync... something like this (not tested or even built yet...), would this be a good compromise to help save people from frozen roots? -Eric Index: linux-2.6/drivers/char/sysrq.c =================================================================== --- linux-2.6.orig/drivers/char/sysrq.c +++ linux-2.6/drivers/char/sysrq.c @@ -151,6 +151,7 @@ static struct sysrq_key_op sysrq_reboot_ static void sysrq_handle_sync(int key, struct tty_struct *tty) { + emergency_thaw(); emergency_sync(); } static struct sysrq_key_op sysrq_sync_op = { Index: linux-2.6/drivers/md/dm.c =================================================================== --- linux-2.6.orig/drivers/md/dm.c +++ linux-2.6/drivers/md/dm.c @@ -1477,7 +1477,7 @@ static void unlock_fs(struct mapped_devi if (!test_bit(DMF_FROZEN, &md->flags)) return; - thaw_bdev(md->suspended_bdev, md->frozen_sb); + thaw_bdev(md->suspended_bdev, md->frozen_sb, 0); md->frozen_sb = NULL; clear_bit(DMF_FROZEN, &md->flags); } Index: linux-2.6/fs/buffer.c =================================================================== --- linux-2.6.orig/fs/buffer.c +++ linux-2.6/fs/buffer.c @@ -259,13 +259,29 @@ struct super_block *freeze_bdev(struct b EXPORT_SYMBOL(freeze_bdev); /** + * emergency_thaw -- force thaw every filesystem + * + * Used for emergency unfreeze of all filesystems via SysRq + */ +void emergency_thaw(void) +{ + struct super_block *sb; + + list_for_each_entry(sb, &super_blocks, s_list) { + if (sb->s_bdev) + (void)thaw_bdev(sb->s_bdev, sb, 1); + } +} + +/** * thaw_bdev -- unlock filesystem * @bdev: blockdevice to unlock * @sb: associated superblock + * force: force unfreeze regardless of freezer count * * Unlocks the filesystem and marks it writeable again after freeze_bdev(). */ -int thaw_bdev(struct block_device *bdev, struct super_block *sb) +int thaw_bdev(struct block_device *bdev, struct super_block *sb, int force) { int error = 0; @@ -275,7 +291,11 @@ int thaw_bdev(struct block_device *bdev, return -EINVAL; } - bdev->bd_fsfreeze_count--; + if (force) + bdev->bd_fsfreeze_count = 0; + else + bdev->bd_fsfreeze_count--; + if (bdev->bd_fsfreeze_count > 0) { if (sb) drop_super(sb); Index: linux-2.6/fs/ioctl.c =================================================================== --- linux-2.6.orig/fs/ioctl.c +++ linux-2.6/fs/ioctl.c @@ -449,7 +449,7 @@ static int ioctl_fsthaw(struct file *fil return -EINVAL; /* Thaw */ - return thaw_bdev(sb->s_bdev, sb); + return thaw_bdev(sb->s_bdev, sb, 0); } /* Index: linux-2.6/fs/xfs/xfs_fsops.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_fsops.c +++ linux-2.6/fs/xfs/xfs_fsops.c @@ -634,7 +634,7 @@ xfs_fs_goingdown( if (sb && !IS_ERR(sb)) { xfs_force_shutdown(mp, SHUTDOWN_FORCE_UMOUNT); - thaw_bdev(sb->s_bdev, sb); + thaw_bdev(sb->s_bdev, sb, 0); } break; Index: linux-2.6/include/linux/buffer_head.h =================================================================== --- linux-2.6.orig/include/linux/buffer_head.h +++ linux-2.6/include/linux/buffer_head.h @@ -171,7 +171,8 @@ void __wait_on_buffer(struct buffer_head wait_queue_head_t *bh_waitq_head(struct buffer_head *bh); int fsync_bdev(struct block_device *); struct super_block *freeze_bdev(struct block_device *); -int thaw_bdev(struct block_device *, struct super_block *); +void emergency_thaw(void); +int thaw_bdev(struct block_device *, struct super_block *, int); int fsync_super(struct super_block *); int fsync_no_super(struct block_device *); struct buffer_head *__find_get_block(struct block_device *bdev, sector_t block, From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 03:47:43 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n029lgBr015644 for ; Fri, 2 Jan 2009 03:47:43 -0600 X-ASG-Debug-ID: 1230889661-642802750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id DCB7D58FF9 for ; Fri, 2 Jan 2009 01:47:41 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 4DvlLkuf72wLghu1 for ; Fri, 02 Jan 2009 01:47:41 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIgcs-0005HD-9x; Fri, 02 Jan 2009 09:47:30 +0000 Date: Fri, 2 Jan 2009 04:47:30 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Takashi Sato , Andrew Morton , Christoph Hellwig , "linux-fsdevel@vger.kernel.org" , "dm-devel@redhat.com" , "viro@ZenIV.linux.org.uk" , "linux-ext4@vger.kernel.org" , "xfs@oss.sgi.com" , "mtk.manpages@googlemail.com" , "axboe@kernel.dk" , "linux-kernel@vger.kernel.org" X-ASG-Orig-Subj: Re: [PATCH 0/3] freeze feature ver 1.14 Subject: Re: [PATCH 0/3] freeze feature ver 1.14 Message-ID: <20090102094730.GA17841@infradead.org> References: <20081027215811t-sato@mail.jp.nec.com> <495DA488.7080702@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495DA488.7080702@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230889661 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 11:22:16PM -0600, Eric Sandeen wrote: > In lieu of the timeout feature which was originally proposed, how > about access to an emergency un-freeze via magic sysrq, maybe > piggy-backed on emergency sync... something like this (not > tested or even built yet...), would this be a good compromise to > help save people from frozen roots? Looks sane to me. But for that we'd need to get the generic freeze bits in first. Andrews, as they are in 2.6.28-rc2 do you plan to send them? Any chance for a general -mm merge plan, btw? From geert@linux-m68k.org Fri Jan 2 03:58:20 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n029wJCI016566 for ; Fri, 2 Jan 2009 03:58:20 -0600 X-ASG-Debug-ID: 1230890297-531202010000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from wilson.telenet-ops.be (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A7AFB1BF92DB for ; Fri, 2 Jan 2009 01:58:17 -0800 (PST) Received: from wilson.telenet-ops.be (wilson.telenet-ops.be [195.130.132.42]) by cuda.sgi.com with ESMTP id JyIGrBEzYCbQViKw for ; Fri, 02 Jan 2009 01:58:17 -0800 (PST) Received: from localhost (localhost.localdomain [127.0.0.1]) by wilson.telenet-ops.be (Postfix) with SMTP id 5B14134051; Fri, 2 Jan 2009 10:57:45 +0100 (CET) Received: from anakin.of.borg (d54C15368.access.telenet.be [84.193.83.104]) by wilson.telenet-ops.be (Postfix) with ESMTP id DB61934050; Fri, 2 Jan 2009 10:57:44 +0100 (CET) Received: from anakin.of.borg (localhost [127.0.0.1]) by anakin.of.borg (8.14.3/8.14.3/Debian-5) with ESMTP id n029viZ6023970 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NOT); Fri, 2 Jan 2009 10:57:44 +0100 Received: from localhost (geert@localhost) by anakin.of.borg (8.14.3/8.14.3/Submit) with ESMTP id n029vhho023967; Fri, 2 Jan 2009 10:57:43 +0100 X-Authentication-Warning: anakin.of.borg: geert owned process doing -bs Date: Fri, 2 Jan 2009 10:57:43 +0100 (CET) From: Geert Uytterhoeven Sender: geert@linux-m68k.org To: Christoph Hellwig cc: Lachlan McIlroy , Linus Torvalds , Linux Kernel Development , xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [GIT PULL] XFS update for 2.6.29 Subject: Re: [GIT PULL] XFS update for 2.6.29 In-Reply-To: <20090101170329.GA17892@infradead.org> Message-ID: References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> <20090101170329.GA17892@infradead.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-Barracuda-Connect: wilson.telenet-ops.be[195.130.132.42] X-Barracuda-Start-Time: 1230890298 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14223 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Thu, 1 Jan 2009, Christoph Hellwig wrote: > On Thu, Jan 01, 2009 at 10:50:52AM +0100, Geert Uytterhoeven wrote: > > | fs/xfs/xfs_btree.c: In function 'xfs_btree_readahead_lblock': > > | fs/xfs/xfs_btree.c:736: warning: comparison is always true due to limited range of data type > > | fs/xfs/xfs_btree.c:741: warning: comparison is always true due to limited range of data type > > > > left/right = xfs_fsblock_t (32 or 64 bit), NULLDFSBNO = xfs_dfsbno_t (64 bit) > > Hmm, can't reproduce it here with CONFIG_LBD=n on x86, but the following x86-32 or -64? It may also depend on the compiler version. I have gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21). > patch should fix it: Yep, the warning is good. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 03:58:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n029wiDc016600 for ; Fri, 2 Jan 2009 03:58:44 -0600 X-ASG-Debug-ID: 1230890323-643202fd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 67D7E5960C; Fri, 2 Jan 2009 01:58:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id JtWycC5nDD5cUm4U; Fri, 02 Jan 2009 01:58:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIgni-0006Q9-Of; Fri, 02 Jan 2009 09:58:42 +0000 Date: Fri, 2 Jan 2009 04:58:42 -0500 From: Christoph Hellwig To: Geert Uytterhoeven Cc: Christoph Hellwig , Lachlan McIlroy , Linus Torvalds , Linux Kernel Development , xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [GIT PULL] XFS update for 2.6.29 Subject: Re: [GIT PULL] XFS update for 2.6.29 Message-ID: <20090102095842.GA24652@infradead.org> References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> <20090101170329.GA17892@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230890323 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Jan 02, 2009 at 10:57:43AM +0100, Geert Uytterhoeven wrote: > > Hmm, can't reproduce it here with CONFIG_LBD=n on x86, but the following > > x86-32 or -64? > > It may also depend on the compiler version. I have gcc version 4.1.2 20061115 > (prerelease) (Debian 4.1.1-21). 32 bit, gcc version 4.3.2 (Debian 4.3.2-1) From cw@f00f.org Fri Jan 2 04:03:10 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02A39bi016919 for ; Fri, 2 Jan 2009 04:03:10 -0600 X-ASG-Debug-ID: 1230890588-642803060000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from parsec.stupidest.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 76B9D59390 for ; Fri, 2 Jan 2009 02:03:08 -0800 (PST) Received: from parsec.stupidest.org (splinter.f00f.org [216.75.21.205]) by cuda.sgi.com with ESMTP id Z1OJhZ17qxE6vcz9 for ; Fri, 02 Jan 2009 02:03:08 -0800 (PST) Received: from stupidest.org (unknown [10.0.1.1]) by parsec.stupidest.org (Postfix) with ESMTP id 25B74AEFA4 for ; Fri, 2 Jan 2009 02:03:07 -0800 (PST) Received: by tuatara.stupidest.org (Postfix, from userid 10000) id 443E42849A41; Fri, 2 Jan 2009 02:03:06 -0800 (PST) Date: Fri, 2 Jan 2009 02:03:06 -0800 From: Chris Wedgwood To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] fix xfs_fsr insufficient space check Subject: [PATCH] fix xfs_fsr insufficient space check Message-ID: <20090102100306.GA36830@puku.stupidest.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Barracuda-Connect: splinter.f00f.org[216.75.21.205] X-Barracuda-Start-Time: 1230890588 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14223 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- The xfs_fsr insufficient check should consider the blocks used not the file length. Without this change it is not possible to reorganize sparse files when file size exceeds the free space. Signed-off-by: Chris Wedgwood --- fsr/xfs_fsr.c.orig 2009-01-02 01:51:03.049181411 -0800 +++ fsr/xfs_fsr.c 2009-01-02 01:53:56.297180891 -0800 @@ -912,9 +912,9 @@ } bsize = vfss.f_frsize ? vfss.f_frsize : vfss.f_bsize; - if (statp->bs_size > ((vfss.f_bfree * bsize) - minimumfree)) { + if ((statp->bs_blksize * statp->bs_blocks) > ((vfss.f_bfree * bsize) - minimumfree)) { fsrprintf(_("insufficient freespace for: %s: " - "size=%lld: ignoring\n"), fname, statp->bs_size); + "size=%lld: ignoring\n"), fname, statp->bs_blksize * statp->bs_blocks); return 1; } From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 06:00:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02C02EN026005 for ; Fri, 2 Jan 2009 06:00:04 -0600 X-ASG-Debug-ID: 1230897601-45d300db0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D09E11BF94EA for ; Fri, 2 Jan 2009 04:00:01 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id Vju4kkI2DFbc8SQH for ; Fri, 02 Jan 2009 04:00:01 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIih6-00037P-K2; Fri, 02 Jan 2009 12:00:00 +0000 Date: Fri, 2 Jan 2009 07:00:00 -0500 From: Christoph Hellwig To: Chris Wedgwood Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] fix xfs_fsr insufficient space check Subject: Re: [PATCH] fix xfs_fsr insufficient space check Message-ID: <20090102120000.GA9789@infradead.org> References: <20090102100306.GA36830@puku.stupidest.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090102100306.GA36830@puku.stupidest.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230897601 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Fri, Jan 02, 2009 at 02:03:06AM -0800, Chris Wedgwood wrote: > The xfs_fsr insufficient check should consider the blocks used not the > file length. Without this change it is not possible to reorganize > sparse files when file size exceeds the free space. > > Signed-off-by: Chris Wedgwood > > > --- fsr/xfs_fsr.c.orig 2009-01-02 01:51:03.049181411 -0800 > +++ fsr/xfs_fsr.c 2009-01-02 01:53:56.297180891 -0800 > @@ -912,9 +912,9 @@ > } > bsize = vfss.f_frsize ? vfss.f_frsize : vfss.f_bsize; > > - if (statp->bs_size > ((vfss.f_bfree * bsize) - minimumfree)) { > + if ((statp->bs_blksize * statp->bs_blocks) > ((vfss.f_bfree * bsize) - minimumfree)) { I'll put this after fixing the line length and removing all the superflous braces. Also we probably want a comment that bs_blksize in xfs_bstat_t actually is the blocksize, unlike st_blksize in struct stat. From www-data@hiphop-magazine.com Fri Jan 2 10:09:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.1 required=5.0 tests=AWL,BAYES_50,HTML_MESSAGE autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02G9BRu010351 for ; Fri, 2 Jan 2009 10:09:12 -0600 X-ASG-Debug-ID: 1230912546-794602c00000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hiphop-magazine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3A5175A0A4 for ; Fri, 2 Jan 2009 08:09:06 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id sQHxlMEObxuAAI3r for ; Fri, 02 Jan 2009 08:09:06 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id 4C3EC4B85BA; Fri, 2 Jan 2009 17:08:33 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Yo! PR: Coast 2 Coast Mixtape Vol. 62 - Hosted By Swizz Beatz Subject: Yo! PR: Coast 2 Coast Mixtape Vol. 62 - Hosted By Swizz Beatz Date: Fri, 2 Jan 2009 17:08:33 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-ListMessenger-Version: Pro [2.1.0] X-ListMessenger-ID: X-Originating-IP: 91.3.159.21 List-Help: List-Owner: (Yo! Raps) List-Unsubscribe: List-Archive: List-Post: NO MIME-Version: 1.0 X-Barracuda-Connect: hiphop-magazine.com[85.214.133.137] X-Barracuda-Start-Time: 1230912548 X-Barracuda-Bayes: INNOCENT GLOBAL 0.6526 1.0000 1.0380 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 1.24 X-Barracuda-Spam-Status: No, SCORE=1.24 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=BSF_SC0_SA074b, HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14244 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.20 BSF_SC0_SA074b URI: Custom Rule SA074b 0.00 HTML_MESSAGE BODY: HTML included in message Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 7bit Content-length: 2498 Please contact me if you place any of the following information on your site, or to request an interview. Thank you for your time! COAST 2 COAST MIXTAPE VOL. 62 - HOSTED BY SWIZZ BEATZ Lil Fats presents Coast 2 Coast Mixtape Vol. 62, hosted by Swizz Beatz. This mixtape features new music from the whole industry including Jadakiss, Fat Joe, Jay Rock, Papoose, Joell Ortiz, and more. It also features exclusive freestyles from Sha Stimuli, Reks, Lil Fats, St. Laz, Cy Marshall Law and more! Artists: Submit your music for the next mixtape at www.coast2coastsubmissions.com DOWNLOAD THIS MIXTAPE FOR FREE NOW AT: www.coast2coastmixtapes.com TRACKLIST 1. Swizz Beatz - Let It Loose 2. Sha Stimuli - Coast 2 Coast Weekly 7 3. Jay Rock. ft. Papoose, Grafh, Joell Ortiz, Stacy Adams & K. Dot - East Meets West 4. Jadakiss - Letter To BIG 5. Reks - Coast 2 Coast Weekly 3 6. Fat Joe ft. Ron Browz & Lil Wayne - Winding On Me 7. Swizz Beatz - Way You Make Me Feel 8. Lil Fats - Coast 2 Coast Weekly 19 9. Lloyd Banks - My Brothers Keeper 10. St. Laz - Coast 2 Coast Weekly 2 11. Stat Quo - The Wind 12. Cy Marshall Law - Coast 2 Coast Weekly 3 13. LieFocals - Hood Star 14. J-LP ft. Ray J - Rush 15. Supa - Know Dat 16. T.O.B.I.A.S - Bumper 2 Bumper 17. Cartel Enterprise (Phame, Money, Jdot & AK) - Lime Green 18. Broadway - Bezzel 19. Maluv - Only You 20. DJ Suarez ft. JT The Bigga Figga - DJ Suarez (Freestyle) 21. Marc Menace - Stay Up 22. E. Gamble - Jump Off Chick 23. J-Sin ft. Showtime & AK of Do Or Die - Bottles Up 24. David $tarr (D. $tizzy) - So Emotional (Remix) 25. Codyac - Words Cant Describe 26. Johnny Toma - Greazy 27. The UnNaturalists - Tip Top 28. Travisty - All Talk 29. Swizz Beatz - Outro WEBSITE: http://www.coast2coastmixtapes.com CONTACT: Lil Fats | coast2coastmixtapes@gmail.com Let your song, video, mixtape, press release serviced up to 1,200,000 industry contacts including Label Execs, A&R's, Radio Stations, Record Breakers, Record Pools, Magazines, Major Websites, Promoters, Artists, Consumers, Managers, Publicists! Email: info@yo-pr.com ------------------------------------------------------------------- This e-mail was sent to linux-xfs@oss.sgi.com because you are subscribed to at least one of our mailing lists. If at any time you would like to remove yourself from our mailing list, please feel free to do so by visiting: http://www.yoraps.com/mailinglist/public/unsubscribe.php?g=6&addr=linux-xfs@oss.sgi.com [[HTML alternate version deleted]] From www-data@hiphop-magazine.com Fri Jan 2 10:55:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_50 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02Gt9gj014024 for ; Fri, 2 Jan 2009 10:55:13 -0600 X-ASG-Debug-ID: 1230915307-5c2a002d0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from hiphop-magazine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 798D35A2C7 for ; Fri, 2 Jan 2009 08:55:07 -0800 (PST) Received: from hiphop-magazine.com (hiphop-magazine.com [85.214.133.137]) by cuda.sgi.com with ESMTP id LEdSIB2o8ZFVRaZg for ; Fri, 02 Jan 2009 08:55:07 -0800 (PST) Received: by hiphop-magazine.com (Postfix, from userid 33) id 617A7499D34; Fri, 2 Jan 2009 17:51:45 +0100 (CET) To: linux-xfs@oss.sgi.com X-ASG-Orig-Subj: Mailing List Removal Confirmation Notice Subject: Mailing List Removal Confirmation Notice Date: Fri, 2 Jan 2009 17:51:45 +0100 From: Yo! Raps Reply-To: Yo! Raps Message-ID: <3bfd99ec166347448d4cb86d174081a9@www.yoraps.com> X-Priority: 3 X-Mailer: PHPMailer [version 1.73] X-ListMessenger-Version: Pro [2.1.0] X-ListMessenger-ID: X-Originating-IP: 62.4.18.94 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="ISO-8859-1" X-Barracuda-Connect: hiphop-magazine.com[85.214.133.137] X-Barracuda-Start-Time: 1230915308 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5000 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14247 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Someone (either yourself or the list administrator) has requested that your e-mail address be removed from one or more of our mailing lists. This e-mail is being sent to confirm that you wish to be removed from our system. If you would like to opt-out, please follow the link below: http://www.yoraps.com/mailinglist/public/confirm.php?id=1232650&code=a7f397d521cce1536e17ccc9955aa56a If you did not request to be removed from our mailing lists, please ignore this e-mail and do not follow the above link. If requests persist, you may wish to notify our abuse account at no-reply@yoraps.com. Sincerely, Yo! Raps From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 11:59:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02HxCv1018581 for ; Fri, 2 Jan 2009 11:59:13 -0600 X-ASG-Debug-ID: 1230919151-58aa01230000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 026CD1BFA410 for ; Fri, 2 Jan 2009 09:59:11 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 84kPTlsjFuVFFKPN for ; Fri, 02 Jan 2009 09:59:11 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIoIh-0007hU-N9; Fri, 02 Jan 2009 17:59:11 +0000 Date: Fri, 2 Jan 2009 12:59:11 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: oopses in xfs_attr_shortform_* on kerneloops.org Subject: Re: oopses in xfs_attr_shortform_* on kerneloops.org Message-ID: <20090102175911.GA29506@infradead.org> References: <495D91A0.4050304@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495D91A0.4050304@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230919152 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 10:01:36PM -0600, Eric Sandeen wrote: > I noticed this on kerneloops.org and pinged Christoph about it but I'll > go ahead & point it out here & file a bug so it doesn't get lost: > > http://www.kerneloops.org/search.php?search=xfs_attr_shortform&btnG=Function+Search > > would seem to indicate a problem, though not a (recent) regression anyway. Yeah, I've been looking into and the disassemly looks like we have a NULL attribut fork pointer for some reason. I did some poking around in the code and couldn't a cause for it. So if anyone of the kerneloops submitters actually is on the list and can reproduce it that would be extremly helpful. From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 12:00:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02HxxGN018677 for ; Fri, 2 Jan 2009 12:00:00 -0600 X-ASG-Debug-ID: 1230919198-58d901340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6B68F1BFA1AD for ; Fri, 2 Jan 2009 09:59:58 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id 2X0LAljXDDIpgaRn for ; Fri, 02 Jan 2009 09:59:58 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIoJS-0007iz-5A; Fri, 02 Jan 2009 17:59:58 +0000 Date: Fri, 2 Jan 2009 12:59:58 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] remove always-true #ifndef HAVE_FORMAT32 tests Subject: Re: [PATCH] remove always-true #ifndef HAVE_FORMAT32 tests Message-ID: <20090102175958.GB29506@infradead.org> References: <495D48B3.2080708@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495D48B3.2080708@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230919198 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 04:50:27PM -0600, Eric Sandeen wrote: > There are several tests for #ifndef HAVE_FORMAT32, but > this is never defined anywhere so it is always the default > behavior; just remove the ifndef goop. Looks good to me. I can't see any reason why you'd want to defined these in a different place. From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 12:02:50 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02I2ntG019019 for ; Fri, 2 Jan 2009 12:02:50 -0600 X-ASG-Debug-ID: 1230919368-58e4012b0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 65E841BFA1EE for ; Fri, 2 Jan 2009 10:02:48 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id mAy8SjPFogXXzh54 for ; Fri, 02 Jan 2009 10:02:48 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIoMB-0008Bv-GW; Fri, 02 Jan 2009 18:02:48 +0000 Date: Fri, 2 Jan 2009 13:02:47 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] create xfstests install target Subject: Re: [PATCH] create xfstests install target Message-ID: <20090102180247.GC29506@infradead.org> References: <495D42CE.6060806@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495D42CE.6060806@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230919368 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 04:25:18PM -0600, Eric Sandeen wrote: > Not sure what the best location for this is in the end, but that's > just a one-line change in builddefs.in if it should move. Currently > it goes to whatever configure thinks "libexecdir" is. I think that's incorrect. libexecdir is /usr/lib for FHS or /usr/libexec for BSDish filesystem layouts, but /use should be read-only mountable. Maybe /var/lib/xfstests as a start? That seems to be the dumping ground for random stuff that needs write access. Even better would be keeping the scripts under /usr/lib and the output in /var/lib, but that might be too much work. > +PKG_SBIN_DIR = @sbindir@ This one doesn't actually seem to be used. Otherwise looks good to me. From SRS0+5c86b1530a7ce9708fc1+1958+infradead.org+hch@bombadil.srs.infradead.org Fri Jan 2 12:03:53 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02I3qvL019163 for ; Fri, 2 Jan 2009 12:03:53 -0600 X-ASG-Debug-ID: 1230919431-58a601490000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A17BB1BFA1F9 for ; Fri, 2 Jan 2009 10:03:51 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id eivplr97bIU4HsLK for ; Fri, 02 Jan 2009 10:03:51 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LIoMi-0008Cy-Qx; Fri, 02 Jan 2009 18:03:20 +0000 Date: Fri, 2 Jan 2009 13:03:20 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] xfstests Makepkgs framework, builds rpms Subject: Re: [PATCH] xfstests Makepkgs framework, builds rpms Message-ID: <20090102180320.GD29506@infradead.org> References: <495D42CE.6060806@sandeen.net> <495D8E64.5070206@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <495D8E64.5070206@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1230919431 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Jan 01, 2009 at 09:47:48PM -0600, Eric Sandeen wrote: > With the install target in place, this lets us do Makepkgs: > > == dist, log is Logs/dist > Wrote: /root/src/xfstests-dev.work/build/xfstests-1.0.0.src.tar.gz > Wrote: /root/src/xfstests-dev.work/build/tar/xfstests-1.0.0.tar.gz > Wrote: /root/src/xfstests-dev.work/build/rpm/xfstests-1.0.0-1.src.rpm > Wrote: /root/src/xfstests-dev.work/build/rpm/xfstests-1.0.0-1.x86_64.rpm > > It's all largely cut & pasted from the xfsprogs framework. > I'll let the debian elves do the things they do for debian > packaging if they're interested... > > xfstests could use more work to make it package-friendly but this > is a good start at least. You missed the Debian packaging :) I'll give it a try. From sandeen@sandeen.net Fri Jan 2 12:26:25 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02IQPJq021093 for ; Fri, 2 Jan 2009 12:26:25 -0600 X-ASG-Debug-ID: 1230920783-5c0101190000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 0C9FF5A528 for ; Fri, 2 Jan 2009 10:26:23 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id Jt1qVstZD6xFBt9E for ; Fri, 02 Jan 2009 10:26:23 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 1E74AA9FEA6; Fri, 2 Jan 2009 12:26:21 -0600 (CST) Message-ID: <495E5C4D.80307@sandeen.net> Date: Fri, 02 Jan 2009 12:26:21 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] create xfstests install target Subject: Re: [PATCH] create xfstests install target References: <495D42CE.6060806@sandeen.net> <20090102180247.GC29506@infradead.org> In-Reply-To: <20090102180247.GC29506@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230920784 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14252 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Thu, Jan 01, 2009 at 04:25:18PM -0600, Eric Sandeen wrote: >> Not sure what the best location for this is in the end, but that's >> just a one-line change in builddefs.in if it should move. Currently >> it goes to whatever configure thinks "libexecdir" is. > > I think that's incorrect. libexecdir is /usr/lib for FHS or /usr/libexec > for BSDish filesystem layouts, but /use should be read-only mountable. > > Maybe /var/lib/xfstests as a start? That seems to be the dumping ground > for random stuff that needs write access. Ok, easy enough. > Even better would be keeping > the scripts under /usr/lib and the output in /var/lib, but that might > be too much work. Yeah at least right now I'm not that highly motivated. :) >> +PKG_SBIN_DIR = @sbindir@ > > This one doesn't actually seem to be used. true, it's not ... I put it in there thinking about putting a wrapper in sbin or /usr/sbin so tests could be launched from root's path ... -Eric > Otherwise looks good to me. > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs > From mikesm559@yahoo.com Fri Jan 2 12:36:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n02IabgY021743 for ; Fri, 2 Jan 2009 12:36:39 -0600 X-ASG-Debug-ID: 1230921395-58aa01cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from web30802.mail.mud.yahoo.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id CDE0B1BFA36F for ; Fri, 2 Jan 2009 10:36:35 -0800 (PST) Received: from web30802.mail.mud.yahoo.com (web30802.mail.mud.yahoo.com [68.142.200.145]) by cuda.sgi.com with SMTP id YxQdfmq63OGW50K4 for ; Fri, 02 Jan 2009 10:36:35 -0800 (PST) Received: (qmail 49758 invoked by uid 60001); 2 Jan 2009 18:36:34 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:MIME-Version:Content-Type:Message-ID; b=jDsUi7kkg4ALemKWOeJEFxP0j2VkcbhLIfZuxg72JYx5UUmpy0fTz2vofRF5pmh2xdBFqlqYCE51giwLMUUV/KyENR2RjIOjdqMnQbNzcadl0gVEf1Df+97XUO7RfuEoIaBYzyFlXrdWLUMdfFQEOhZytOgXbF4mSTzJOtfhR10=; X-YMail-OSG: NkedHNAVM1kA7lxU1EQRL3gAE9_R30M3UyqQD5RYaN38xvtP2xIUosC2mBHkeICbnaSS9i06TAEORaP6zblqoUxLakgWHuUPcb8DFtP.NkOq3OO9Pd5IxTE19Y86XqCMoke1.QVB7ngDT9BDkS_L5gN40gni9CzHWy60gk0U4kGxZbQAL2RUZYJjHihW6Q-- Received: from [24.5.6.84] by web30802.mail.mud.yahoo.com via HTTP; Fri, 02 Jan 2009 10:36:34 PST X-Mailer: YahooMailRC/1155.45 YahooMailWebService/0.7.260.1 Date: Fri, 2 Jan 2009 10:36:34 -0800 (PST) From: Mike Myers X-ASG-Orig-Subj: Recovering XFS data froma RAID failure Subject: Recovering XFS data froma RAID failure To: xfs@oss.sgi.com MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Message-ID: <703541.49128.qm@web30802.mail.mud.yahoo.com> X-Barracuda-Connect: web30802.mail.mud.yahoo.com[68.142.200.145] X-Barracuda-Start-Time: 1230921396 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14252 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Hello everyone. I seem to have run into a spate of bad luck on New Year's day morning, and would love some assistance. I have (had) a 12 TB XFS filesystem running on top of a single LVM volume running on top of 2 7 TB software RAID5 sets (this is under opensuse 11.0). One of the RAID5 sets suffered a disk fault that had it go into degraded mode, and then suffered another disk fault while trying to restripe a new disk and a hardware SATA controller fault that occured all at the same time. Yes, I know the odds of this happening, and I am trying to discern what grevious sin I have committed to warrant this sort of treament. I don't even work on Wall Street! Anyways, I have a new SATA controller online and the disks are now talking to the system again, and I am working hard to try and salvage the array, but it looks pretty likely that RAID set may not be recoverable. About 9 TB of data was present in the XFS volume, and the 2nd 7 TB RAID5 volume is working just fine. I was wondering if there was any way to salvage data from the XFS volume so that any files who are intact on the half of the volume that is still there could be recovered? I'm not trying to get back data that was rm'd, but if I can't recover one of the RAID5 volumes, it would be good to try and pull things off whatever is left. Any ideas for me? Thx mike From sandeen@sandeen.net Fri Jan 2 21:47:02 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n033l1of027188 for ; Fri, 2 Jan 2009 21:47:02 -0600 X-ASG-Debug-ID: 1230954420-3e8300350000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 026525BCE7 for ; Fri, 2 Jan 2009 19:47:00 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id O1Wwsu4jKuEFjGeo for ; Fri, 02 Jan 2009 19:47:00 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id 09759AABFCD; Fri, 2 Jan 2009 21:46:59 -0600 (CST) Message-ID: <495EDFB2.30603@sandeen.net> Date: Fri, 02 Jan 2009 21:46:58 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: [PATCH] create xfstests install target Subject: Re: [PATCH] create xfstests install target References: <495D42CE.6060806@sandeen.net> <20090102180247.GC29506@infradead.org> <495E5C4D.80307@sandeen.net> In-Reply-To: <495E5C4D.80307@sandeen.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230954421 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14285 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Eric Sandeen wrote: > Christoph Hellwig wrote: >> On Thu, Jan 01, 2009 at 04:25:18PM -0600, Eric Sandeen wrote: >>> Not sure what the best location for this is in the end, but that's >>> just a one-line change in builddefs.in if it should move. Currently >>> it goes to whatever configure thinks "libexecdir" is. >> I think that's incorrect. libexecdir is /usr/lib for FHS or /usr/libexec >> for BSDish filesystem layouts, but /use should be read-only mountable. >> >> Maybe /var/lib/xfstests as a start? That seems to be the dumping ground >> for random stuff that needs write access. > > Ok, easy enough. Or so one might think. Anyone good with autoconf who can tell me how the *!@% to specify /var/lib ? -Eric From sandeen@sandeen.net Fri Jan 2 22:09:37 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n0349bxs028615 for ; Fri, 2 Jan 2009 22:09:37 -0600 X-ASG-Debug-ID: 1230955774-538803040000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mail.sandeen.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 90D23175A868 for ; Fri, 2 Jan 2009 20:09:34 -0800 (PST) Received: from mail.sandeen.net (sandeen.net [209.173.210.139]) by cuda.sgi.com with ESMTP id 9A26RJwCzaH73DZP for ; Fri, 02 Jan 2009 20:09:34 -0800 (PST) Received: from liberator.sandeen.net (liberator.sandeen.net [10.0.0.4]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sandeen.net (Postfix) with ESMTP id B014AA9FEA3; Fri, 2 Jan 2009 22:09:32 -0600 (CST) Message-ID: <495EE4FC.9080808@sandeen.net> Date: Fri, 02 Jan 2009 22:09:32 -0600 From: Eric Sandeen User-Agent: Thunderbird 2.0.0.19 (Macintosh/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: xfs-oss X-ASG-Orig-Subj: Re: oopses in xfs_attr_shortform_* on kerneloops.org Subject: Re: oopses in xfs_attr_shortform_* on kerneloops.org References: <495D91A0.4050304@sandeen.net> <20090102175911.GA29506@infradead.org> In-Reply-To: <20090102175911.GA29506@infradead.org> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Barracuda-Connect: sandeen.net[209.173.210.139] X-Barracuda-Start-Time: 1230955775 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14287 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Christoph Hellwig wrote: > On Thu, Jan 01, 2009 at 10:01:36PM -0600, Eric Sandeen wrote: >> I noticed this on kerneloops.org and pinged Christoph about it but I'll >> go ahead & point it out here & file a bug so it doesn't get lost: >> >> http://www.kerneloops.org/search.php?search=xfs_attr_shortform&btnG=Function+Search >> >> would seem to indicate a problem, though not a (recent) regression anyway. > > Yeah, I've been looking into and the disassemly looks like we have > a NULL attribut fork pointer for some reason. I did some poking > around in the code and couldn't a cause for it. So if anyone of > the kerneloops submitters actually is on the list and can reproduce > it that would be extremly helpful. This *might* be a clue: http://article.gmane.org/gmane.comp.file-systems.xfs.general/22156 one of those oopses, and associated xfs_repair output for the fs in question... doesn't make anything clearer to me, though, offhand. -Eric From SRS0+b0071679477698ef99e8+1959+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 3 14:52:29 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n03KqSMC002479 for ; Sat, 3 Jan 2009 14:52:29 -0600 X-ASG-Debug-ID: 1231015948-53d603560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6AF565CA86 for ; Sat, 3 Jan 2009 12:52:28 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id UKRHZQL1ETVjOjb5 for ; Sat, 03 Jan 2009 12:52:28 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJDTv-0005Jj-T6 for xfs@oss.sgi.com; Sat, 03 Jan 2009 20:52:27 +0000 Date: Sat, 3 Jan 2009 15:52:27 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] fix bad_features2 fixups for the root filesystem Subject: [PATCH] fix bad_features2 fixups for the root filesystem Message-ID: <20090103205227.GA20346@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231015948 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Currently the bad_features2 fixup and the alignment updates in the superblock are skipped if we mount a filesystem read-only. But for the root filesystem the typical case is to mount read-only first and only later remount writeable so we'll never perform this update at all. It's not a big problem but means the logs of people needing the fixup get spammed at every boot because they never happen on disk. Reported-by: Arkadiusz Miskiewicz Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_mount.c =================================================================== --- xfs.orig/fs/xfs/xfs_mount.c 2009-01-02 18:39:11.579671462 +0100 +++ xfs/fs/xfs/xfs_mount.c 2009-01-03 21:42:36.741548942 +0100 @@ -45,7 +45,6 @@ #include "xfs_fsops.h" #include "xfs_utils.h" -STATIC int xfs_mount_log_sb(xfs_mount_t *, __int64_t); STATIC int xfs_uuid_mount(xfs_mount_t *); STATIC void xfs_unmountfs_wait(xfs_mount_t *); @@ -682,7 +681,7 @@ xfs_initialize_perag_data(xfs_mount_t *m * Update alignment values based on mount options and sb values */ STATIC int -xfs_update_alignment(xfs_mount_t *mp, __uint64_t *update_flags) +xfs_update_alignment(xfs_mount_t *mp) { xfs_sb_t *sbp = &(mp->m_sb); @@ -736,11 +735,11 @@ xfs_update_alignment(xfs_mount_t *mp, __ if (xfs_sb_version_hasdalign(sbp)) { if (sbp->sb_unit != mp->m_dalign) { sbp->sb_unit = mp->m_dalign; - *update_flags |= XFS_SB_UNIT; + mp->m_update_flags |= XFS_SB_UNIT; } if (sbp->sb_width != mp->m_swidth) { sbp->sb_width = mp->m_swidth; - *update_flags |= XFS_SB_WIDTH; + mp->m_update_flags |= XFS_SB_WIDTH; } } } else if ((mp->m_flags & XFS_MOUNT_NOALIGN) != XFS_MOUNT_NOALIGN && @@ -905,7 +904,6 @@ xfs_mountfs( xfs_sb_t *sbp = &(mp->m_sb); xfs_inode_t *rip; __uint64_t resblks; - __int64_t update_flags = 0LL; uint quotamount, quotaflags; int uuid_mounted = 0; int error = 0; @@ -933,7 +931,7 @@ xfs_mountfs( "XFS: correcting sb_features alignment problem"); sbp->sb_features2 |= sbp->sb_bad_features2; sbp->sb_bad_features2 = sbp->sb_features2; - update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; + mp->m_update_flags |= XFS_SB_FEATURES2 | XFS_SB_BAD_FEATURES2; /* * Re-check for ATTR2 in case it was found in bad_features2 @@ -947,11 +945,11 @@ xfs_mountfs( if (xfs_sb_version_hasattr2(&mp->m_sb) && (mp->m_flags & XFS_MOUNT_NOATTR2)) { xfs_sb_version_removeattr2(&mp->m_sb); - update_flags |= XFS_SB_FEATURES2; + mp->m_update_flags |= XFS_SB_FEATURES2; /* update sb_versionnum for the clearing of the morebits */ if (!sbp->sb_features2) - update_flags |= XFS_SB_VERSIONNUM; + mp->m_update_flags |= XFS_SB_VERSIONNUM; } /* @@ -960,7 +958,7 @@ xfs_mountfs( * allocator alignment is within an ag, therefore ag has * to be aligned at stripe boundary. */ - error = xfs_update_alignment(mp, &update_flags); + error = xfs_update_alignment(mp); if (error) goto error1; @@ -1137,10 +1135,12 @@ xfs_mountfs( } /* - * If fs is not mounted readonly, then update the superblock changes. + * If this is a read-only mount defer the superblock updates until + * the next remount into writeable mode. Otherwise we would never + * perform the update e.g. for the root filesystem. */ - if (update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { - error = xfs_mount_log_sb(mp, update_flags); + if (mp->m_update_flags && !(mp->m_flags & XFS_MOUNT_RDONLY)) { + error = xfs_mount_log_sb(mp, mp->m_update_flags); if (error) { cmn_err(CE_WARN, "XFS: failed to write sb changes"); goto error4; @@ -1820,7 +1820,7 @@ xfs_uuid_mount( * be altered by the mount options, as well as any potential sb_features2 * fixup. Only the first superblock is updated. */ -STATIC int +int xfs_mount_log_sb( xfs_mount_t *mp, __int64_t fields) Index: xfs/fs/xfs/xfs_mount.h =================================================================== --- xfs.orig/fs/xfs/xfs_mount.h 2009-01-01 11:53:17.541576193 +0100 +++ xfs/fs/xfs/xfs_mount.h 2009-01-03 21:38:22.555577508 +0100 @@ -327,6 +327,8 @@ typedef struct xfs_mount { spinlock_t m_sync_lock; /* work item list lock */ int m_sync_seq; /* sync thread generation no. */ wait_queue_head_t m_wait_single_sync_task; + __int64_t m_update_flags; /* sb flags we need to update + on the next remount,rw */ } xfs_mount_t; /* @@ -514,6 +516,7 @@ extern int xfs_mod_incore_sb_unlocked(xf int64_t, int); extern int xfs_mod_incore_sb_batch(xfs_mount_t *, xfs_mod_sb_t *, uint, int); +extern int xfs_mount_log_sb(xfs_mount_t *, __int64_t); extern struct xfs_buf *xfs_getsb(xfs_mount_t *, int); extern int xfs_readsb(xfs_mount_t *, int); extern void xfs_freesb(xfs_mount_t *); Index: xfs/fs/xfs/linux-2.6/xfs_super.c =================================================================== --- xfs.orig/fs/xfs/linux-2.6/xfs_super.c 2009-01-01 11:53:17.294547000 +0100 +++ xfs/fs/xfs/linux-2.6/xfs_super.c 2009-01-03 21:47:58.367578173 +0100 @@ -1197,6 +1197,7 @@ xfs_fs_remount( struct xfs_mount *mp = XFS_M(sb); substring_t args[MAX_OPT_ARGS]; char *p; + int error; while ((p = strsep(&options, ",")) != NULL) { int token; @@ -1247,11 +1248,25 @@ xfs_fs_remount( } } - /* rw/ro -> rw */ + /* ro -> rw */ if ((mp->m_flags & XFS_MOUNT_RDONLY) && !(*flags & MS_RDONLY)) { mp->m_flags &= ~XFS_MOUNT_RDONLY; if (mp->m_flags & XFS_MOUNT_BARRIER) xfs_mountfs_check_barriers(mp); + + /* + * If this is the first remount to writeable state we + * might have some superblock changes to update. + */ + if (mp->m_update_flags) { + error = xfs_mount_log_sb(mp, mp->m_update_flags); + if (error) { + cmn_err(CE_WARN, + "XFS: failed to write sb changes"); + return error; + } + mp->m_update_flags = 0; + } } /* rw -> ro */ From SRS0+b0071679477698ef99e8+1959+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 3 14:53:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_72 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n03Krg5O002545 for ; Sat, 3 Jan 2009 14:53:42 -0600 X-ASG-Debug-ID: 1231016020-45ce00790000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 8A14B17A37EE for ; Sat, 3 Jan 2009 12:53:40 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id EckYTArA4FJ2o1V6 for ; Sat, 03 Jan 2009 12:53:40 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJDUb-0005Kd-Pd for xfs@oss.sgi.com; Sat, 03 Jan 2009 20:53:09 +0000 Date: Sat, 3 Jan 2009 15:53:09 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: add test 199, bad_features2 correction Subject: [PATCH] xfstests: add test 199, bad_features2 correction Message-ID: <20090103205309.GB20346@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231016021 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Index: xfstests-dev/199 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/199 2009-01-03 20:36:06.000000000 +0000 @@ -0,0 +1,65 @@ +#! /bin/sh +# FS QA Test No. 199 +# +# Check that a filesystem first mounted read-only and then remounted +# performs the features2 fixup properly. +# +#----------------------------------------------------------------------- +# Copyright (c) 2008 Christoph Hellwig. +#----------------------------------------------------------------------- +# +# creator +owner=hch@lst.de + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_cleanup() +{ + cd / + umount $SCRATCH_MNT >/dev/null 2>&1 +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_scratch + +_scratch_mkfs_xfs >/dev/null 2>&1 + +# +# Print the current flags. Just a dummy so that the test breaks +# in an obvious way when the default feature flags changed in mkfs +# +echo "Default feature2 flags:" +xfs_db -x $SCRATCH_DEV -c 'sb' -c 'print features2' +xfs_db -x $SCRATCH_DEV -c 'sb' -c 'print bad_features2' + +# +# Now clear the normal flags +# +echo "Clearing features2:" +xfs_db -x $SCRATCH_DEV -c 'sb' -c 'write features2 0' + +# +# And print the flags after a mount ro and remount rw +_scratch_mount -o ro +_scratch_mount -o remount,rw +umount $SCRATCH_MNT +echo "Features 2 after mount ro and remount rw:" +xfs_db -x $SCRATCH_DEV -c 'sb' -c 'print features2' + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfstests-dev/group =================================================================== --- xfstests-dev.orig/group 2009-01-03 20:24:09.000000000 +0000 +++ xfstests-dev/group 2009-01-03 20:24:48.000000000 +0000 @@ -300,3 +300,4 @@ 195 ioctl dump auto 196 quota auto 197 dir auto +199 mount auto Index: xfstests-dev/199.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/199.out 2009-01-03 20:46:08.000000000 +0000 @@ -0,0 +1,9 @@ +QA output created by 199 +Default feature2 flags: +features2 = 0x8 +bad_features2 = 0x8 +Clearing features2: +features2 = 0 +Features 2 after mount ro and remount rw: +features2 = 0x8 +*** done From SRS0+b0071679477698ef99e8+1959+infradead.org+hch@bombadil.srs.infradead.org Sat Jan 3 15:45:19 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n03LjIEo006225 for ; Sat, 3 Jan 2009 15:45:19 -0600 X-ASG-Debug-ID: 1231019117-08ae03000000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EFDF55C990 for ; Sat, 3 Jan 2009 13:45:17 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id qh3KSisi6FqvE0HN for ; Sat, 03 Jan 2009 13:45:17 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJEIV-0002MT-I2; Sat, 03 Jan 2009 21:44:43 +0000 Date: Sat, 3 Jan 2009 16:44:43 -0500 From: Christoph Hellwig To: Nick Piggin Cc: Peter Klotz , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? Message-ID: <20090103214443.GA6612@infradead.org> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20081230042333.GC27679@wotan.suse.de> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231019117 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tue, Dec 30, 2008 at 05:23:33AM +0100, Nick Piggin wrote: > On Tue, Dec 23, 2008 at 12:12:59PM -0500, Christoph Hellwig wrote: > > > > Nick, I've seen various reports like this by Roman. It seems to be > > caused by an interaction of the lockless pagecache with the xfs > > I/O code. Any idea what might be wrong here: > > Hmm, it could get into a loop here if there is a page in the pagecache > with a zero refcount, which might be a problem with XFS... other looping > conditions might indicate a problem iwth lockless pagecache or radix > tree. It would be very helpful to know what condition it is looping on... See http://oss.sgi.com/bugzilla/show_bug.cgi?id=805 From SRS0+c0a58c6b4215c0095039+1960+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 4 10:42:13 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_66 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04GgCVZ016981 for ; Sun, 4 Jan 2009 10:42:13 -0600 X-ASG-Debug-ID: 1231087331-2de102fa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1D21B5E0D1 for ; Sun, 4 Jan 2009 08:42:12 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id lr8DYrjNUivsTDAB for ; Sun, 04 Jan 2009 08:42:12 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJW3H-00046U-J9 for xfs@oss.sgi.com; Sun, 04 Jan 2009 16:42:11 +0000 Date: Sun, 4 Jan 2009 11:42:11 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] sanity check attr fork size Subject: [PATCH] sanity check attr fork size Message-ID: <20090104164211.GA15734@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231087332 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Recently we have quite a few kerneloops reports about dereferencing a NULL if_data in the attribute fork. From looking over the code this can only happen if we pass a 0 size argument to xfs_iformat_local. This implies some sort of corruption and in fact the only mailinglist report about this from earlier this year was after a powerfail presumably on a system with write cache and without barriers. Add a quick sanity check for the attr fork size in xfs_iformat to catch these early and without an oops. Signed-off-by: Christoph Hellwig Index: linux-2.6/fs/xfs/xfs_inode.c =================================================================== --- linux-2.6.orig/fs/xfs/xfs_inode.c 2009-01-04 17:35:11.955671640 +0100 +++ linux-2.6/fs/xfs/xfs_inode.c 2009-01-04 17:38:04.643673527 +0100 @@ -424,6 +424,19 @@ xfs_iformat( case XFS_DINODE_FMT_LOCAL: atp = (xfs_attr_shortform_t *)XFS_DFORK_APTR(dip); size = be16_to_cpu(atp->hdr.totsize); + + if (unlikely(size < sizeof(struct xfs_attr_sf_hdr))) { + xfs_fs_repair_cmn_err(CE_WARN, ip->i_mount, + "corrupt inode %Lu " + "(bad attr fork size %Ld).", + (unsigned long long) ip->i_ino, + (long long) size); + XFS_CORRUPTION_ERROR("xfs_iformat(8)", + XFS_ERRLEVEL_LOW, + ip->i_mount, dip); + return XFS_ERROR(EFSCORRUPTED); + } + error = xfs_iformat_local(ip, dip, XFS_ATTR_FORK, size); break; case XFS_DINODE_FMT_EXTENTS: From SRS0+c0a58c6b4215c0095039+1960+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 4 10:48:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04GmaLY017647 for ; Sun, 4 Jan 2009 10:48:36 -0600 X-ASG-Debug-ID: 1231087715-279803aa0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 253175E0EA for ; Sun, 4 Jan 2009 08:48:36 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id J0ksjEDD4CKCQ3SV for ; Sun, 04 Jan 2009 08:48:36 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJW9T-0004nu-PY; Sun, 04 Jan 2009 16:48:35 +0000 Date: Sun, 4 Jan 2009 11:48:35 -0500 From: Christoph Hellwig To: Eric Sandeen Cc: Christoph Hellwig , xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH, RFC] xfs_repair: allow filesystems with a single AG Subject: Re: [PATCH, RFC] xfs_repair: allow filesystems with a single AG Message-ID: <20090104164835.GB16133@infradead.org> References: <20081224231901.GA652@infradead.org> <4953C8B8.4010500@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <4953C8B8.4010500@sandeen.net> User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231087716 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Thu, Dec 25, 2008 at 11:54:00AM -0600, Eric Sandeen wrote: > Christoph Hellwig wrote: > > Currently xfs_repair bails out on a filesystem with just a single AG. > > But that's a perfectly valid configureation, so we should allow it. > > > > Skip the geomery validation because we simply can't do it if we don't > > have a secondary SB, and make sure to take the internal log into account > > when guestimating the first inode cluster. > > > > I'll also cook up a testcase for repair on single AG filesystems. > > While I think we should certainly allow this, what's the worst-case > scenario for a corrupted superblock when we can't validate it and > continue with repair? > > I wonder if something like > > # xfs_repair --allow-single-sb > > should be required, with some man page docs suggesting a run with -n > first etc to be sure that garbled geometry doesn't trash the whole thing...? Maybe. Given that we don't auto fsck anyway it's at least doable. But given that there is no other way to repair a single AG filesystem I'm not sure it helps. But I can cook up a variant that requires an option. In fact existing repair code would allow it (and fail utterly) when a flag is set - there's just no way to set that flag on the command line.. From SRS0+c0a58c6b4215c0095039+1960+infradead.org+hch@bombadil.srs.infradead.org Sun Jan 4 11:42:56 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04HgtCE032384 for ; Sun, 4 Jan 2009 11:42:56 -0600 X-ASG-Debug-ID: 1231090974-156d03ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 2CFEE17A4B92 for ; Sun, 4 Jan 2009 09:42:54 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id elAIFpqEDkTXzB1Y for ; Sun, 04 Jan 2009 09:42:54 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJWzX-0002dY-VX for xfs@oss.sgi.com; Sun, 04 Jan 2009 17:42:23 +0000 Date: Sun, 4 Jan 2009 12:42:23 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] xfstests: add test 200, exercise read-only block devices and mounts Subject: [PATCH] xfstests: add test 200, exercise read-only block devices and mounts Message-ID: <20090104174223.GA10050@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231090975 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Make sure we do the right thing with blockdevices with a hard read-only flag. Signed-off-by: Christoph Hellwig Index: xfstests-dev/200 =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/200 2009-01-04 17:39:08.000000000 +0000 @@ -0,0 +1,120 @@ +#! /bin/sh +# FS QA Test No. 200 +# +# Check out various mount/remount/unmount scenarious on a read-only blockdev. +# +#----------------------------------------------------------------------- +# Copyright (c) 2009 Christoph Hellwig. +#----------------------------------------------------------------------- +# +# creator +owner=hch@lst.de + +seq=`basename $0` +echo "QA output created by $seq" + +here=`pwd` +tmp=/tmp/$$ +status=1 # failure is the default! + +_filter_scratch() +{ + sed -e "s,$SCRATCH_DEV,SCRATCH_DEV,g" | \ + sed -e "s,$SCRATCH_MNT,SCRATCH_MNT,g" +} + +_cleanup() +{ + cd / + blockdev --setrw $SCRATCH_DEV +} +trap "_cleanup; exit \$status" 0 1 2 3 15 + +# get standard environment, filters and checks +. ./common.rc +. ./common.filter + +# real QA test starts here +_supported_fs xfs +_supported_os Linux + +_require_scratch + +_scratch_mkfs_xfs >/dev/null 2>&1 + +# +# Mark the device read-only +# +echo "setting device read-only" +blockdev --setro $SCRATCH_DEV + +# +# Mount it, and make sure we can't write to it, and we can unmount it again +# +echo "mounting read-only block device:" +_scratch_mount 2>&1 | _filter_scratch + +echo "touching file on read-only filesystem (should fail)" +touch $SCRATCH_MNT/foo 2>&1 | _filter_scratch + +# +# Apparently this used to be broken at some point: +# http://oss.sgi.com/bugzilla/show_bug.cgi?id=807 +# +echo "unmounting read-only filesystem" +umount $SCRATCH_MNT 2>&1 | _filter_scratch + +echo "setting device read-write" +blockdev --setrw $SCRATCH_DEV + +echo "mounting read-write block device:" +_scratch_mount 2>&1 | _filter_scratch + +echo "touch files" +touch $SCRATCH_MNT/{0,1,2,3,4,5,6,7,8,9}{0,1,2,3,4,5,6,7,8,9} + +echo "going down:" +src/godown -f $SCRATCH_MNT + +echo "unmounting shutdown filesystem:" +umount $SCRATCH_MNT 2>&1 | _filter_scratch + +echo "setting device read-only" +blockdev --setro $SCRATCH_DEV + +# +# Mounting a filesystem that requires log-recovery fails unless +# -o norecovery is used. +# +echo "mounting filesystem that needs recovery on a read-only device:" +_scratch_mount 2>&1 | _filter_scratch + +echo "unmounting read-only filesystem" +umount $SCRATCH_MNT 2>&1 | _filter_scratch + +# +# This is the way out if the underlying device really is read-only. +# Doesn't mean it's a good idea in practive, more a last resort +# data recovery hack. +# +echo "mounting filesystem with -o norecovery on a read-only device:" +_scratch_mount -o norecovery 2>&1 | _filter_scratch + +echo "unmounting read-only filesystem" +umount $SCRATCH_MNT 2>&1 | _filter_scratch + +echo "setting device read-write" +blockdev --setrw $SCRATCH_DEV + +# +# But log recovery is performed when mount with -o ro as long as +# the underlying device is not write protected. +# +echo "mounting filesystem that needs recovery with -o ro:" +_scratch_mount -o ro 2>&1 | _filter_scratch + + +# success, all done +echo "*** done" +rm -f $seq.full +status=0 Index: xfstests-dev/200.out =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ xfstests-dev/200.out 2009-01-04 17:39:38.000000000 +0000 @@ -0,0 +1,24 @@ +QA output created by 200 +setting device read-only +mounting read-only block device: +mount: block device SCRATCH_DEV is write-protected, mounting read-only +touching file on read-only filesystem (should fail) +touch: cannot touch `SCRATCH_MNT/foo': Read-only file system +unmounting read-only filesystem +setting device read-write +mounting read-write block device: +touch files +going down: +unmounting shutdown filesystem: +setting device read-only +mounting filesystem that needs recovery on a read-only device: +mount: block device SCRATCH_DEV is write-protected, mounting read-only +mount: cannot mount block device SCRATCH_DEV read-only +unmounting read-only filesystem +umount: SCRATCH_MNT: not mounted +mounting filesystem with -o norecovery on a read-only device: +mount: block device SCRATCH_DEV is write-protected, mounting read-only +unmounting read-only filesystem +setting device read-write +mounting filesystem that needs recovery with -o ro: +*** done Index: xfstests-dev/group =================================================================== --- xfstests-dev.orig/group 2009-01-04 17:14:27.000000000 +0000 +++ xfstests-dev/group 2009-01-04 17:14:36.000000000 +0000 @@ -301,3 +301,4 @@ 196 quota auto 197 dir auto 199 mount auto +200 mount auto From agruen@suse.de Sun Jan 4 12:20:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-4.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04IKqNf008744 for ; Sun, 4 Jan 2009 12:20:54 -0600 X-ASG-Debug-ID: 1231093251-5e5b01c10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 047B417A4BC0 for ; Sun, 4 Jan 2009 10:20:51 -0800 (PST) Received: from mx1.suse.de (mx1.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id yffqMtcXAQFLTe8K for ; Sun, 04 Jan 2009 10:20:51 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation 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 4AFE2458C0; Sun, 4 Jan 2009 19:20:50 +0100 (CET) From: Andreas Gruenbacher Organization: SUSE Labs / Novell To: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [patch 0/4] acl patches from Fedora / Red Hat rpm Subject: Re: [patch 0/4] acl patches from Fedora / Red Hat rpm Date: Sun, 4 Jan 2009 19:20:48 +0100 User-Agent: KMail/1.9.9 Cc: Eric Sandeen References: <20081230181413.518122170@sandeen.net> In-Reply-To: <20081230181413.518122170@sandeen.net> MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline Message-Id: <200901041920.48981.agruen@suse.de> X-Barracuda-Connect: mx1.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231093252 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Tuesday, 30 December 2008 19:14:13 Eric Sandeen wrote: > Here are a few patches (modulo distro-specific changes) > from the Fedora / Red Hat acl package. All four patches look good. Thanks for digging them out! Andreas From nashwa1egypt@gmail.com Sun Jan 4 16:09:36 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.3 required=5.0 tests=BAYES_50,HTML_MESSAGE, MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04M9apN031318 for ; Sun, 4 Jan 2009 16:09:36 -0600 X-ASG-Debug-ID: 1231106969-26ce02580000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from po-out-1718.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3F21917A4F6C for ; Sun, 4 Jan 2009 14:09:29 -0800 (PST) Received: from po-out-1718.google.com (po-out-1718.google.com [72.14.252.158]) by cuda.sgi.com with ESMTP id LJAE5U0qH3JVpteY for ; Sun, 04 Jan 2009 14:09:29 -0800 (PST) Received: by po-out-1718.google.com with SMTP id c31so15513444poi.0 for ; Sun, 04 Jan 2009 14:09:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:subject :in-reply-to:mime-version:content-type:references; bh=9vP7BCeql7yO6GSpAoyFMocEqMUJU5ND41MEXUrWwl8=; b=AvphETlAsvAj9xCjIALu8IwWWZvOCHeOARRar6dCFw3fopofwx6L/01RPkgHHq2Hm2 OMIdLOe8n45vfT6Op/Xg+bB+Bd7dg/goVy5OgDFo95qKued63CmRYt6ovThWLeeAx4ZH qADXMMJJbO5OoKNgjlk5danGTDxEYU1S/k0e8= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:subject:in-reply-to:mime-version:content-type :references; b=WvY93TTioinrotncHIGou7bXWiErkD1Iq39cf062v5sgbXWy+gW1VAuwRcsNdv+9d1 Aqoov3FXBzUmYiFQDjCpxRVS0mNo30dqtBgrKkSeFZfxnOV+pTHgryIQmdVzfwaErIqm Bi4E75vQSCA5uIuIpoPzsKkYJ2lIy5Syf3RmU= Received: by 10.114.108.15 with SMTP id g15mr13350841wac.202.1231106966239; Sun, 04 Jan 2009 14:09:26 -0800 (PST) Received: by 10.115.33.14 with HTTP; Sun, 4 Jan 2009 14:09:25 -0800 (PST) Message-ID: Date: Sun, 4 Jan 2009 14:09:25 -0800 From: nashwa1egypt X-ASG-Orig-Subj: =?WINDOWS-1256?B?48zj5trJINrR5tYg48rj7dLJIMzPx8fHx8cg4+Qg1N7e?= =?WINDOWS-1256?B?IObd4eEg5sfRx9bsIObjzeHHyiDh4cftzMfRIObH4cjt2g==?= =?WINDOWS-1256?B?IMjk2cfjIMfhyuPm7eEgx+Ha3sfR7CDa4ewgMjDT5MkgyA==?= =?WINDOWS-1256?B?x9Pax9Eg4ccgyt7H0eQg5uPmx97aIOTHz9HJIN3sIOPV0Q==?= Subject: =?WINDOWS-1256?B?48zj5trJINrR5tYg48rj7dLJIMzPx8fHx8cg4+Qg1N7e?= =?WINDOWS-1256?B?IObd4eEg5sfRx9bsIObjzeHHyiDh4cftzMfRIObH4cjt2g==?= =?WINDOWS-1256?B?IMjk2cfjIMfhyuPm7eEgx+Ha3sfR7CDa4ewgMjDT5MkgyA==?= =?WINDOWS-1256?B?x9Pax9Eg4ccgyt7H0eQg5uPmx97aIOTHz9HJIN3sIOPV0Q==?= In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_144361_12721996.1231106966208" References: X-Barracuda-Connect: po-out-1718.google.com[72.14.252.158] X-Barracuda-Start-Time: 1231106973 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0005 1.0000 -2.0177 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -0.43 X-Barracuda-Spam-Status: No, SCORE=-0.43 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE, MISSING_HEADERS, TO_CC_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14431 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 1.58 MISSING_HEADERS Missing To: header 0.00 HTML_MESSAGE BODY: HTML included in message 0.00 TO_CC_NONE No To: or Cc: header To: undisclosed-recipients:; ------=_Part_144361_12721996.1231106966208 Content-Type: text/plain; charset=WINDOWS-1256 Content-Transfer-Encoding: base64 Content-Disposition: inline KsjT4yDH4eHlIMfh0c3j5CDH4dHN7eMqCiAqzMfR7CDH4cfK3cfeIOHK5t7t2iDI0crm3+bhIMra x+bkIMjt5CDj09/kIOPV0ewg5sfNz+wg1NHfx8ogx+HK4+bt4QrH4drex9HsIOHK7dPt7dEgx+HO z+PHyiDH4drex9HtySoKKuba4ewgx+HTx8/JIMfh49TK0e3t5CDj5CDj1dEgx9HTx+Egx+HI7cfk x8ogx+Hjx+HtySDh4c/O4SDH4dHT4+wg0+bHwSDe2MfaCtrH4yDH5iDOx9Ug5t/Q4d8gx+HjyOHb ICoKKsfh48rm3dEgzcfh7ccg4eHU0cfBICjtyuMgz93aIOPkIDEwJePkIMvj5CDH4ebNz8kg5sfh yMfe7CDtyuMgz93aySDj5CDU0d/JCsfhyuPm7eEgyM7hx+Egx9PI5tog4eHIx8baICDm7crjIMre 0+3Y5SDH4e3f4yDh48/lIMrV4SDH4ewgMjDT5Mkp5t3sIM3H4QrH4drj4SDOx9HMIOPV0SDtyuMg x83Wx9Eg1OXHz8kg4cfLyMfKIMfhz87hIObj5sveySDj5CDH4d7k1eHtySDH4ePV0e3JKgoq7dHM 7CDH0dPH4SDH4cjtx+THyiDH4c3Tx8jtySDj5CDH4c/O4SDm2s/PIMfh0+Tmx8og4eHK3tPt2CDm x+HjyOHbIMfh48rHzQrm4+bH1d3HyiDH4ebNz8kgx+Hj2OHmyOUgx+HsIOXQxyDH4cft4+3hICoK Km1vbmExZWd5cHRAZ21haWwuY29tKiA8bW9uYTFlZ3lwdEBnbWFpbC5jb20+Ciog5trh7CDH4dPH z8kgx+HIx8ba7eQg4eHmzc/HyiDH4ePTzOHJIMfmIMfhyuwg4eXHIMfj38fk7ckgx+HK08zt4SDH 0dPH4QrH4cjtx+THyiDfx+PhySDm7d3W4SDj2iDR0+bjx8og5eTP0+3JIObV5tEg4eHa3sfRIObH 4ebNz8kqCirm7crjIMfhyO3aIMjP3dogMTAl5sfhyMfe7CDI1O3fIOPeyObhIMfhz93aIMjO4cfh IMfTyObaIOPkINTR38kgx+HK4+bt4SoKKubt0czsIMfhx9HTx+Eg2uHsIOXQxyDH4cft4+3hICoK Km1vaGFtZWRtb2hzZW4xZWd5cHRAZ21haWwuY29tKiA8bW9oYW1lZG1vaHNlbjFlZ3lwdEBnbWFp bC5jb20+CgoKCirl5Mcg7ebMzyDU3t4g4d7YySDm0ebaySDIx+Hj2sfP7CDmx+HKzOPaIObd7dXh IObM09Egx+HT5u3TIObH4eTS5ckg5tLH7c8K5sfh1NHm3iDmx+HayObRIObjz+3kyuwg5uPk5ccg yMfh1ebRICoKCiAqx+Ha0dYxOioqICAg4c/mx9rtIMfh093RINTeySAg3dHVySDIx+Hj2sfP7SDI w9He7SDH4ePmx97aIOPTx83K5ccgMTA1IOMyCsjDyNHHzCDI7crU5iDD4+3R7d/H5CDT7crtIMfh 49rHz+0gytTY7cgg0+bI0SDh5t/TIJYgx9PK4cfjIN3m0e0gliDa3s8gyO3aCuTlx8btIObhxyDK 5szPINrh7eXHIMPtySDD3tPH2CDm48/d5togx8rNx88gx+Hj4cffIObj1dHm3cfKIMfh49HH3d4g yMfhz+bRCsfh08fP0yDd7SDI0cwxMSDP5tEgyMfhw9PH5NPt0SDj5CA1MiDI0cwg5uPTzM8g5uPP 0dPJIObj5uEgytHd7eXtIObKzMfR7QrIx+He0cgg4+Qg38fR3ebRIObkx8/tIMfh1e3PIMfhzM/t zyDm5MfP7SDmx8/tIM/M4ckg09rRIMfh48rRMjMwMCDM5O3lIOPV0ewKyMrT5e3hx8ogIMfh09rR INTH4+Egx8rNx88gx+Hj4cffIObH4ePRx93eIObH4cPTx+TT7dEqCgoqX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXyoKCiogKgoKKiDH4drR1jI6ICAg4eHT3+Qgx+Hd5tHsIMjj5t7a IOPK4+3SIMjH4ePax8/sIMjH4d7RyCDj5CDjzdjJIMfh48rR5iDj5NjeyQrRx97tySAgKirU3skg ytTY7cgg0+bI0SDh5t/TKiog49PHzcrlxyAxNDAg48rRIMrY4SDa4ewg4+TH2dEg2Mjt2u3JIOPd yubNyQouICDKyt/m5CDj5CDNzNHJIOTm4yDfyO3RySA1IOPK0SDd7CA2IOPK0SDmzczRySDk5uMg x9Xb0SDm0dPI1OQg5tXH4ckgyubS7doK5s3jx+Mg5sfNzyDm49jIziDm7ePf5CDH1sfdySDN48fj INXb7dEgLuPY4ebIIDM5NSDH4d0gzOTtySDj1dHsICjN5sfh7CA3MQrH4d0gz+bhx9Egx+PR7d/s ICkg4+Pf5CDH4cjt2iDIyNrWIN7Y2iDH4cfLx8sg5uPf7d3HyiDH4eXmx8Eg5u3mzM8g4eXHINXm 0SoKCiogKgoKKtrR1jM6KiogICDU3skgMTY14yDIx+Hk0uXJIMfhzM/tz8kgKgoKKuHhyO3aINrh 7CDH4ePNx9HJINrIx9HJINrkIDPk5uMg5jPR08jU5CDmMs3jx+Mg5uPYyM4g5sjlxyDf5dHIx8Eg 5trPx8/m1MjfyQrj7cflIObHyObHyCDmMuPV2s8gztTIIObY3uMgx+Hm4+3Kx+Egx9Pmz9vt0SDj zNHmzckgx+HT2tEg49vR7CDMz8cg4eHI7dog2uHsCjM0MMfh3SDM5O3lIOPV0ewgKgoKKtrR1jQ6 KiogICDU3skgz+3h5t/TIDE1MOMgzuHdIM3P7d7JIMjP0SDIx+Hk0uXJIDLM09Egx+HT5u3TKgoK KuHhyO3aINTeySDRx8baySDa4ewgx+HT3+Qgx+Hd5tHsIMjN0e3JIMjH4c/m0SDH4c7H49Mg5u3m zM8g49XazyDH4cjRzCDa4ewK1N7K7eQg5uXmINrU0ckgx8/mx9EgytTY7cgg0+bI0SDh5t/TIM/t 3+bRx8og0cfG2skg5uPPzuEg3cfO0SDIx+HRzsfjIObtzM8K48fK5tEg4eHj7cflIObO0sfkx8og 2uHsINTH0dogKiog48rd0dog4+Qg1MfR2iDH4c7j0+3kIMjM5sfRIMfh49rlzyDH4cfS5dHsCtjh x8baIMfhx9Ll0SDH4dTR7d0gytTY7cgg0cfG2iDm0cfe7CDm5ewgM9vR3SDk5uMg5jLN48fjIMjH 4dHOx+Mgx+HTx97YCubj2MjOIMjH4dHOx+Mgx+HPx8bR7CDm0dPI1OQz3tjaIMjP7d/m0cfKINHH xtrlICAqCgoqICoKCiogKgoKKtrR1jU6KiogICDU3skg5MfV7ckgx+PH4yDI5sfIySDkx8/sIMfh 1OPTIObd5M/eIMfh0+HH4yAxNTDjICoKCirH4d3t5iDM09Egx+HT5u3TIObd5M/eIMfh0+HH4yDI 1MfR2iDd4dPY7eQgz+bRIM7H49Mg5sfh2t7H0TXHz+bH0ebH0dbsICDayMfRyQra5CAz5ObjIOYq KiDj08fNySDH4dvR3SAxNiDjIDIgliAxNCDjMiCWIDIwIOMyICDmIOPTx83JIMfh0e3TyNTkIMfh w8zjx+HtyQo0MCDjMiAg5iDj08fNySDH4c3jx+Mgx+HfyO3RIDYg4zIgICDmx+HV2+3RIDIg4zIg ICDH4ePYyM4gIDcg4zIgIOPTx83JCsfh2NHeySDH4ePmzObPySDI7eQgx+Hb0d3K7eQgx+HPx87h 7crt5CDmx+HN48fj7eQg5sfh49jIziDK08fm7SA2IOMyICoqKgoKKuPTx83JIMfM48fh7ckg4eHI 4d/m5MkgMjAg4zIgIMrU2O3IINPmyNEg4ebf0yDT7dHH4+3fINrPxyAy29HdySDk5uMgyMfR3+3l Cuba3s/lxyDVzckgyube7dog4+Qgx+Hjx+HfIMfhx9Xh7CDh4dTeySAg5sfh09rRIMfh49jh5sgg 4eHI7dogMjI1MMzk7eUg49XR7Arh4ePK0SAqCgoqICoq2tHWNjoqKiAgINTeySDkx9XtySDI3e3h xyDIx+HKzOPaIMfhzsfj0yDH4c3P7d7JIMfh3e3mINrh7CDNz+3eySAg5uPkCszl5SDHztHsINrh 7CDH4ePa5c8gx+Hax+HsIOHh2uHm4yDH4cfPx9HtySAqCgoq4eHI7dog1N7JIDIwMOMgyMfhyszj 2iDH4c7H49Mgx+HN7CDH4crH4cog2sjH0eUg2uQgM+Tm4yDmNNHTyNTkIOYyzePH4wrm49jIziDm yOHf5uTlIObl7CDOx+HVySDH2uPH4SDH4eTMx9HJIObH4dPIx9/JIObH4d/l0cjHwSDmx+HP5cfk x8og7eTe1eXHCsfh0+3Rx+Pt3yDH4dPa0SDH4ePY4ebIIDYwMMfh3SDM5O3lIOPV0ewgKgoKKtrR 1jc6KiogICDU3skgMTM14yDIx+Tm0cfjxyDa4ewgzc/t3skg38jt0ckgyMfhyszj2iDH4cvH4csg 4+be2iDjyuPt0grMz8fHx8cqCgoq4eHI7dog1N7JIMjH09/H5CDH4dTIx8ggx+HH08rL48fR7CDI 4+be2iDj4+3SINrIx9HlINrkIDPk5uMg5jLR08jU5CDmMs3jx+MK5uPYyM4g49PHzckg1cfd7ckg yM/m5CDj5Mfm0SDIx+HP5tEgx+HRx8jaIObH4drex9EgM8fP5sfRIObH0dbsIObI5ccg28fSCtjI 7drsIMzj7dogx+Hb0d0g5sfhzePH48fKIObH4ePYyM4gytjhINrh7CDH4dTH0dog5sfhzc/t3skg 5u3mzM8gx+HV5tEKx+HOx9XJIMjH4dTeySDmx+Hd7eYgx+PHIObV3SDH4cfLx8sqCgoqyOXHINvR 3ckgKirb0d3JIOTm4yDO1Mggx9HmIN3m0SDd5tHM7eUg5sjlxyDT0e3RIDE3MNPjIOYg29HdySDI 5cfaz88gMiDT0e3RCjEyMCDT4yDmz+bhx8ggyOHH38fRIM7UyCDH0eYgIObK0cjt0skgyuHt3dLt 5uQg5iDb0d3JIOPa7dTJIMjlxyDH5MrR7eUKIN/H5MjlIDIg5t/H5MjlIDMg5t3myu3lIObj38rI ySAg5srRyO3SySDmINXH4ebkIN/H4+EgyOUg38fkyMkgMwrm38fkyMkgMiDmMt/R0+wg5grT3dHJ IN/H4+HJIM7UyCDH0eYg5sjlxyDP5uHHyCDd1u3HyiDmyObd7eUgIObK0cjt0skgOCDf0cfT7CDm IOPYyM4g38fj4SDO1MgK3tTRySDH0eYg5iDM0sfjySDO1Mgg38jt0ckg5iDL4cfLIOPRx8rIINPm 08ogysff7CDmINPMx88gyN/hIMfh29HdIObH4dXH4ebkCubH4dPd0ckg5iDTysfG0SDjx9HP7eTs INPKx+3hIMfj0e3fx+TsINrh7CDf4SDUyMffIObI4d/m5Mkg5iDaz88xIMrh7d3S7ebkICAyNQrI 5tXJIMrm1O3IxyDm2s/PMSDK4e3d0u3m5CAyMSDI5tXJIOTH1O3m5MfhIObaz88xINHt0+3d0SDH 08rRxyDIx+HYyN4gMTgw0+MK48rN0d8g5iDaz88gMSAgyt/t7d0g1MfRyCDMz+3PIObaz88gMSDK 3+3t3SDfx9Ht0SDMz+3PIOYgz93H7ckgx+bh7ePI3yDS7coK5uPR5s3JIMrm1O3IxyDIx+HR7ePm yiDm49/k08kg3+XRyMfG7ckqKiDmKiog29PH4ckg3ebhIMfK5uPHyu3fIMftz+3H4QrSx+Tm0+wg MTggyNHkx+PMIOYgy+HHzMkgyubU7cjHIDE0IN7P4yDmIMjmyszH0iDt5uTt3dHTx+EgNSDU2uHJ IOYgyubTysfRCt/l0cjsIObU3cfYIN3tz+3mIOYg48ft39Hm5u3dIOYyINPOx+Qg28fSIMfm4ePI 7d8g5iDt5uTd0dPH4SDmIOTM3SDfx+PhCsjH4dvR3SDmIMfh093RySDmx+HVx+Hm5CoKCira0dY4 OioqICAg1N7JIOHe2MkgOTDjIMjH4d7H5dHJIMfhzM/tz8kgytXhzSDj38rIINrtx8/JIMfmINPf 5CDh2OHIySDH4ePa5c8KyMzmx9HlKgoKKtTeySDK1eHNIOHM4+3aIMfhx9vRx9Yg5uHhx9PKy+PH 0SDH7dbHIOPK1NjI5SDIx93W4SDj5t7aIMjH4d7Yx+PtySDIx+HKzOPaCsjH4d7RyCDj5CDj2uXP IMfh1eTH2sfKIMfh48rY5tHJIMfh09rRIMfh49jh5sgg49vR7CDMz8fHx8fHx8fHx8cg3d7YIDEy MMfh3QrM5O3lIOPV0ewqCgoq2tHWOToqKiAgIN3R1ckg5MfP0ckg1N7JIMjH4drI5tEgyMfhz+bR IMfhysfk7CDH48fjINPkytHH4SDH4drI5tEqCgoq4eHI7dog1N7JIMjH4drI5tEg49PHzcrlxyA2 M+Mg2sjH0eUg2uQgMuTm4yDm1cfh5SDj2OHmyCA2Ncfh3SDM5O3lIOPV0ewK5tTl0ewgNzAgzOTt 5SDj1dHsIObk3uEgx+Hj4d/tySDjyMfU0ckgx+Hjx+HfICoKCira0dYxMDoqKiDU3skgNjPjIMjH 4drd1CDmx+HHzOXSySDIx+HU0ebeKgoKKuHhyO3aINTeySDP5tEgx9HW7CDj08fNySA2M+Mg2sjH 0eUg2uQgMuTm4yDm1cfh5SDm49jIziDmzePH4yDjytTYyOUg5sjlxwrM4+3aIMfhx8zl0skg5sfh 2t3UIMfh09rRIDEyMMfh3SDM5O3lIOPV0ewgKgoKKl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXyoKCira0dYxMToqKiAg48zj5trJINTe3iDjyu3j0skgzM/HIMjH4dTtziDSx+3P IOPTx83HyiDjzsrh3ckqCgoqMV8qKiDU3skgz+bRIMfR1uwg49HK3dog49PHzckgMTAw4yDayMfR ySDa5CAy5ObjICDfyO3RyeYy0dPI1OQg5s3jx+Mg5uPYyM4K5sjh3+bkICDK1eHNIMrMx9HsIMfm INPf5Owgx+Ygx8/H0ewgx+PH4yDT5MrRIM3t5uwgzM/Hx8cg5sft1scg2uHsIM3P7d7JCt/I7dHJ IM7H4dXlIOPaIMfhyOTfIOPY4ebIINPa0SDhxyDt3sfR5CAgMTE1x+HdIMzk7eUg49XR7CDd3tgq CgoqMl8qKiDU3skgNzDjIMrI2iDH4czlx9IgyMfh1O3OINLH7c8gx9PKy+PH0ewgz+bRMyDj08fN ySA3MOMgytTY7cggx+HM5cfSCuPY4ebIIDg1x+HdIMzk7eUg49XR7CDm2uHt5ccgNjQwzOTt5SDU 5dHsIOHjz+UgMjDT5MkgKgoKKjNfKiog1N7JIDE4NeMgyMfh1O3OINLH7c8gyMfhzewgx+HH5uEg x+HjzMfm0ckgx+HLx+TtySDa48fRySDH5cfh7CAg2sjH0eUK2uQgM+Tm4yDm1cfh5SDm29HdySDY 2sfjICDmMs3jx+Mg5uPYyM4g5sjh3+bkIObt5szPIMft1scg1N7K7eQg5N3TCsfh49PHzckgIOPj 3+QK1uPl4yDa4ewgyNrWICoKCira0dYxMjoqKiAgINTeySAxMDDjINrh7CDUx9HaIN3t1eEgx+HR xu3T7CDK1NjtyCDP7eHm39MqCgoq4eHI7dog1N7JIN/h5ccg2uHsIN3t1eEgx+HRxu3T7CDVx93s IDg14yDayMfR5SDa5CAy5ObjIOYz0dPI1OQg5s3jx+Mg5uPYyM4KyMfhz9Qg5sfhyuHt3ebkIObH 4crh7d3S7ebkIMjH4c/m0SDH4dHHyNog5sjlxyDP7d/m0cfKIObUyMfI7d8gx+Hm4+3Kx+EK2uPH 0ckg38jt0ckg5uPPzuEg1O3fINPhx+HjIObH09rJICDH4dPa0SDRx8baIDE0Ncfh3SDM5O3lIOPV 0ewgKgoKKtrR1jEzOioqINTeySDI48/t5MrsICDH4ePRzeHJIMfh08fP08kgIMfM48fh7CDH4d7t 4+UgNTIxx+HdIMzk7eUg49XR7ArmODAwzOTt5SDj1dHsICDm0OHfINrh7CAxMNPk5sfKIMrj4yDP 3dogMjnH4d0g5jY1MMzk7eUg5sfUytHH3yDH4eTHz+wKNDAwMMfhx90g5tTl0ewgMTMwNczk7eUg 49XR7CDmyuTe1SDI2s8gx9HHyNog0+Tmx8ogx+HsIMfh7CAxMjEwzOTt5SDj1dHsICDj2OHmyArH 5t3RIDQ1x+HdIMzk7eUg49XR7CAqCgoq2tHWMTQ6KiogINTH4e3lIN7jySDj5CDH4dHm2skg5sfh 5c/mwSDIx+HTx83hIMfh1OPH4e0gx+Hf7eHmIDQ1IOPK1NjIINPmyNEK4ebf0yAgyMfh3dHUIMvH 5O0g1d0gyM3RIMje0e3JIMfh1Mfh7eUgMTIw4yDmMs3P7d7lIM7h3ewg5sfjx+PtIOHlIOPPzuEg zsfVCt3t5ccgMiDN48fjINPIx83lIObj5uEg5szH49og5t/H3crR7ccg5uTZ7d3lIMzPxyDK5szP IMfh1ebRIMfhzsfVySDIx+HUx+HtyQoqCgoqx+HT2tEgx+Hj2OHmyCA0NTDH4d0gzOTt5SDj1dHs ICoKCirH5Mrl0iDH4d3R1ckg48zj5trJIMfRx9bsIOPK4+3SySDT2tEgx+HjytEg7cjPxyDj5CA2 NTDMIM3K7CAzMjAwzCDIx+Hax9TRCuPkINHj1sfkIObH4d7H5dHlIMfhzM/tz8kg5sfh1NHm3iDm 1MjRxyDmyOTlxyDmx9Pjx9rt4e3JIObIz9EqCgoKCirH4drR1jE6KiogICDe2NrJIMfR1iDI09rR IOPb0ewg09rRIMfh48rRIDY1MMzk7eUg49XR7CDd3tggKgoKKsjH4drH1NEg4+Qg0ePWx+Qg48/t 5Mkgx+HR5tbJICDH4c7W0cfBIMjM5sfRIOPP7eTJIMfh7cfT4+3kIOPTx83JIDIzMuMK487V5eUg 09/kINrHxuHsIDTHz+bH0SDa7CDUx9HaINHG7dPsIDEy4yDm48cg7ePt0uXHIMft1scg4e3TIOHl xyDjz+Ug0uPk7eUK4eHI5MfBIObmyOXHIOPRx93eIN/m48jm5M8g5s7H4dXlIMfhy+PkIObH5MrZ 0SDH7dbHIMfkIOXkx98gyt3H5tYg3ewgx+HT2tEgKgoKKsfh2tHWMjoqKiAgIN3R1ckg4dnR5t0g 5czRySDe2NrJIMfR1iDd1sfBIOHhyO3aIMjjz+3kySDH4d7k2NHJINTR3trh7Arkx9Xtyu3kICDj 08fNySAxNzDjIMzH5dLJIOHhyOTHwSDfx+PhySDH4ePRx93eIMfh4+3H5SDH4d/l0cjHwSDm09rR IMfh48rRCjI4MMzk7eUg49XR7CoKCirH4drR1jM6KiogICDh0cfbyOwgx+HK4+3SIN7Y2skgx9HW INrh7CDH4dTH0dogx+HRxu3T7CDIx+HKzOPaIMfhzsfj0yoKCirh4cjt2iDH0dYgyMfh3sfl0eUg x+HMz+3PySDT3+Qg2sfG4ewg4+TY3skgx+Hj08rL49Ht5CDa4ewgx+HUx9HaIMfh0cbt0+wKx+Hh 7CDa4ewg5MfV7crlIM3sIMfh49XRx+btySDH4ePK3dHaIOPkINTH0dogx+HK09rt5CDj5t7aINHH 3uwgzM/Hx8fHx8cK49PHzckgMjgw4yDmyuMgx9PKztHHzCDRztXJIOPIx+TsIMjP0ebjIObH0dbs IOYzx8/mx9Eg09rRIMfh49jh5sgg4eHjytEKMzIwMMzk7eUg49XR7CoKCirH4drR1iA0OiAgKirH 0dYgyMfh1NHm3iDjyuPt0skgzM/Hx8fHIMfjx+Mg48/t5MrsICoqKgoKKuHhyO3aIN7Y2skgx9HW IOPTx83K5ccgIDg2NOMgx+PH4yDjz+3kyuwgze3LIMfh3e3mIMfh0cfG2iDmx+Hlz+bBIMjH4ePk 2N7JCsfhzsfj08kgx9HWINrjx9HHyiDIz9Hm4yDmx9HW7CDmM8fP5sfRIOPK39HRySAg49jh5sgg NTAwx+HdIMzk7eUg49XR7CAqCgoqx+Ha0dY1OioqICAgICDH0dYg4d7YySDa4ewgx9/I0SDmx9Tl 0SDj7c/H5CDI1MjRxyDkx9XtySDIzdHsINvRyOwg5trh7ArH4ePK0eYqCgoq4eHI7dog3tjaySDH 0dYgyNTI0ccgKirI4+be2iDH38vRIOPkIOPjysfSIMrV4c0g4d/H3ckgx+Hj1MfR7dogx+HH08rL 48fR7ckK0MfKINHIze3JINrH4e3JIMzPx8fHx8fHxyDmyt7aIObT2CAgx9/I0SDKzMfRIN7Y2iDb 7cfRIMfh0+3H0cfKIObK2OEg2uHsCsfh4+3Px+Qg5uPK0eYgx+HH5N3H3iDjyMfU0ckgIOPTx83K 5ccgNTcw4yDmx+HT2tEgx+Hj2OHmyCDh4ePK0SAzMDAwzOTt5Qrj1dHsICoKCirH4drR1jY6Kiog ICDH0dYg48rj7dLlICAzMTXjINrh7CDH4dTH0dogx+HRxu3T7CDI48/t5MkgyM/RKgoKKuPP7eTJ IMjP0SDh5ccg49PK3sjhIMjH5dEg5sfhx9HWIOPj7dLJINTH0dog0cbt0+wgx9HI2iDNx9HHyiDm 4+Qgx+HO4d0K4+TY3skgztbRx8Eg5sfT2skgy8fk7CDe2NrJIOPkIMfh5MfV7ckg7d3V4eXjxyDj 49EuIOPN3ebRySDmzMfl0skg4eHI5MfBCt/H4+HJIMfh49HH3d4gKgoKKsjH4dHO1ckgyM/R5uMg 5sfR1uwg5svhx8sg48rf0dEgysfR7c4gx+HRztXJNi8yMDA4IObj08fNySDH4cfR1uwgMTgw4wrm x+Hjyt/R0TE4Ni414yDj5eHJINPkySDI5MfBIObT5MkgytTY7cggx+Hj2OHmyCAxMjDH4d0gzOTt 5SDj1dHsIN/H1CDm2uHt5ccKNTfH4d0gzOTt5SDj1dHsICDh4czlx9Igx8jKz8fBxyDj5CDT5OUg MjAxMCDH4ewg0+TlIDIwMTYqKiAgKiogICAqKiAqKioKCiogKgoKKsfh2tHWNzoqKiAgICoqw9HW IMjH4ePRzCDK1eHNIOHF3sfjySDjzsjSIMfmIObNz8fKINPf5O3JIMjT2tEg4d7YySoqKgoKKt7Y 2skgw9HWIMjH4ePRzCDj08fNySAxNzcg48rRINrh7CDUx9HaINHG7dPsICDK1eHNIOHI5MfBIOPO yNIg5ubNz8fKINPf5O3JKgoKKsfh2tHWODoqKiAqKiAg4cfVzcfIIMfh49TH0e3aIMfhyszH0e3J ICDH5Mrl0iDH4d3R1ckg09rRIMfh48rRODAwKioqCgoqzCDH0dYyMzLjIMjH4cfT48fa7eHtySAq Cgoq4eHI7dogx9HWIMrV4c0g4cfex+PJIOPU0ebaIMrMx9HsIMjH4cfT48fa7eHtySAqCgoqICoK Cirmx9HWIMfO0ewg3tjaySDD0dYg49PHzcrlxyAyMzAg48rRIMjH4drR7dTtySDIzObH0SDj08zP IMfh1O3OIM3T5CDK1eHNCuHI5MfBIOPOyNIgIObmzc/HyiDT3+TtySAqCgoqx+Ha0dY5OiAgICAq KsfR1iAxNTDjIMjH4ePkx+3dIMjH4cfT48fa7eHtySoqICoKCirh4cjt2iDH0dYg48jH5OwgyMfh 4+TH7d0g38fj4ckgx+Hj0cfd3iDH0dYgyt7T7eMg09rR5ccgNjDH4d0gzOTt5SDj1dHsIN3e2Arh xyDb7dEqCgoqx+Ha0dYxMDoqKiAgICoqx9HWIMjHzdPkIOPkx9jeIMjI5OXHICoqKgoKKuHhyO3a IMfR1iDIyOTlxyDj08fNyuXHIDQ4MuMgyMfd1uEgx+Hj5MfY3iDT2tEgx+HjytEgNzAwMMwg4eHj ytEqCgoqx+Ha0dYxMToqKiAgICAqKsfR1iDh4cjt2iDa4ewg2NHt3iDH09/kz9HtySDH4dXN0cfm 7CAgz8fO4SDf5uPI5uTPKioqCgoq4eHI7dogx9HWIOPTx83K5ccg3c/H5CDfx+PhINrh7CDY0e3e IMfT3+TP0e3JIMfh1c3Rx+bsIMfh3+3h5jU4ICDPx87hCt/m48jm5M8g49PHzcrlxyDdz8fkIMfs IDQyMDAg48rRIMfh09rRINTH4+Egztggx+Hf5dHIx8Eg5sfh4+3HySoKCirH4dPa0SDH4ePY4ebI IDQ1MMfh3SDM5O3lIOPV0ewgKgoKKiAgICAgICAgICAgICAgICoq3dHVySDh5CDKyt/R0SDH0dYg yszH0e3JyMzmx9Egx+HMx+PaySDH4cfj0e3f7ckqCgoq4eHI7dogx9HWIOHe2MkgyszH0e3JIMjH 4d7H5dHJIMfhzM/tz8kgyMfhyszj2iDH4c7H49MgyMzmx9Egx+HMx+PayQrH4cfj0e3f7ckg48rj 7dLJIMzPxyDj5t7aIMrMx9HsINHHxtog49PHzcrlxyA4MMfh3SDjytEg49HI2iDt5szPIM/Rx9PJ IMzP5uwK4+Qg1NHfySDax+Hj7ckg4cfex+PJIOPm4SDKzMfR7CDH4dPa0SDH4ePY4ebIIOHh48rR INHHxtog3+bk5ccgyszH0ewKNDAwMMzk7eUg49XR7CDd3tgg5u3mzM8g3tjaIMfRx9bsIMfO0ewg yNPm0e3HIObe2NEg5sfhyM3R7eQg5sfhx+PH0cfKCubH4dPa5s/tySoqKgoKKuHRx9vI7CDU3t4g 5t3h4SDex+Tm5CDMz+3PIMjPx+3J4+QgNjAwzOTt5SAgyMfh1NHm3iDm49XRIMfhzM/tz8kg5uPP 7eTJIOTV0Qrmx+HKzOPaIObH4ePe2OMgIObU7dHHyubkIMjj08fNx8og487K4d3JICAqCgoqx+Ha 0dYgMToqKiAgICAqKtTeySDI09rRKirh3tjJKiogNjAwzOTt5SDIx+HU0ebeIMjM5sfRIOTHz+wg 5eHt5sjh7dMqKiAgKioKKioqCgoqx+HU3uUgyMfT38fkIOPIx9HfIMjM5sfRIOTHz+wg5eHt5sjh 7dMgx+HMz+3PIObkx9XtySDMz+3PySDK1NjtyCDT5sjRIOHm39MK4eMgytPK2uPhINrh7CDNz+3e ySDIx+HP5tEgx+HH0dbsIOPTx83JIDEzMOMg2sjH0eUg2uQgMuTm4yDmM9HTyNTkIObN48fjCubj 2MjOIObI4d/m5CDmx+HT2tEgx+Hj2OHmyCDh5CDtyt/R0SDd3tggNjAwzOTt5SDj1dHsICoKCirH 4drR1jI6KiogICAqKtTeySDPx87hIN/m48jm5M8g5sfP7CDH4dHI7dogyMfh1NHm3ioqKgoKKsfh 1N7lIMjj5t7aIOPK4+3SIMjM5sfRIOTHz+wg5eHt5sjh7dMgx+HMz+3PKiogKirO4d0g4cThxMkg x+HU0ebeIObH7dbHCs/HzuEg3+bjyObkzyDj38rj4SDH4c7P48fKIObH4ePRx93eIOPTx83JIDEz NOMg2sjH0eUg2uQgM+Tm4yDmMtHTyNTkIDLmzePH4wrm49jIziDmyOHf5uQgx+HT2tEgMTIwMMzk 7eUg49XR7CAqCgoqx+Ha0dYzOioqICAgKirU3skyMDDjIN7H5ObkIMzP7c8gyNTH0dogx+HL5tHJ IMfh0cbt0+wgyOPV0SDH4czP7c/JKiogKgoKKuHhx+3Mx9Eg1N7lIMja48fRx8ogx+HU0d/JIMfh 09rmz+3JIMjUx9HaIMfhy+bRySDH4ePH2ckg5uXsIO3H4c/m0SDH4crH5OwK49PHzckgMjAw4yDa yMfR5SDa5CAz5ObjIOY00dPI1OQg5jPN48fjIOYyyOHf5uQg5u3mzM8g29HdySDjx9PK0SDm48rU 2MjlCsjH0d/t5SDmyObR0+Ht5CAg5uPY4ebIIN3t5ccgMTc1MMzk7eUg49XR7CAqCgoqx+Ha0dY0 OioqICAqKtTeySDRx8baySAxODDjIMfh3e3mINrh7CDkx8/sIMfh2O3Rx+Qg48jH1NHJIMjj1dEg x+HMz+3PySoqKgoKKuHhx+3Mx9Eg3sfk5uQgzM/tzyDU3skgyNPH5Mog3cfK7ePHIMfh3e3mIMff y9Eg4+Qg0cfG2iDa4ewg5MfP7CDH4djt0cfkCsjUx9HaIMfN488g3cTHzyDH4dHG7dPsIOPTx83J IDE4MOMg5sfh1cfd7CAxNjDjINrIx9HlINrkIDLk5uMg5jPR08jU5CDmzePH4wrm49jIziDK1Njt yCDT7dHH4+3fIN/h5ccg5t/Rx+Tt1CDIx+HT3t0gz8fO4eXHIMjH5Oblx8ogyMfhz+bRIMfh0cfI 2grmx+Ha3sfRNcfP5sfRIObH4dPa0SDH4ePY4ebIIDIyNTDM5O3lIOPV0ewqCgoqx+Ha0dY1Oioq ICAgKirU3skgMjIw4yDI2uPH0cfKIMfh48/d2u3JIMfjx+Mg0+3K7CDTysfR0ioqKgoKKuHhx+3M x9Eg3sfk5uQgzM/tzyDH48fjINPtyuwg08rH0dIgz+bROSDIMuPV2s8g2sjH0eUg2uQgM+Tm4yDm M9HTyNTkIObN48fjCubj2MjOIObI4d/m5CDK1NjtyCDIx9Hf7eUg5tPt0cfj7d8g2uPH0cfKINTt 3yDMz8cgx+Hd7eYg0cfG2iDH4dPa0SDH4ePY4ebICjI1MDDM5O3lIOPV0ewqCgoqx+Ha0dY2Oioq ICAgKirU3skgMTUw4yDO4d0g5MfP7CDH4eTV0SDhzOPt2iDH4cfb0cfWIMjj1dEgx+HMz+3PySoq KgoKKuHhx+3Mx9Eg3sfk5uQgzM/tzyDU3skgyNTH0dog2uHsIN3l48kg38fj4SDP5tEgx+bhIMrV 4c3TINPf5CDj3tEgx8/H0ewK4czj7dogx+HH29HH1iDayMfR5SDa5CAz5ObjIOYy0dPI1OQg5jLN 48fjIObj2MjOIObI4d/m5CDK1NjtyCDT7dHH4+3fIM/lx+THygrNz+3LySDH4dPa0SDH4ePY4ebI MzAwMMzk7eUg49XR7CAqCgoqx+Ha0dY3OioqICAg1N7JIMfPx9HsIMjj5t7aIM3t5uwgzM/HINrh 7CDj7c/H5CDK0e3j3SDa4ewg1MfR2iDH4eTS5ckKx+HRxu3T7CoKCirU3skg3sfk5uQgzM/tzyDI x+HP5tEgx+HKx+TsIN/j3tEg1NHfySDHz8fR7CDj08fNySAxODDjINrIx9HlINrkIDPb0d0K5jPR 08jU5CDmzePH4yDm49jIziDK1NjtyCDI4cfYIOPH0sft3+Yg5s3jx+Mg5uPYyM4g0+3Rx+Pt3yDH 4dPa0SDH4ePY4ebICjM1MDDM5O3lIOPV0ewgKgoKKsfh2tHWODoqKiAgKirU3skgz+bRIMfR1uwy MjDjIMjf4e3lIMfhyOTHyiDK1eHNIOHM4+3aIMfhx9vRx9YqKiAqCgoq4eHH7czH0SDex+Tm5CDM z+3PIMjf4e3lIMfhyOTHyiDH0dbsIOPRyt3aIMjjz87hIM7H1SDayMfR5SDa5CA129HdIOYz0dPI 1OQK5jLN48fjIObj2MjOIObI4d/m5CDK1NjtyCDT7dHH4+3fIObK1eHNINPf5Owgx+Ygx8/H0ewg x+YgzdbH5OUg4cfk5ccgx+HH5ArN1sfk5SDH4dPa0TYwMDDM5O3lIOPV0ewgKgoKKsfh2tHWOToq KiDd0dXJINTe5SDex+Tm5CDMz+3PIMjt5CDayMfTIObj39HjINrI7c8qKioKCirU3skg49PHzckg MjMw4yDI48/t5Mkg5NXRIMfh4+TY3skgx+HTx8/TySDayMfR5SDa5CAz5ObjIOY00dPI1OQg5jLN 48fjCubj2MjOIObI4d/m5CDIx+HP5tEgx+HRx8jaIMrU2O3IIMjhx9gg2sfP7CDmx+HN48fjIObH 4ePYyM4g0+3Rx+Pt3yDmytXhzSDT3+QKx+Yg49/KyCDj2OHmyCAxODAwzOTt5SDj1dHsKgoKKsfh 2tHWMTA6KiogICAqKtTeySDI09rRIOPb0ewgx9HW7CDIzc/t3skgzuHdIM3P7d7JIMfh2N3hIMja 48fRySDMz+3PySoqKgoKKtTeySDex+Tm5CDMz+3PIM7h3SDNz+3eySDH4djd4SDI48/t5Mkg5NXR IMfR1uwgyM3P7d7JIM7h3e3lIOPTx83JIDEzMOMK2sjH0eUg2uQgNdvR3SDm1cfh5SDmMs3jx+Mg 5uPYyM4g5sjh3+bkIObt5szPIMzRx8wgzsfVIMjlxyAgx+HT2tEg3d7YCjIwMDDM5O3lIOPV0ewg KgoKKsfh2tHWMTE6KiogICAqKtTeySDex+Tm5CDMz+3PIDE3NeMgyMfhysfT2skgyOPP7eTJIOTV 0SoqKgoKKuHhx+3Mx9Eg1N7JIMjH4c/m0SDH4c7H49MgyNrex9ExMc/m0SDIMuPV2s8g2sjH0eUg 2uQgM+Tm4yDmM9HTyNTkIOYyzePH4wrm49jIziDmyOHf5uQgytTY7cgg0+3Rx+Pt3yDH4dPa0SDH 4ePY4ebIIDI1MDDM5O3lIOPV0ewgKgoKKsfh2tHWMTI6KiogICoq1N7JIDIwMOMgyMzmx9Egx+HT 0cfMIM7h3SDH4ebkz9Eg4cfkzyoqKgoKKtTe5SDex+Tm5CDMz+3PIM7h3SDH4ebkz9Eg4cfkzyDI 48/t5Mkg5NXRIMfh4+TY3skgx+HLx+PkySAgyMfhz+bRIMfh08fP0wrmx+Ha3sfROMfP5sfRIMjj 1drPINrIx9HlINrkIDPk5uMg5jTR08jU5CDmMs3jx+Mg5uPYyM4g5sjh3+bkINrh7CDH4ePNx9HJ CubI5ccg5MzH0ckg5tPIx9/JIObf5dHIx8Eg4+be2iDRx97sIMzPxyDm5cfP7CDmx+HT2tEgx+Hj 2OHmyCAyNTAwzOTt5SDj1dHsICoKCirH4drR1jEzOioqICAqKuHRx9vI7CDH4dPf5CDex+Tm5CDM z+3PIMjj5t7aIOPK4+3SIObRx97sIMjjz+3kySDk1dEqKioKCirU3skg4eHH7czH0SDIx+HT3cfR x8og4+be2iDj4+3SIOTH1e3JIMjI0cwg3c7jIMjH4c/m0SDH4TMg5sfh2t7H0TExz+bRCsgy49Xa zyDj08fNySAxNzXjINrIx9HlINrkIDPk5uMg5jPR08jU5CDmMs3jx+Mg5uPYyM4g5jPI4d/m5CDK 1NjtyCDT7dHH4+3fCubj08rm7e3kIMfh09rRIDMwMDDM5O3lIOPV0ewgKgoKKsfh2tHWMTQ6Kiog ICAqKtTeySDex+Tm5CDMz+3PIDIwMOMg5MfV7ckgyOPP7eTJIOTV0SoqKgoKKuHhx+3Mx9Eg1N7J IMjH4dPHyNrJIMjjz+3kySDk1dEgz+bRIMrH5Owg5sfh2t7H0TExz+bRIMgy49XazyDj08fNySAy MDDjCtrIx9HlINrkIDPk5uMg5jPR08jU5CDmMs3jx+Mg5uPYyM4g5sjh3+bkIMrU2O3IINPt0cfj 7d8g5sfh09rRIMfh49jh5sgKMzAwMMzk7eUg49XR7CAqCgoqx+Ha0dYxNToqKiAgIOHRx9vI7CDH 4crj7dIg5sfh3c7H48kg5sfh09/kIMjU3t4g5t3h4SDIx+HKzOPaIMfhzsfj0yAqCgoqKMOdKSAg ICAgICAqKtTeySDdx87RySDa4ewg1MfR2iDH4czm4d0gx+HRxu3T7CDN7csgx+HK4+3SIMfh2sfh 7CDH4d3t5iDa4ewK4+3Px+Qgx9HHyO3hxyoqKgoKKuPTx83JIDIwMOMg2sjH0eUg2uQgM+Tm4yDm M9HTyNTkIOYyzePH4yDm49jIziDmyOHf5uQg5jLI4d/m5CDK1NjtyCAg3cfO0cfh09rRCsfh49jh 5sggMjAwMMzk7eUg49XR7CAqCgoqKMidKSAgICAqKtTeySAxNTDjIMjH4crM49ogx+HOx+PTIMjH 4c3sIMfhy8fhyyDIzObH0SDj08zPIN3H2OPJCsfh1NHIyuHsKirj08fNySAxNTDjINrIx9HlINrk IDPk5uMg5jPR08jU5CDmMs3jx+Mg5iDj2MjOIObI4d/m5CDK1NjtyArdx87RINrh7CDmx8zl5QrI zdHsIObNz+3eySDm2uHsINTH0dog2tHW5TUw4yDm2+3RIOPM0ebNySDk5cfG7CDH4dPa0SDH4ePY 4ebIIDI1MDDM5O3lIOPV0ewKKioqCgoqKMwpKirh0cfbyOwgx+HT3+Qgx+Hdx87RINTeySDH0dbs IMjNz+3eySDO4d0g3eTP3iDH4ePt0cfMIMjH4crM49oqKiDU3skK3sfk5uQgzM/tzyDIx+Hex+XR ySDH4czP7c/JIMfR1uwg49HK3dogyM3P7d7JIM7H1ckg49PHzckgMzAw4yDayMfR5SDa5CA029Hd CuYz0dPI1OQg5jLN48fjIObj2MjOIObK1NjtyCDT7dHH4+3fIN3HztEg5sjlxyDK4e3d5uQgx+HT 2tEgx+Hj2OHmyCAzNTAwzOTt5Qrj1dHsICoKCioozykqKiAqKt3t4ccgz+bI4d/TINHHxtrJIMjN z+3eySDOx9XJIMjH4crM49ogx+HOx+PTIOHhx+3Mx9Eg3sfk5uQKzM/tzyoq3e3hxyDR5trJIMfR 1uwg49PHzckgMjUw4yDayMfR5SDa5CAz5ObjIOYz0dPI1OQg5jPN48fjIObj2MjOCubI4d/m5CDK 1NjtyArRzsfjIObT7dHH4+3fIObI5ccgx+Hm4+3Kx+Egx+HT2tEgx+Hj2OHmyCA0MDAwzOTt5SDj 1dHsICoKCioo5SkqKt3t4ccg49PK3uHJIDM1MOMgyMfh1ebRIOTH1e3JINrh7CDUx9HaIMfhytPa 7eQgx+HRxu3T7CDIx+HKzOPaIMfhzsfj0yoKKiDd7eHHIMjj5t7aIOHkIO3K39HRIN7H5ObkIMzP 7c8g2uHsIOTH1e3JINTH0drt5CDRxu3T7e3kIMjH4crM49ogx+HOx+PTCuPH0sfhyiDKzcogx+HK 1NjtyCDayMfR5SDa5CA05ObjIOY00dPI1OQg5jPN48fjIObj2MjOIOYyyOHf5uQgKgoKKijmKSoq ICoq3e3hxyDj08re4ckgx+PH4yDjz8fR0yDHzuTHyubkIMjH4crM49ogx+HOx+PTIOHhx+3Mx9Eg 3sfk5uQgzM/tKirPCuPm3trlxyDj1OXmINHMz8cg4+Qgx9He7CDj5sfe2iDIx+HKzOPaIMfhzsfj 0yDj08fNyuXHIDYwMOMg2sjH0eUg2uQgyM/R5uMK5sfR1uwg5sfm4SDm0ebm3SoKCirH4drR1jE2 OioqICAqKtTeySAxMTDjIN7H5ObkIMzP7c8gyMfh497Y4yoqICoKCirh4cftzMfRIN7H5ObkIMzP 7c8g1N7JIMjH4ePe2OMgyMfh5dbIySDH4ebT2Owgz+bR08fP0yDj08fNySAxMTDjINrIx9HJINrk CjLk5uMg5jLR08jU5CDmzePH4yDm49jIziDmyOHf5uQgytTY7cgg38fj4SDm7czPIMzRx8wgzsfV IMjlxyDH4dPa0SDH4ePY4ebICjExMDDM5O3lIOPV0ewgKgoKKsfh2tHWMTc6KiogICAqKt3t4ccg yOPRyNogx+Hm0sfRwSDIx+HU7dHHyubkIMjH5ObRx+PHINrh7CDN48fjINPIx83JKiogKgoKKuHh x+3Mx9Eg3sfk5uQgzM/tzyDd7eHHIMjH4c/m0SDH4dHHyNogyNTH0dog4+bH0uwg4d3t4ccg4+Tt 0SDLx8jKCsjH4dTt0cfK5uQg49PHzckzNTDjINrIx9HlINrkIDPk5uMg5jTR08jU5CDmM83jx+Mg 5uPYyM4g5sjh3+bkIObf4SDb0d3JIOHlxwrN48fjIM7H1SDI5ccg5srU2O3I5ccgyMfR3+3lIObT 7dHH4+3fIObI5ccg49jIziDH0eYg5s/t3+bRx8og2uHsIMfa4ewg49PK5uwK5sfh09/kINHH3uwg 5dDHIMfh4+be2iDh0ObsIMfh3c7H48kgx+HT2tEgx+Hj2OHmyCA5MDAwzOTt5SDj1dHsICoKKgoK 5eTHIOPN4cfKIMjU5sfR2iDKzMfR7ckg4+Qgx+HP0czJIMfhx+bh7CAg5uPmx97aIOTHz9HJIOHM 4+3aIMfhx9vRx9Yg4eHI7doKx+Ygx+HH7czH0SDI49PHzcfKIObH48ff5CDjyt3R3skgyOPV0SDj 5OXHIMjH4dXm0QoKCgrH4drR1jE6ICDjzeEg4eHI7dogx+Ygx+HH7czH0SDd7CDj1dEgx+HMz+3P ySDI4+be2iDkx8/R5uHe2MkgyOPtz8fkCsfhx9Pjx9rt4e3JINrh7CDUx9HaINHG7dPsIO3V4c0g 4cjk5t8gLSDK5t/t4cfKIMfN0O3JLSDK5t/t4cfKIOPYx9rjLQrK5t/t4cfKIOPN4+bhIOPTx83J IDcw4yDIx9HK3cfaIDQuNSDjytEg5uPTysjazyDk1MfYINXtz+HtySDH4crax97PIN3sIM3H4ckK x+HH7czH0SDj2OHmyCA21OXm0SDj3s/jIObH4ePP5SDH4cftzMfR7ck10+Tmx8og5sfhx+3Mx9Eg x+Hj2OHmyCAyMsfh3SDM5O3lCuPV0ewKCubd7CDNx+HJIMfhyO3aIMfh48rRINrh7CAyOMfh3SDM 5O3lIOPV0ewgIMfsIMfhx8zjx+HsIDE5NjAwMDDH4d0gzOTt5SDj1dHsCgoKCsfh2tHWMjogICDj zeHt5CDd0dXJIOHe2MkgyNrt5CDU49MgyMfI0cfl7eMg2sjPIMfh0cfS3iDH4dHG7dPsIM3tyyDH 4d/Lx93JCsfh09/H5O3JIMfh2sfh7ckg5tTl0crlIMfhyszH0e3JIOPkIMfhz9HMySDH4cfm4ewg IOHhyO3aIMfmIMfhx+3Mx9Eg49PHzckKx+HH5uEgNjDjIObH4cvH5OwgOTDjIObl5MffIMfj38fk 7eUg3crN5eMg2uHsIMja1iDa4ewgx+HY5sggx+HHzePRINrR1grH4dTH0dogMjDjIMjl4yDM4+3a IMfh49HH3d4gytHO7dUgx+HjzeHHyiDKzMfR7CDj5CDH4c3sIObt5szPIMzj7dogx+Hj5sfV4cfK Cubt5szPIMrT5e3hx8og3ewgx+HTz8fPCgoKCgoKx+Ha0dYzOiAgINPmyNEg48fR38ogMTcw4yDI x+Hj0e3m2O3JINrh7CDUx9Ha7eQg5uXmINTbx+Egzcfh7ccKCgoKCgrH4drR1jQ6ICAg483hx8og yOPmx97aIOHe2MkgyOPV0SDH4d7P7ePJIOPm3togyszH0ewg0cfG2iDIzObH0SDjzdjJIOPK0eYK 48fR7CDM0czTIObIzObH0SDH4d/m0eTt1CDm3tPjIOPV0SDH4d7P7ePJIOHhyO3aIMfmIOHhx+3M x9EKCjFfIOPN4SDj08fNyuUgNjDjIMrU2O3IINPmyNEg4ebf0yDH0dbtx8og5s3mx8bYINPt0cfj 7d8g5tXhx8og5t/Ux93HygoKMl8g7ebMzyDH7dbHIOPN4cfKIOPkIDE1x+HsIDEyMOMgyM/m5CDK 1NjtyCDH7dbHIMjk3dMgx+Hj5t7aIMfhyszH0ewg5dDHCgozXyDIz9Hm4yAzMDDjIMfR1u3HyiDN 1e3RySDO0dPH5O3JIObN5sfG2CDK5ebtySDj5CA05szlx8og3uPt1SDO0dPH5Owg7dXhzQrjztLk IMfmIOPV5NoKCgoKCgogICDH4drR1jU6ICAg483hIMjT5MrRIMfh48/t5MkgIMjH4ePR39Igx+Ha x+Hj7CAg4+be2iDjyuPt0iDIx+Hax9TRIOPkINHj1sfkCsjM5sfRIMfh4+be3SDmx+HI5ObfIMjj 2uTsIMfk5SAg4+be2iDKzMfR7CDm5eYgyMfhz+bRIMfhysfhyiDmx+3WxyDIzObH0QrH4dPh4yDm x+HH08fk0+3RINnH5dEgzM/HIOPTx83K5SAzMdI14yDOx+HVIMfhy+PkIObI483W0SDH4cfTyuHH 4yDm2t7PIOTlx8bsCtvt0SDjzc/PIMfh5NTH2CDH4cjHyCDNz+3PIObH4dTIx8jt3yDI2tHWIMfh 483hIMjH4cfh5uPtysfhIObjz+Xm5CDI4cfTyu3fCsfI7dYKCsfjxyDH4dPa0SDd5eYg4d7YySA1 MMfh3SDM5O3lIOPV0ewKCgoKx+Ha0dY2OiAgIOPN4SDI4+be2iDH08rL48fR7CDh4cjt2iDIx+Ha yOYg0SDO4d0gx8jmINDf0ewgyNPkytEgx9PKy+PH0ewg4+QKx+HP0czJIMfhx+bh7AoKIOPex8jh IOPV4c3JIMfh0OXIIMfhzM/tz8kgyMfhzewgx+HH5uEgyMfhz+bRIMfhx9HW7CDmx8zl5QoKx+HT 2tEgx+Hj2OHmyCAxNjDH4d0gzOTt5SDj1dHsIN/H1CDm4+Pf5CDK0+Xt4cfKICDI09rRIDE4MMfh 3SDM5O3lIOPV0ewKCgoKCgrH4drR1jc6ICAg483hIDEyMOMgyszH0ewgzM/Hx8fHx8fHINrh7CDU x9HaINHG7dPsICDI4+be2iDRx97sIMzPxwrIx+Hhx9Pf5M/R7ckKCgoKCgrH4drR1jg6ICAgIOPN 4SDIx+HU7c4g0sftzyAyMDAwIMfjx+Mg4+TKzNogx+HM5uPH5OUKCgrj08fNySA0MOMgys7V7dUg ztbH0SDm3cff5eUg5uPj3+Qgytvt0SDH4eTUx9ggzdPIIMfh48rHzSDj5CDeyOEgx+HM5cfSCgrH 4ePP3dogNznH4d0gzOTt5SDj1dHsIObj2OHmyCA2Msfh3SDT5ObtxyDa4ewgOcfe08fYIMfsIDnT 5ObHyiDH5uEg3tPYIO3Tys3eCt3sIDQvMTIvMjAwOObH4ePY4ebIIDQwx+HdIMfm3dEgyMfhx9bH 3ckgx+HsIMfh48jh2yDH4dDsIMrjIM/d2uUg4+Qg3sjhCuHhzOXH0iDm7ebMzyDH49/H5O3lIMfh yt7T7dgg2uHsIDExON7T2CDH7CAxONPk5SDIz+HHIOPkIDnT5ObHygoKCgrH4drR1iA5OiAgIOPe 0SDj08fNyuUgMTgwMOMgyOPk2N7JIM3h5sfkIMfh0cbt0+3JIM3tyyDH4d/Lx93JIMfh09/H5O3J Csfh2sfh7ckKCsjH4d7RyCDj5CDjytHmIMfhx+Tdx94g5uPm3t0gx+HHyubI7dMg5sfh0dPd7dMg 5uPkIMzj7dogx+Hax+Ph7eQgyOPVx+TaCs3h5sfkIOPj3+Qg2uPh5ccg49PK1N3sIMfmIOPR39Ig 2MjsIOPK38fj4SDI5NnH4yDH4ePUx9HfySDm5eTH3yDhxyDt5szPCuPTytTd7CDH5iDj0d/SINjI 7CDI5N3TIMfh49PHzckg5u3j3+Qg2uPhINXtz+HtySDPx87h7ckg4eHj08rU3ewg4c7P48kK0ebH z+XHIOPe0+PlINrh7CDP5tHt5CDH5uEgIObKx+TsIObf4SDj5OXjIDkwMOMgyMfhx9bH3eUg4eHH 0dbsIDQ1MOMg49oKx+Pfx+Tt5SDa4+Eg48/O4SDOx9UKCtjR7d7JIMfh08/HzyDd7CDNx+HlIMfh yO3aIMjH4cre0+3YIObd7CDNx+Egx+Hj1MfR38kg7d/m5CDkzeQgyMfh49/H5ArmzdbRyt/jIMjH 4crM5e3Sx8og5sfhx8/H0ckg49og5szmzyDk2cfjIOPNx9PI7CDjyt/H4+Egx+HH0cjHzSDYyN7H IOHh5NPICsfhyuwg7crjIMfhx8rdx94g2uHt5ccKCgoK4eHj2sft5OUg7dHM7CDH4cfK1cfhINrh 7CDR3uMgx+Hlx8rdIMfmIMfh49HH0+HJINrI0SDH4cft4+3hCjAxMDMwNDM2ODIKKgoKKm1hc2th bm1hc3J5QGdtYWlsLmNvbSoKCirh2s/jIMrh3uwgx+wg0dPHxuEg4+Qg5dDHIMfh5ObaIO3RzOwg x9HTx+Eg08fh5SDOx+Ht5SDa4ewg5dDHIMfhx+3j7eEqCgoqU296YW4xZWd5cHRAZ21haWwuY29t KgoKKubH0Mcg38fkIOHP7d/jINrR1iDU3skgLePe0S3d7eHHKiotIOPV5NogliDV7c/h7ckt487S 5C3jzeHH5iDH7CDH1ebhCsfO0ewqKuHhx+3Mx9Egx+Yg4eHI7dog7ePf5N/jIMfR08fhIMrdx9Xt 4SDH4drR1iDfx+PhxyDm7d3W4SDmzObPINXm0QrH5CDH49/kINrh7Arl0Mcgx+HH7ePt4SoqKgoK Km1hc2thbm1hc3J5QGdtYWlsLmNvbSoKCirmx9DHIN/H5CDH4drR1iDH4ePR0+Eg2+3RIOPkx9PI IO3RzOwgx9HTx+Eg2OHI3+Mg2uHsIOXQxyDH4cft4+3hKgoKKkhhbmFuMWVneXB0QGdtYWlsLmNv bSAqCgoq49ogys3tx8ogKgoKKuPT3+Qg49XR7CoKCip3d3cubWFza2FubWFzcnkuY29tKgo= ------=_Part_144361_12721996.1231106966208 Content-Type: text/html; charset=WINDOWS-1256 Content-Transfer-Encoding: base64 Content-Disposition: inline PGJyPjxzcGFuIGNsYXNzPSJnbWFpbF9xdW90ZSI+PGJyPjwvc3Bhbj4KPGRpdj48c3BhbiBjbGFz cz0iZSIgaWQ9InFfMTFlYTNiMGJiZWEzYTkxZV8wIj48YnI+PGJyPjxicj48YnI+PHNwYW4gY2xh c3M9ImdtYWlsX3F1b3RlIj4KPGRpdiBhbGlnbj0iY2VudGVyIj48c3Ryb25nPjxmb250IGNvbG9y PSIjMzMzM2ZmIiBzaXplPSI0Ij7I0+Mgx+Hh5SDH4dHN4+Qgx+HRze3jPC9mb250Pjwvc3Ryb25n PjwvZGl2Pgo8ZGl2IGFsaWduPSJjZW50ZXIiPgo8ZGl2PjxzdHJvbmc+PGZvbnQgY29sb3I9IiMz MzMzZmYiPjxmb250IHNpemU9IjQiPszH0ewgx+HHyt3H3iZuYnNwO+HK5t7t2iDI0crm3+bhIMra x+bkIMjt5CDj09/kIOPV0ewg5sfNz+wg1NHfx8ogx+HK4+bt4SDH4drex9HsIOHK7dPt7dEgx+HO z+PHyiA8c3BhbiBuYW1lPSJzdCI+x+Ha3sfR7ck8L3NwYW4+PC9mb250PjwvZm9udD48L3N0cm9u Zz48L2Rpdj4KPGRpdj48c3Ryb25nPjxmb250IGNvbG9yPSIjMzMzM2ZmIiBzaXplPSI0Ij7m2uHs IMfh08fPySDH4ePUytHt7eQg4+Qg49XRIMfR08fhIMfhyO3H5MfKIMfh48fh7ckg4eHPzuEgx+HR 0+PsINPmx8Eg3tjH2iDax+Mgx+YgzsfVIObf0OHfIMfh48jh2yA8L2ZvbnQ+PC9zdHJvbmc+PC9k aXY+CjxkaXY+PHN0cm9uZz48Zm9udCBjb2xvcj0iIzMzMzNmZiIgc2l6ZT0iNCI+x+Hjyubd0SDN x+HtxyDh4dTRx8EgKO3K4yDP3dog4+QgMTAl4+Qgy+PkIMfh5s3PySDmx+HIx97sIO3K4yDP3drJ IOPkINTR38kgx+HK4+bt4SDIzuHH4SDH08jm2iDh4cjHxtombmJzcDsg5u3K4yDK3tPt2OUgx+Ht 3+Mg4ePP5SDK1eEgx+HsJm5ic3A7MjDT5Mkp5t3sIM3H4SDH4drj4SDOx9HMIOPV0SDtyuMgx83W x9Eg1OXHz8kg4cfLyMfKIMfhz87hIObj5sveySDj5CDH4d7k1eHtySDH4ePV0e3JPC9mb250Pjwv c3Ryb25nPjwvZGl2PgoKPGRpdj48c3Ryb25nPjxmb250IGNvbG9yPSIjMzMzM2ZmIiBzaXplPSI0 Ij7t0czsIMfR08fhIMfhyO3H5MfKIMfhzdPHyO3JIOPkIMfhz87hIObaz88gx+HT5ObHyiDh4cre 0+3YIObH4ePI4dsgx+HjysfNIObj5sfV3cfKIMfh5s3PySDH4ePY4ebI5SDH4ewg5dDHIMfhx+3j 7eEgPC9mb250Pjwvc3Ryb25nPjwvZGl2Pgo8ZGl2PjxhIG9uY2xpY2s9InJldHVybiB0b3AuanMu T3BlbkV4dExpbmsod2luZG93LGV2ZW50LHRoaXMpIiBocmVmPSJtYWlsdG86bW9uYTFlZ3lwdEBn bWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj48c3Ryb25nPjxmb250IGNvbG9yPSIjMzMzM2ZmIiBz aXplPSI0Ij5tb25hMWVneXB0QGdtYWlsLmNvbTwvZm9udD48L3N0cm9uZz48L2E+PC9kaXY+Cjxk aXY+PHN0cm9uZz48Zm9udCBjb2xvcj0iIzMzMzNmZiIgc2l6ZT0iNCI+Jm5ic3A75trh7CDH4dPH z8kgx+HIx8ba7eQg4eHmzc/HyiDH4ePTzOHJIMfmIMfhyuwg4eXHIMfj38fk7ckgx+HK08zt4SDH 0dPH4SDH4cjtx+THyiDfx+PhySDm7d3W4SDj2iDR0+bjx8og5eTP0+3JIObV5tEg4eHa3sfRIObH 4ebNz8k8L2ZvbnQ+PC9zdHJvbmc+PC9kaXY+CjxkaXY+PHN0cm9uZz48Zm9udCBjb2xvcj0iIzMz MzNmZiIgc2l6ZT0iNCI+5u3K4yDH4cjt2iDIz93aIDEwJebH4cjH3uwmbmJzcDvI1O3fIOPeyObh IMfhz93aJm5ic3A7yM7hx+Egx9PI5tog4+Qg1NHfySDH4crj5u3hPC9mb250Pjwvc3Ryb25nPjwv ZGl2Pgo8ZGl2PjxzdHJvbmc+PGZvbnQgY29sb3I9IiMzMzMzZmYiIHNpemU9IjQiPubt0czsIMfh x9HTx+Eg2uHsIOXQxyDH4cft4+3hIDwvZm9udD48L3N0cm9uZz48L2Rpdj4KPGRpdj48YSBvbmNs aWNrPSJyZXR1cm4gdG9wLmpzLk9wZW5FeHRMaW5rKHdpbmRvdyxldmVudCx0aGlzKSIgaHJlZj0i bWFpbHRvOm1vaGFtZWRtb2hzZW4xZWd5cHRAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+PHN0 cm9uZz48Zm9udCBjb2xvcj0iIzMzMzNmZiIgc2l6ZT0iNCI+bW9oYW1lZG1vaHNlbjFlZ3lwdEBn bWFpbC5jb208L2ZvbnQ+PC9zdHJvbmc+PC9hPjwvZGl2Pgo8ZGl2Pjxicj4mbmJzcDs8L2Rpdj48 L2Rpdj48YnI+PC9zcGFuPgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4g bGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogcmVk Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iIHNpemU9IjQiPuXkxyDt5szPINTe3iDh3tjJ IObR5trJIMjH4ePax8/sIObH4crM49og5t3t1eEg5szT0SDH4dPm7dMg5sfh5NLlySDm0sftzyDm x+HU0ebeIObH4drI5tEg5uPP7eTK7CDm4+TlxyDIx+HV5tEgPC9mb250Pjwvc3Bhbj48L2I+PC9w PgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9 InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4m bmJzcDs8L3NwYW4+PC9zcGFuPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBkaXI9InJ0bCIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha 0dYxOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9O VC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3Nw YW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7hz+bH2u0gx+HT3dEg1N7JICZuYnNwO93R 1ckgyMfh49rHz+0gyMPR3u0gx+Hj5sfe2jwvc3Bhbj4g49PHzcrlxyAxMDUg4zIgyMPI0cfMIMjt ytTmIMPj7dHt38fkINPtyu0gx+Hj2sfP7SDK1NjtyCDT5sjRIOHm39MgliDH08o8c3BhbiBuYW1l PSJzdCI+4cc8L3NwYW4+4yDd5tHtIJYg2t7PIMjt2iDk5cfG7SDmPHNwYW4gbmFtZT0ic3QiPuHH PC9zcGFuPiDK5szPINrh7eXHIMPtySDD3tPH2CDm48/d5togx8rNx88gx+HjPHNwYW4gbmFtZT0i c3QiPuHHPC9zcGFuPt8g5uPV0ebdx8ogx+Hj0cfd3iDIx+HP5tEgx+HTx8/TIN3tIMjRzDExIM/m 0SDIx+HD08fk0+3RIOPkIDUyIMjRzCDm49PMzyDm48/R08kg5uPm4SDK0d3t5e0g5srMx9HtIMjH 4d7RyCDj5CDfx9Hd5tEg5uTHz+0gx+HV7c8gx+HMz+3PIObkx8/tIObHz+0gz8zhySDT2tEgx+Hj ytEyMzAwIMzk7eUg49XR7DxzcGFuPiZuYnNwOyA8L3NwYW4+yMrT5e08c3BhbiBuYW1lPSJzdCI+ 4cc8L3NwYW4+yiZuYnNwOyDH4dPa0SDUx+PhIMfKzcfPIMfh4zxzcGFuIG5hbWU9InN0Ij7hxzwv c3Bhbj7fIObH4ePRx93eIObH4cPTx+TT7dE8L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJNQVJH SU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+X19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXzwvc3Bhbj48L2I+PC9wPgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBw dCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBGT05ULUZBTUlMWTogQXJpYWwiPiZuYnNwOzwvc3Bhbj48L2I+PC9wPgo8ZGl2IHN0eWxlPSJC T1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6 IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9S REVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3 aW5kb3d0ZXh0IDEuNXB0IHNvbGlkIj4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5v bmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkct TEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JE RVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1l ZGl1bSBub25lIj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJ WkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7PC9zcGFuPjxzcGFuIHN0 eWxlPSJDT0xPUjogYmx1ZSI+x+Ha0dYyOjwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGZ1Y2hz aWEiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+4eHT3+Qgx+Hd5tHsIMjj5t7aIOPK4+3SIMjH 4ePax8/sIMjH4d7RyCDj5CDjzdjJIMfh48rR5iDj5NjeySDRx97tyTxzcGFuPiZuYnNwOyA8L3Nw YW4+PC9zcGFuPjwvc3Bhbj48L2I+PHN0cm9uZz48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwi IHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBmdWNoc2lhOyBGT05ULUZBTUlMWTogVGFo b21hIj7U3skgytTY7cgg0+bI0SDh5t/TPC9zcGFuPjwvc3Ryb25nPjxzdHJvbmc+PHNwYW4gbGFu Zz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogIzQ0NDQ0 NDsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+IOPTx83K5ccgMTQwIOPK0SDK2OEg2uHsIOPkx9nRINjI 7drtySDj3crmzckgLiZuYnNwOyDKyt/m5CDj5CDNzNHJIOTm4yDfyO3RySA1IOPK0SDd7CA2IOPK 0SDmzczRySDk5uMgx9Xb0SDm0dPI1OQg5tXH4ckgyubS7dog5s3jx+Mg5sfNzyDm49jIziDm7ePf 5CDH1sfdySDN48fjINXb7dEgLuPY4ebIIDM5NSDH4d0gzOTtySDj1dHsJm5ic3A7KM3mx+HsIDcx IMfh3SDP5jxzcGFuIG5hbWU9InN0Ij7hxzwvc3Bhbj7RIMfj0e3f7CApJm5ic3A74+Pf5CDH4cjt 2iDIyNrWIN7Y2iDHPHNwYW4gbmFtZT0ic3QiPuHHPC9zcGFuPsvHyyDm49/t3cfKIMfh5ebHwSDm 7ebMzyDh5ccg1ebRPC9zcGFuPjwvc3Ryb25nPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46 IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05U LVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+Jm5ic3A7PC9zcGFuPjwvYj48L3A+Cjxw IHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJy dGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJp YWwiPtrR1jM6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7Jm5ic3A7 IDwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGZ1Y2hzaWEiPtTeySAxNjXjIMjH4eTS5ckgx+HM z+3PySA8L3NwYW4+PC9zcGFuPjwvYj48L3A+Cgo8ZGl2IHN0eWxlPSJCT1JERVItUklHSFQ6IG1l ZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQ QURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVSLUxFRlQ6IG1lZGl1 bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDEuNXB0 IHNvbGlkIj4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklH SFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURE SU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVt IG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lIj48Yj48 c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQt RkFNSUxZOiBBcmlhbCI+4eHI7dog2uHsIMfh483H0ckg2sjH0ckg2uQgM+Tm4yDmM9HTyNTkIOYy zePH4yDm49jIziDmyOXHIN/l0cjHwSDm2s/Hz+bUyN/JIOPtx+Ug5sfI5sfIIOYy49XazyDO1Mgg 5tje4yDH4ebj7crH4SDH0+bP2+3RIOPM0ebNySDH4dPa0SDj29HsIMzPxyDh4cjt2iDa4ewgMzQw x+HdIMzk7eUg49XR7CA8L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBp biAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJ WkU6IDEwcHQ7IENPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPtrR1jQ6PC9zcGFuPjwv Yj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+IDxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+PHNwYW4+ Jm5ic3A7Jm5ic3A7PC9zcGFuPtTeySDP7eHm39MgMTUw4yDO4d0gzc/t3skgyM/RIMjH4eTS5ckg MszT0SDH4dPm7dM8L3NwYW4+PC9zcGFuPjwvYj48L3A+Cgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4g MGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpF OiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPuHhyO3aINTeySDRx8baySDa4ewgx+HT3+Qgx+Hd 5tHsIMjN0e3JIMjH4c/m0SDH4c7H49Mg5u3mzM8g49XazyDH4cjRzCDa4ewg1N7K7eQg5uXmINrU 0ckgx8/mx9EgytTY7cgg0+bI0SDh5t/TIM/t3+bRx8og0cfG2skg5uPPzuEg3cfO0SDIx+HRzsfj IObtzM8g48fK5tEg4eHj7cflIObO0sfkx8og2uHsINTH0dogPC9zcGFuPjwvYj48c3BhbiBkaXI9 Imx0ciI+PC9zcGFuPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuIGRpcj0ibHRyIj48L3NwYW4+PHNwYW4+Jm5ic3A7 PC9zcGFuPjxzcGFuIGRpcj0icnRsIj7jyt3R2iDj5CDUx9HaIMfhzuPT7eQgyMzmx9Egx+Hj2uXP IMc8c3BhbiBuYW1lPSJzdCI+4cc8L3NwYW4+0uXR7CDYPHNwYW4gbmFtZT0ic3QiPuHHPC9zcGFu PsbaIMc8c3BhbiBuYW1lPSJzdCI+4cc8L3NwYW4+0uXRIMfh1NHt3SDK1NjtyCDRx8baIObRx97s IObl7CAz29HdIOTm4yDmMs3jx+MgyMfh0c7H4yDH4dPH3tgg5uPYyM4gyMfh0c7H4yDH4c/HxtHs IObR08jU5DPe2NogyM/t3+bRx8og0cfG2uUgPHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48L3Nw YW4+PC9iPjwvcD4KCjxkaXYgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJ TkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGlu OyBQQURESU5HLUJPVFRPTTogMXB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkct VE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBzdHls ZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVIt VE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47 IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1U T1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLVNB IiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4m bmJzcDs8L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0 Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+Jm5ic3A7PC9zcGFuPjwvYj48L3A+CjxwIHN0eWxlPSJNQVJH SU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZBTUlMWTogQXJpYWwiPtrR1jU6 PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJ WkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48 c3BhbiBzdHlsZT0iQ09MT1I6IGZ1Y2hzaWEiPtTeySDkx9XtySDH48fjIMjmx8jJIOTHz+wgx+HU 49Mg5t3kz94gx+HTPHNwYW4gbmFtZT0ic3QiPuHHPC9zcGFuPuMgMTUw4yA8L3NwYW4+PC9zcGFu PjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBURVhULUFMSUdO OiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZP TlQtRkFNSUxZOiBBcmlhbCI+x+Hd7eYgzNPRIMfh0+bt0yDm3eTP3iDH4dM8c3BhbiBuYW1lPSJz dCI+4cc8L3NwYW4+4yDI1MfR2iDd4dPY7eQgz+bRIM7H49Mg5sfh2t7H0TXHz+bH0ebH0dbsPHNw YW4+Jm5ic3A7IDwvc3Bhbj7ayMfRySDa5CAz5ObjIOY8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9 IkFSLUVHIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogbmF2eTsgRk9OVC1GQU1JTFk6 IEFyaWFsIj4g49PHzckgx+Hb0d0gMTYg4yAyIJYgMTQg4zIgliAyMCDjMiA8c3Bhbj4mbmJzcDs8 L3NwYW4+5iDj08fNySDH4dHt08jU5CDH4cPM48fh7ckgNDAg4zI8c3Bhbj4mbmJzcDsgPC9zcGFu PuYg49PHzckgx+HN48fjIMfh38jt0SA2IOMyJm5ic3A7Jm5ic3A7IObH4dXb7dEgMiDjMiZuYnNw OyZuYnNwOyDH4ePYyM4mbmJzcDsgNyDjMjxzcGFuPiZuYnNwOyA8L3NwYW4+49PHzckgx+HY0d7J IMfh4+bM5s/JIMjt5CDH4dvR3crt5CDH4c/HzuHtyu3kIObH4c3jx+Pt5CDmx+Hj2MjOIMrTx+bt IDYg4zIgPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTog MTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48L3NwYW4+PC9iPjwvcD4KCjxkaXYgc3R5bGU9IkJP UkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDog bWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMXB0OyBCT1JE RVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdp bmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBkaXI9InJ0bCIgc3R5bGU9IkJPUkRFUi1SSUdIVDog bWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7 IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBCT1JERVItTEVGVDogbWVk aXVtIG5vbmU7IERJUkVDVElPTjogcnRsOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9N OiBtZWRpdW0gbm9uZTsgVEVYVC1BTElHTjogcmlnaHQiPgo8Yj48c3BhbiBsYW5nPSJBUi1FRyIg c3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IG5hdnk7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ 49PHzckgx8zjx+HtySDh4cjh3+bkySAyMCDjMiA8c3Bhbj4mbmJzcDs8L3NwYW4+ytTY7cgg0+bI 0SDh5t/TINPt0cfj7d8g2s/HIDLb0d3JIOTm4yDIx9Hf7eUg5trez+XHINXNySDK5t7t2iDj5CDH 4ePH4d8gxzxzcGFuIG5hbWU9InN0Ij7hxzwvc3Bhbj7V4ewg4eHU3sk8c3Bhbj4mbmJzcDsgPC9z cGFuPubH4dPa0SDH4ePY4ebIIOHhyO3aIDIyNTDM5O3lIOPV0ewg4eHjytEgPC9zcGFuPjwvYj48 L3A+CjwvZGl2Pgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBURVhULUFMSUdO OiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZP TlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48L2I+PGI+PHNwYW4g bGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibHVlOyBGT05ULUZB TUlMWTogQXJpYWwiPtrR1jY6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJzcDsmbmJzcDsg PC9zcGFuPjxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+1N7JIOTH1e3JIMjd7TxzcGFuIG5h bWU9InN0Ij7hxzwvc3Bhbj4gyMfhyszj2iDH4c7H49Mgx+HNz+3eySDH4d3t5iDa4ewgzc/t3sk8 c3Bhbj4mbmJzcDsgPC9zcGFuPubj5CDM5eUgx87R7CDa4ewgx+Hj2uXPIMfh2sfh7CDh4drh5uMg xzxzcGFuIG5hbWU9InN0Ij7hxzwvc3Bhbj7Px9HtySA8L3NwYW4+PC9zcGFuPjwvYj48L3A+Cgo8 ZGl2IHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47 IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RU T006IDFwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JE RVItQk9UVE9NOiB3aW5kb3d0ZXh0IDEuNXB0IHNvbGlkIj4KPHAgZGlyPSJydGwiIHN0eWxlPSJC T1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6 IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgQk9S REVSLUxFRlQ6IG1lZGl1bSBub25lOyBESVJFQ1RJT046IHJ0bDsgUEFERElORy1UT1A6IDBpbjsg Qk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmU7IFRFWFQtQUxJR046IHJpZ2h0Ij4KPGI+PHNwYW4g bGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ 4eHI7dog1N7JIDIwMOMgyMfhyszj2iDH4c7H49Mgx+HN7CDH4crH4cog2sjH0eUg2uQgM+Tm4yDm NNHTyNTkIOYyzePH4yDm49jIziDmyOHf5uTlIObl7CDOx+HVySDH2uPH4SDH4eTMx9HJIObH4dPI x9/JIObH4d/l0cjHwSDmx+HP5cfkx8og7eTe1eXHIMfh0+3Rx+Pt3yDH4dPa0SDH4ePY4ebIIDYw MMfh3SDM5O3lIOPV0ewgPC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBkaXI9InJ0bCIgc3R5bGU9 IkRJUkVDVElPTjogcnRsOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0Ei IHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwi PtrR1jc6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTog MTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFu IHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+1N7JIDEzNeMgyMfk5tHH48cg2uHsIM3P7d7JIN/I7dHJ IMjH4crM49ogx+HLx+HLIOPm3tog48rj7dIgzM/Hx8fHPC9zcGFuPjwvc3Bhbj48L2I+PC9wPgoK PHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgVEVYVC1BTElHTjogcmlnaHQiPjxi PjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTog QXJpYWwiPuHhyO3aINTeySDIx9Pfx+Qgx+HUyMfIIMc8c3BhbiBuYW1lPSJzdCI+4cc8L3NwYW4+ 08rL48fR7CDI4+be2iDj4+3SINrIx9HlINrkIDPk5uMg5jLR08jU5CDmMs3jx+Mg5uPYyM4g49PH zckg1cfd7ckgyM/m5CDj5Mfm0SDIx+HP5tEgx+HRx8jaIObH4drex9EgM8fP5sfRIObH0dbsIObI 5ccg28fSINjI7drsIMzj7dogx+Hb0d0g5sfhzePH48fKIObH4ePYyM4gytjhINrh7CDH4dTH0dog 5sfhzc/t3skg5u3mzM8gx+HV5tEgx+HOx9XJIMjH4dTeySDmx+Hd7eYgx+PHIObV3SDHPHNwYW4g bmFtZT0ic3QiPuHHPC9zcGFuPsvHyzwvc3Bhbj48L2I+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVS LVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRp dW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAxcHQ7IE1BUkdJTi1M RUZUOiAwaW47IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiAwLjI1aW47 IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQi PgoKPHAgZGlyPSJydGwiIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5H LVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsg UEFERElORy1CT1RUT006IDBpbjsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBESVJFQ1RJT046 IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC4yNWluOyBQQURESU5H LVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgVEVYVC1BTElHTjogcmlnaHQi Pgo8Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1J TFk6IEFyaWFsIj7I5ccg29HdySA8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHls ZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPtvR3ckg5ObjIM7UyCDH0eYg 3ebRIN3m0czt5SDmyOXHINPR7dEgMTcw0+Mg5iDb0d3JIMjlx9rPzyAyIDxzcGFuIHN0eWxlPSJD T0xPUjogIzFmNDk3ZCI+0zwvc3Bhbj7R7dEgMTIwINPjIObP5jxzcGFuIG5hbWU9InN0Ij7hxzwv c3Bhbj7IIMg8c3BhbiBuYW1lPSJzdCI+4cc8L3NwYW4+38fRIM7UyCDH0eYmbmJzcDsg5srRyO3S ySDK4e3d0u3m5CDmINvR3ckg49rt1MkgyOXHIMfkytHt5SAmbmJzcDvfx+TI5SAyIObfx+TI5SAz IObd5srt5SDm49/KyMkgJm5ic3A75srRyO3SySDmINXH4ebkIN/H4+EgyOUg38fkyMkgMyDm38fk yMkgMiDmPHNwYW4gc3R5bGU9IkNPTE9SOiBibGFjayI+Mjwvc3Bhbj7f0dPsJm5ic3A75iDT3dHJ IN/H4+HJIM7UyCDH0eYg5sjlxyDP5jxzcGFuIG5hbWU9InN0Ij7hxzwvc3Bhbj7IIN3W7cfKIObI 5t3t5SZuYnNwOyDmytHI7dLJIDgg39HH0+wg5iDj2MjOIN/H4+EgztTIIN7U0ckgx9HmIOYgzNLH 48kgztTIIN/I7dHJIOYgyzxzcGFuIG5hbWU9InN0Ij7hxzwvc3Bhbj7LIOPRx8rIINPm08ogysff 7CDmINPMx88gyN/hIMfh29HdIObH4dXH4ebkIObH4dPd0ckg5iDTysfG0SDjx9HP7eTsINPKx+3h IMfj0e3fx+TsINrh7CDf4SDUyMffIObI4d/m5Mkg5iDaz88xIDxzcGFuIHN0eWxlPSJDT0xPUjog IzFmNDk3ZCI+yjwvc3Bhbj7h7d3S7ebkPHNwYW4gc3R5bGU9IkNPTE9SOiAjMWY0OTdkIj4gPC9z cGFuPiZuYnNwOzI1IMjm1ckgyubU7cjHIObaz88xIMrh7d3S7ebkIDIxIMjm1ckg5MfU7ebkx+Eg 5trPzzEg0e3T7d3RIMfTytHHIMjH4djI3iAxODDT4yDjys3R3yDmINrPzzxzcGFuIHN0eWxlPSJD T0xPUjogIzFmNDk3ZCI+IDEgPC9zcGFuPiZuYnNwO8rf7e3dINTH0cggzM/tzyDm2s/PPHNwYW4g c3R5bGU9IkNPTE9SOiAjMWY0OTdkIj4gPC9zcGFuPjEgyt/t7d0g38fR7dEgzM/tzyDmIM/dx+3J IMfm4e3jyN8g0u3KIObj0ebNySDK5tTtyMcgyMfh0e3j5sog5uPf5NPJIN/l0cjHxu3JPC9zcGFu PjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQg ZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4g5jwvZm9udD48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9 IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPiDb08fh ySDd5uEgx8rm48fK7d8gx+3P7cfhINLH5ObT7CAxOCDI0eTH48wg5iDLPHNwYW4gbmFtZT0ic3Qi PuHHPC9zcGFuPszJIMrm1O3IxyAxNCDez+Mg5iDI5srMx9Ig7ebk7d3R08fhIDUg1NrhySDmIMrm 08rH0SDf5dHI7CDm1N3H2CDd7c/t5iDmIOPH7d/R5ubt3SDmMiDTzsfkINvH0iDH5uHjyO3fIOYg 7ebk3dHTx+Eg5iDkzN0g38fj4SDIx+Hb0d0g5iDH4dPd0ckg5sfh1cfh5uQ8L3NwYW4+PC9iPjwv cD4KPC9kaXY+CjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5U OiAtMC4yNWluOyBNQVJHSU4tUklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNw YW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBG T05ULUZBTUlMWTogQXJpYWwiPtrR1jg6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIg c3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJzcDsm bmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+1N7JIOHe2MkgOTDjIMjH 4d7H5dHJIMfhzM/tz8kgytXhzSDj38rIINrtx8/JIMfmINPf5CDh2OHIySDH4ePa5c8gyMzmx9Hl PC9zcGFuPjwvc3Bhbj48L2I+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0g bm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElO Ry1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAxcHQ7IE1BUkdJTi1MRUZUOiAwaW47IEJPUkRF Ui1MRUZUOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiAwLjI1aW47IFBBRERJTkctVE9QOiAw aW47IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgoKPHAgZGlyPSJydGwi IHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJP UkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006 IDBpbjsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRF TlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC4yNWluOyBQQURESU5HLVRPUDogMGluOyBCT1JE RVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgVEVYVC1BTElHTjogcmlnaHQiPgo8Yj48c3BhbiBsYW5n PSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3skg ytXhzSDhzOPt2iDHPHNwYW4gbmFtZT0ic3QiPuHHPC9zcGFuPtvRx9Yg5uE8c3BhbiBuYW1lPSJz dCI+4cc8L3NwYW4+08rL48fRIMft1scg48rU2MjlIMjH3dbhIOPm3togyMfh3tjH4+3JIMjH4crM 49ogyMfh3tHIIOPkIOPa5c8gx+HV5Mfax8ogx+Hjytjm0ckgx+HT2tEgx+Hj2OHmyCDj29HsIMzP x8fHx8fHx8fHxyDd3tggMTIwx+HdIMzk7eUg49XR7Dwvc3Bhbj48L2I+PC9wPgo8L2Rpdj4KPHAg ZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1B UkdJTi1SSUdIVDogMC41aW47IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1T QSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZPTlQtRkFNSUxZOiBB cmlhbCI+2tHWOTo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+ PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7d0dXJIOTHz9HJINTeySDIx+HayObRIMjH4c/m 0SDH4crH5Owgx+PH4yDT5MrRx+Egx+HayObRPC9zcGFuPjwvc3Bhbj48L2I+PC9wPgoKPGRpdiBz dHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JE RVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAx cHQ7IE1BUkdJTi1MRUZUOiAwaW47IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJ R0hUOiAwLjI1aW47IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQg MS41cHQgc29saWQiPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBu b25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5H LUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25l OyBESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC4y NWluOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgVEVYVC1B TElHTjogcmlnaHQiPgo8Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBw dDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7h4cjt2iDU3skgyMfh2sjm0SDj08fNyuXHIDYz4yDayMfR 5SDa5CAy5ObjIObVx+HlIOPY4ebIIDY1x+HdIMzk7eUg49XR7CDm1OXR7CA3MCDM5O3lIOPV0ewg 5uTe4SDH4ePh3+3JIOPIx9TRySDH4ePH4d8gPC9zcGFuPjwvYj48L3A+PC9kaXY+CjxwIGRpcj0i cnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5UOiAtMC4yNWluOyBNQVJHSU4t UklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0 eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZBTUlMWTogQXJpYWwi PtrR1jEwOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6 IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+IDxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+ 1N7JIDYz4yDIx+Ha3dQg5sfhx8zl0skgyMfh1NHm3jwvc3Bhbj48L3NwYW4+PC9iPjwvcD4KCjxw IGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5UOiAtMC4yNWluOyBN QVJHSU4tUklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVIt U0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+4eHI7dog1N7J IM/m0SDH0dbsIOPTx83JIDYz4yDayMfR5SDa5CAy5ObjIObVx+HlIObj2MjOIObN48fjIOPK1NjI 5SDmyOXHIMzj7dogx+HHzOXSySDmx+Ha3dQgx+HT2tEgMTIwx+HdIMzk7eUg49XR7CA8L3NwYW4+ PC9iPjwvcD4KCjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5U OiAtMC4yNWluOyBNQVJHSU4tUklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNw YW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlh bCI+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPC9zcGFuPjwvYj48L3A+Cjxw IGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5UOiAtMC4yNWluOyBN QVJHSU4tUklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVIt U0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZBTUlMWTog QXJpYWwiPtrR1jExOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05U LVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7IDwvc3Bhbj48c3Bh biBzdHlsZT0iQ09MT1I6IGZ1Y2hzaWEiPuPM4+baySDU3t4g48rt49LJIMzPxyDIx+HU7c4g0sft zyDj08fNx8og487K4d3JPC9zcGFuPjwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxl PSJESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC41 aW47IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQt U0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZPTlQtRkFNSUxZOiBBcmlhbCI+MV88L3NwYW4+ PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZB TUlMWTogQXJpYWwiPiDU3skgz+bRIMfR1uwg49HK3dog49PHzckgMTAw4yDayMfRySDa5CAy5Obj PHNwYW4+Jm5ic3A7IDwvc3Bhbj7fyO3RyeYy0dPI1OQg5s3jx+Mg5uPYyM4g5sjh3+bkPHNwYW4+ Jm5ic3A7IDwvc3Bhbj7K1eHNIMrMx9HsIMfmINPf5Owgx+Ygx8/H0ewgx+PH4yDT5MrRIM3t5uwg zM/Hx8cg5sft1scg2uHsIM3P7d7JIN/I7dHJIM7H4dXlIOPaIMfhyOTfIOPY4ebIINPa0SDhxyDt 3sfR5DxzcGFuPiZuYnNwOyA8L3NwYW4+MTE1x+HdIMzk7eUg49XR7CDd3tg8L3NwYW4+PC9iPjwv cD4KCjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IFRFWFQtSU5ERU5UOiAtMC4y NWluOyBNQVJHSU4tUklHSFQ6IDAuNWluOyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFu Zz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZB TUlMWTogQXJpYWwiPjJfPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4g1N7JIDcw4yDKyNogx+HM5cfSIMjH 4dTtziDSx+3PIMfTysvjx9HsIM/m0TMg49PHzckgNzDjIMrU2O3IIMfhzOXH0iDj2OHmyCA4Ncfh 3SDM5O3lIOPV0ewg5trh7eXHIDY0MMzk7eUg1OXR7CDh48/lIDIw0+TJIDwvc3Bhbj48L2I+PC9w PgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDog MGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkct Qk9UVE9NOiAxcHQ7IE1BUkdJTi1MRUZUOiAwaW47IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsg TUFSR0lOLVJJR0hUOiAwLjI1aW47IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdp bmRvd3RleHQgMS41cHQgc29saWQiPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJCT1JERVItUklHSFQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25l OyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgQk9SREVSLUxFRlQ6IG1l ZGl1bSBub25lOyBESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1S SUdIVDogMC4yNWluOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9u ZTsgVEVYVC1BTElHTjogcmlnaHQiPgo8Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQt U0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZPTlQtRkFNSUxZOiBBcmlhbCI+M188L3NwYW4+ PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZB TUlMWTogQXJpYWwiPiDU3skgMTg14yDIx+HU7c4g0sftzyDIx+HN7CDH4cfm4SDH4ePMx+bRySDH 4cvH5O3JINrjx9HJIMflx+HsPHNwYW4+Jm5ic3A7IDwvc3Bhbj7ayMfR5SDa5CAz5ObjIObVx+Hl IObb0d3JINjax+M8c3Bhbj4mbmJzcDsgPC9zcGFuPuYyzePH4yDm49jIziDmyOHf5uQg5u3mzM8g x+3WxyDU3srt5CDk3dMgx+Hj08fNyTxzcGFuPiZuYnNwOyA8L3NwYW4+4+Pf5CDW4+XjINrh7CDI 2tYgPC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjog cnRsOyBURVhULUlOREVOVDogLTAuMjVpbjsgTUFSR0lOLVJJR0hUOiAwLjVpbjsgVEVYVC1BTElH TjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBD T0xPUjogIzMzNjZmZjsgRk9OVC1GQU1JTFk6IEFyaWFsIj7a0dYxMjo8L3NwYW4+PC9iPjxiPjxz cGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJp YWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lh Ij7U3skgMTAw4yDa4ewg1MfR2iDd7dXhIMfh0cbt0+wgytTY7cggz+3h5t/TPC9zcGFuPjwvc3Bh bj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRF TlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC41aW47IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48 c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFy aWFsIj7h4cjt2iDU3skg3+HlxyDa4ewg3e3V4SDH4dHG7dPsINXH3ewgODXjINrIx9HlINrkIDLk 5uMg5jPR08jU5CDmzePH4yDm49jIziDIx+HP1CDmx+HK4e3d5uQg5sfhyuHt3dLt5uQgyMfhz+bR IMfh0cfI2iDmyOXHIM/t3+bRx8og5tTIx8jt3yDH4ebj7crH4SDa48fRySDfyO3RySDm48/O4SDU 7d8g0+HH4eMg5sfT2sk8c3Bhbj4mbmJzcDsgPC9zcGFuPsfh09rRINHHxtogMTQ1x+HdIMzk7eUg 49XR7CA8L3NwYW4+PC9iPjwvcD4KCjxkaXYgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5v bmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogd2luZG93dGV4dCAxLjVwdCBzb2xp ZDsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAxcHQ7IE1BUkdJTi1MRUZUOiAw aW47IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgTUFSR0lOLVJJR0hUOiAwLjI1aW47IFBBRERJ TkctVE9QOiAxcHQ7IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgoKPHAg ZGlyPSJydGwiIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hU OiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElO Ry1CT1RUT006IDBpbjsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBESVJFQ1RJT046IHJ0bDsg VEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC4yNWluOyBQQURESU5HLVRPUDog MGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsgVEVYVC1BTElHTjogcmlnaHQiPgo8Yj48 c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+2tHWMTM6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1T QSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4gPHNwYW4gc3R5 bGU9IkNPTE9SOiBmdWNoc2lhIj7U3skgyOPP7eTK7CA8c3Bhbj4mbmJzcDs8L3NwYW4+x+Hj0c3h ySDH4dPHz9PJPC9zcGFuPjxzcGFuPiZuYnNwOyA8L3NwYW4+x8zjx+HsIMfh3u3j5SA1MjHH4d0g zOTt5SDj1dHsIOY4MDDM5O3lIOPV0ew8c3Bhbj4mbmJzcDsgPC9zcGFuPubQ4d8g2uHsIDEw0+Tm x8ogyuPjIM/d2iAyOcfh3SDmNjUwzOTt5SDmx9TK0cffIMfh5MfP7CA0MDAwx+HH3SDm1OXR7CAx MzA1zOTt5SDj1dHsIObK5N7VIMjazyDH0cfI2iDT5ObHyiDH4ewgx+HsIDEyMTDM5O3lIOPV0ew8 c3Bhbj4mbmJzcDsgPC9zcGFuPuPY4ebIIMfm3dEgNDXH4d0gzOTt5SDj1dHsIDwvc3Bhbj48L2I+ PC9wPgo8L2Rpdj4KPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRF TlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdIVDogMC41aW47IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48 c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+2tHWMTQ6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1T QSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJz cDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+1Mfh7eUg3uPJIOPkIMfh0eba ySDmx+Hlz+bBIMjH4dPHzeEgx+HU48fh7Twvc3Bhbj4gx+Hf7eHmIDQ1IOPK1NjIINPmyNEg4ebf 0yZuYnNwOyDIx+Hd0dQgy8fk7SDV3SDIzdEgyN7R7ckgx+HUx+Ht5SAxMjDjIOYyzc/t3uUgzuHd 7CDmx+PH4+0g4eUg48/O4SDOx9Ug3e3lxyAyIM3jx+Mg08jHzeUg5uPm4SDmzMfj2iDm38fdytHt xyDm5Nnt3eUgzM/HIMrmzM8gx+HV5tEgx+HOx9XJIMjH4dTH4e3JIDwvc3Bhbj48L2I+PC9wPgoK PGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGlu OyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9U VE9NOiAxcHQ7IE1BUkdJTi1MRUZUOiAwaW47IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgTUFS R0lOLVJJR0hUOiAwLjI1aW47IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRv d3RleHQgMS41cHQgc29saWQiPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJCT1JERVItUklHSFQ6IG1l ZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQ QURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgQk9SREVSLUxFRlQ6IG1lZGl1 bSBub25lOyBESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJTi1SSUdI VDogMC4yNWluOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZTsg VEVYVC1BTElHTjogcmlnaHQiPgo8Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7H4dPa0SDH4ePY4ebIIDQ1MMfh3SDM5O3lIOPV 0ewgPC9zcGFuPjwvYj48L3A+PC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48 Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENP TE9SOiByZWQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+x+TK5dIgx+Hd0dXJIOPM4+ba ySDH0cfW7CDjyuPt0skg09rRIMfh48rRIO3Iz8cg4+QgNjUwzCDNyuwgMzIwMMwgyMfh2sfU0SDj 5CDR49bH5CDmx+Hex+XR5SDH4czP7c/JIObH4dTR5t4g5tTI0ccg5sjk5ccg5sfT48fa7eHtySDm yM/RPC9mb250Pjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQi PjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZv bnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJzcDs8L2ZvbnQ+PC9zcGFuPjwvcD4KPHAgc3R5 bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGI+ PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xP UjogIzMzNjZmZiI+x+Ha0dYxOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0i cnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48c3Bhbj4mbmJzcDsmbmJzcDsgPC9zcGFuPjxz cGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+3tjaySDH0dYgyNPa0SDj29HsINPa0SDH4ePK0SA2 NTDM5O3lIOPV0ewg3d7YIDwvc3Bhbj48L3NwYW4+PC9iPjwvZm9udD48L3A+Cgo8cCBzdHlsZT0i TUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHls ZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPsjH4drH1NEg 4+Qg0ePWx+Qg48/t5Mkgx+HR5tbJPHNwYW4+Jm5ic3A7IDwvc3Bhbj7H4c7W0cfBIMjM5sfRIOPP 7eTJIMfh7cfT4+3kIOPTx83JIDIzMuMg487V5eUg09/kINrHxuHsIDTHz+bH0SDa7CDUx9HaINHG 7dPsIDEy4yDm48cg7ePt0uXHIMft1scg4e3TIOHlxyDjz+Ug0uPk7eUg4eHI5MfBIObmyOXHIOPR x93eIN/m48jm5M8g5s7H4dXlIMfhy+PkIObH5MrZ0SDH7dbHIMfkIOXkx98gyt3H5tYg3ewgx+HT 2tEgPC9mb250Pjwvc3Bhbj48L2I+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRp dW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDEuNXB0 IHNvbGlkOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVSLUxF RlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMXB0OyBCT1JERVItQk9UVE9NOiB3aW5kb3d0 ZXh0IDEuNXB0IHNvbGlkIj4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBB RERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDog MGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVG VDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBu b25lIj48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBk aXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmYiPsfh2tHWMjo8 L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0la RTogMTBwdCI+PHNwYW4+Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGZ1 Y2hzaWEiPt3R1ckg4dnR5t0g5czRySDe2NrJIMfR1iDd1sfBIOHhyO3aIMjjz+3kySDH4d7k2NHJ INTR3trh7CDkx9Xtyu3kPC9zcGFuPjxzcGFuPiZuYnNwOyA8L3NwYW4+49PHzckgMTcw4yDMx+XS ySDh4cjkx8Eg38fj4ckgx+Hj0cfd3iDH4ePtx+Ugx+Hf5dHIx8Eg5tPa0SDH4ePK0SAyODDM5O3l IOPV0ew8L3NwYW4+PC9iPjwvZm9udD48L3A+CjwvZGl2Pgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4g MGluIDBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48Yj48c3BhbiBsYW5nPSJBUi1F RyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmIj7H4drR 1jM6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05U LVNJWkU6IDEwcHQiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9IkNPTE9S OiBmdWNoc2lhIj7h0cfbyOwgx+HK4+3SIN7Y2skgx9HWINrh7CDH4dTH0dogx+HRxu3T7CDIx+HK zOPaIMfhzsfj0zwvc3Bhbj48L3NwYW4+PC9iPjwvZm9udD48L3A+Cgo8cCBzdHlsZT0iTUFSR0lO OiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9O VC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPuHhyO3aIMfR1iDIx+He x+XR5SDH4czP7c/JINPf5CDax8bh7CDj5NjeySDH4ePTysvj0e3kINrh7CDH4dTH0dogx+HRxu3T 7CDH4eHsINrh7CDkx9XtyuUgzewgx+Hj1dHH5u3JIMfh48rd0dog4+Qg1MfR2iDH4crT2u3kIOPm 3tog0cfe7CDMz8fHx8fHxyDj08fNySAyODDjIObK4yDH08rO0cfMINHO1ckg48jH5OwgyM/R5uMg 5sfR1uwg5jPHz+bH0SDT2tEgx+Hj2OHmyCDh4ePK0SAzMjAwzOTt5SDj1dHsPC9mb250Pjwvc3Bh bj48L2I+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElO Ry1SSUdIVDogMGluOyBCT1JERVItVE9QOiB3aW5kb3d0ZXh0IDEuNXB0IHNvbGlkOyBQQURESU5H LUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25l OyBQQURESU5HLVRPUDogMXB0OyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDEuNXB0IHNvbGlk Ij4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBp bjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJP VFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7 IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lIj48Zm9udCBmYWNl PSJUaW1lcyBOZXcgUm9tYW4iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmYiPsfh2tHWIDQ6PHNwYW4+Jm5ic3A7IDwv c3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6IGZ1Y2hzaWEiPsfR1iDIx+HU0ebeIOPK4+3SySDMz8fHx8cg x+PH4yDjz+3kyuwgPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0 eWxlPSJGT05ULVNJWkU6IDEwcHQiPjwvc3Bhbj48L2I+PC9mb250PjwvcD4KCjxwIHN0eWxlPSJC T1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6 IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFS R0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDog MGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRp cj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9t YW4iPuHhyO3aIN7Y2skgx9HWIOPTx83K5cc8c3Bhbj4mbmJzcDsgPC9zcGFuPjg2NOMgx+PH4yDj z+3kyuwgze3LIMfh3e3mIMfh0cfG2iDmx+Hlz+bBIMjH4ePk2N7JIMfhzsfj08kgx9HWINrjx9HH yiDIz9Hm4yDmx9HW7CDmM8fP5sfRIOPK39HRyTxzcGFuPiZuYnNwOyA8L3NwYW4+49jh5sggNTAw x+HdIMzk7eUg49XR7CA8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBzdHlsZT0iTUFS R0lOOiAwaW4gMGluIDBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48Yj48c3BhbiBs YW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2 NmZmIj7H4drR1jU6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0 eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxzcGFuPiZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9IkNP TE9SOiBmdWNoc2lhIj48c3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+x9HWIOHe2Mkg2uHs IMffyNEg5sfU5dEg4+3Px+QgyNTI0ccg5MfV7ckgyM3R7CDb0cjsIOba4ewgx+HjytHmPC9zcGFu Pjwvc3Bhbj48L2I+PC9mb250PjwvcD4KCjxkaXYgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVt IG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJ TkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMXB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5v bmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29s aWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDog MGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkct Qk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9u ZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFu IGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFj ZT0iVGltZXMgTmV3IFJvbWFuIj7h4cjt2iDe2NrJIMfR1iDI1MjRxyA8L2ZvbnQ+PC9zcGFuPjwv Yj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+yOPm3togx9/L0SDj5CDj48rH0iDK1eHNIOHfx93JIMfh49TH 0e3aIMfhx9PKy+PH0e3JINDHyiDRyM3tySDax+HtySDMz8fHx8fHx8cg5sre2iDm09gmbmJzcDsg x9/I0SDKzMfRIN7Y2iDb7cfRIMfh0+3H0cfKIObK2OEg2uHsIMfh4+3Px+Qg5uPK0eYgx+HH5N3H 3iDjyMfU0ck8c3Bhbj4mbmJzcDsgPC9zcGFuPuPTx83K5ccgNTcw4yDmx+HT2tEgx+Hj2OHmyCDh 4ePK0SAzMDAwzOTt5SDj1dHsIDwvc3Bhbj48L2I+PC9wPgo8L2Rpdj4KPHAgc3R5bGU9Ik1BUkdJ TjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBkaXI9InJ0bCIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha0dY2 Ojwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+ PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7H0dYg48rj7dLlPHNwYW4+Jm5ic3A7IDwvc3Bh bj4zMTXjINrh7CDH4dTH0dogx+HRxu3T7CDI48/t5MkgyM/RPC9zcGFuPjwvc3Bhbj48L2I+PC9w PgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBk aXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7jz+3k ySDIz9Eg4eXHIOPTyt7I4SDIx+XRIObH4cfR1iDj4+3SySDUx9HaINHG7dPsIMfRyNogzcfRx8og 5uPkIMfhzuHdIOPk2N7JIM7W0cfBIObH09rJIMvH5Owg3tjaySDj5CDH4eTH1e3JIO3d1eHl48cg 4+PRLiDjzd3m0ckg5szH5dLJIOHhyOTHwSDfx+PhySDH4ePRx93eIDwvc3Bhbj48L2I+PC9wPgoK PHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBkaXI9 InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7Ix+HRztXJ IMjP0ebjIObH0dbsIObL4cfLIOPK39HRIMrH0e3OIMfh0c7VyTYvMjAwOCDm49PHzckgx+HH0dbs IDE4MOMg5sfh48rf0dExODYuNeMg4+XhySDT5MkgyOTHwSDm0+TJIMrU2O3IIMfh49jh5sggMTIw x+HdIMzk7eUg49XR7CDfx9Qg5trh7eXHIDU3x+HdIMzk7eUg49XR7DxzcGFuPiZuYnNwOyA8L3Nw YW4+4eHM5cfSIMfIys/Hwccg4+Qg0+TlIDIwMTAgx+HsINPk5SAyMDE2PC9zcGFuPjwvYj48c3Bh biBkaXI9Imx0ciI+PC9zcGFuPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpF OiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuIGRpcj0ibHRyIj48L3NwYW4+IDxzcGFu IGRpcj0icnRsIj48L3NwYW4+PHNwYW4gZGlyPSJydGwiPjxzcGFuIGRpcj0icnRsIj48L3NwYW4+ PHNwYW4+Jm5ic3A7PC9zcGFuPjwvc3Bhbj48L3NwYW4+PC9iPjxzcGFuIGRpcj0ibHRyIj48L3Nw YW4+PGI+PHNwYW4gc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48 c3BhbiBkaXI9Imx0ciI+PC9zcGFuPjxzcGFuPiZuYnNwOyZuYnNwOzwvc3Bhbj48c3BhbiBkaXI9 InJ0bCI+PC9zcGFuPjxzcGFuIGRpcj0icnRsIj48c3BhbiBkaXI9InJ0bCI+PC9zcGFuPjxzcGFu PiZuYnNwOzwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvYj48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9t YW4iPjxiPjxzcGFuIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48c3Bhbj4mbmJz cDs8L3NwYW4+PC9zcGFuPjwvYj48Yj48c3BhbiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05U LUZBTUlMWTogQXJpYWwiPjwvc3Bhbj48L2I+PC9mb250PjwvcD4KCjxkaXYgc3R5bGU9IkJPUkRF Ui1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVk aXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMXB0OyBCT1JERVIt TEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRv d3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsg UEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZU OiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1M RUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVt IG5vbmUiPjxiPjxzcGFuIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRpbWVz IE5ldyBSb21hbiI+Jm5ic3A7PC9mb250Pjwvc3Bhbj48L2I+PC9wPgo8L2Rpdj4KPHAgc3R5bGU9 Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+PGI+PHNw YW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjog IzMzNjZmZiI+x+Ha0dY3Ojwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRs IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2siPjxzcGFuPiZuYnNwOyZuYnNw OyA8L3NwYW4+PC9zcGFuPjwvYj48L2ZvbnQ+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRs IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogZnVjaHNpYTsgRk9OVC1GQU1JTFk6IFRh aG9tYSI+w9HWIMjH4ePRzCDK1eHNIOHF3sfjySDjzsjSIMfmIObNz8fKINPf5O3JIMjT2tEg4d7Y yTwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPjwvc3Bhbj48L2I+ PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdI VDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJ TkctQk9UVE9NOiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBp bjsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xpZCI+CjxwIHN0eWxlPSJCT1JE RVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1l ZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lO OiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGlu OyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0i cnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBU YWhvbWEiPt7Y2skgw9HWIMjH4ePRzCDj08fNySAxNzcg48rRINrh7CDUx9HaINHG7dPsPHNwYW4+ Jm5ic3A7IDwvc3Bhbj7K1eHNIOHI5MfBIOPOyNIg5ubNz8fKINPf5O3JPC9zcGFuPjwvYj48L3A+ CjwvZGl2Pgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVIt RUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogIzMzNjZmZjsgRk9O VC1GQU1JTFk6IFRhaG9tYSI+x+Ha0dY4Ojwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUci IGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFN SUxZOiBUYWhvbWEiPiA8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIg c3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGZ1Y2hzaWE7IEZPTlQtRkFNSUxZOiBUYWhv bWEiPjxzcGFuPiZuYnNwOyZuYnNwOzwvc3Bhbj7hx9XNx8ggx+Hj1MfR7dogx+HKzMfR7ck8c3Bh bj4mbmJzcDsgPC9zcGFuPsfkyuXSIMfh3dHVySDT2tEgx+HjytE4MDA8L3NwYW4+PC9iPjxiPjxz cGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6 IGJsYWNrOyBGT05ULUZBTUlMWTogVGFob21hIj48L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJN QVJHSU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+zCDH 0dYyMzLjIMjH4cfT48fa7eHtySA8L3NwYW4+PC9iPjwvcD4KPHAgc3R5bGU9Ik1BUkdJTjogMGlu IDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogVGFob21hIj7h4cjt2iDH0dYgytXh zSDhx97H48kg49TR5togyszH0ewgyMfhx9Pjx9rt4e3JIDwvc3Bhbj48L2I+PC9wPgo8cCBzdHls ZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBz dHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEi PiZuYnNwOzwvc3Bhbj48L2I+PC9wPgo8ZGl2IHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBu b25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5H LUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25l OyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0IDEuNXB0IHNvbGlk Ij4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBp bjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJP VFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7 IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lIj48Yj48c3BhbiBs YW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibGFj azsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+5sfR1iDHztHsIN7Y2skgw9HWIOPTx83K5ccgMjMwIOPK 0SDIx+Ha0e3U7ckgyMzmx9Eg49PMzyDH4dTtziDN0+QgytXhzSDhyOTHwSDjzsjSICZuYnNwO+bm zc/HyiDT3+TtySA8L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAw aW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6 IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZBTUlMWTogVGFob21hIj7H4drR1jk6PHNwYW4+ Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVH IiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGZ1Y2hzaWE7IEZPTlQt RkFNSUxZOiBUYWhvbWEiPsfR1iAxNTDjIMjH4ePkx+3dIMjH4cfT48fa7eHtyTwvc3Bhbj48L2I+ PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBD T0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPiA8L3NwYW4+PC9iPjwvcD4KCjxkaXYg c3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9S REVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTog MXB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1C T1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBt ZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsg UEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAw cHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJP VFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogVGFob21hIj7h4cjt 2iDH0dYg48jH5OwgyMfh4+TH7d0g38fj4ckgx+Hj0cfd3iDH0dYgyt7T7eMg09rR5ccgNjDH4d0g zOTt5SDj1dHsIN3e2CDhxyDb7dE8L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJH SU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjMzM2NmZmOyBGT05ULUZBTUlMWTogVGFob21hIj7H4drR 1jEwOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9O VC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPjxzcGFuPiZu YnNwOyZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJy dGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBmdWNoc2lhOyBGT05ULUZBTUlMWTog VGFob21hIj7H0dYgyMfN0+Qg4+TH2N4gyMjk5ccgPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJB Ui1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibGFjazsgRk9O VC1GQU1JTFk6IFRhaG9tYSI+PC9zcGFuPjwvYj48L3A+Cgo8ZGl2IHN0eWxlPSJCT1JERVItUklH SFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBu b25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVSLUxFRlQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0 IDEuNXB0IHNvbGlkIj4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJ TkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGlu OyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDog bWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25l Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+4eHI7dogx9HWIMjI5OXHIOPTx83K 5ccgNDgy4yDIx93W4SDH4ePkx9jeINPa0SDH4ePK0SA3MDAwzCDh4ePK0Twvc3Bhbj48L2I+PC9w Pgo8L2Rpdj4KPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFS LUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICMzMzY2ZmY7IEZP TlQtRkFNSUxZOiBUYWhvbWEiPsfh2tHWMTE6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1F RyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibGFjazsgRk9OVC1G QU1JTFk6IFRhaG9tYSI+PHNwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9i PjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsg Q09MT1I6IGZ1Y2hzaWE7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPsfR1iDh4cjt2iDa4ewg2NHt3iDH 09/kz9HtySDH4dXN0cfm7DxzcGFuPiZuYnNwOyA8L3NwYW4+z8fO4SDf5uPI5uTPPC9zcGFuPjwv Yj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+PC9zcGFuPjwvYj48L3A+Cgo8cCBz dHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRs IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhv bWEiPuHhyO3aIMfR1iDj08fNyuXHIN3Px+Qg38fj4SDa4ewg2NHt3iDH09/kz9HtySDH4dXN0cfm 7CDH4d/t4eY1ODxzcGFuPiZuYnNwOyA8L3NwYW4+z8fO4SDf5uPI5uTPIOPTx83K5ccg3c/H5CDH 7CA0MjAwIOPK0SDH4dPa0SDUx+PhIM7YIMfh3+XRyMfBIObH4ePtx8k8L3NwYW4+PC9iPjwvcD4K CjxkaXYgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBp bjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJP VFRPTTogMXB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJP UkRFUi1CT1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJ R0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0g bm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGlu IDBpbiAwcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9S REVSLUJPVFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIg c3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGJsYWNrOyBGT05ULUZBTUlMWTogVGFob21h Ij7H4dPa0SDH4ePY4ebIIDQ1MMfh3SDM5O3lIOPV0ewgPC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8 cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCAxNzFwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUci IGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFN SUxZOiBUYWhvbWEiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwv c3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6IHJlZDsgRk9OVC1GQU1JTFk6IFRhaG9tYSI+3dHVySDh5CDK yt/R0SDH0dYgyszH0e3JyMzmx9Egx+HMx+PaySDH4cfj0e3f7ck8L3NwYW4+PC9iPjwvcD4KCjxk aXYgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsg Qk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRP TTogMXB0OyBNQVJHSU4tTEVGVDogMmluOyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IE1BUkdJ Ti1SSUdIVDogMGluOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3aW5kb3d0ZXh0 IDEuNXB0IHNvbGlkIj4KCjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURE SU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBp bjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9u ZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBDT0xPUjogYmxhY2s7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPuHhyO3aIMfR1iDh3tjJIMrMx9Ht ySDIx+Hex+XRySDH4czP7c/JIMjH4crM49ogx+HOx+PTIMjM5sfRIMfhzMfj2skgx+HH49Ht3+3J IOPK4+3SySDMz8cg4+be2iDKzMfR7CDRx8baIOPTx83K5ccgODDH4d0g48rRIOPRyNog7ebMzyDP 0cfTySDMz+bsIOPkINTR38kg2sfh4+3JIOHH3sfjySDj5uEgyszH0ewgx+HT2tEgx+Hj2OHmyCDh 4ePK0SDRx8baIN/m5OXHIMrMx9HsIDQwMDDM5O3lIOPV0ewg3d7YIObt5szPIN7Y2iDH0cfW7CDH ztHsIMjT5tHtxyDm3tjRIObH4cjN0e3kIObH4cfjx9HHyiDmx+HT2ubP7ck8L3NwYW4+PC9iPjxi PjxzcGFuIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibGFjazsgRk9OVC1GQU1JTFk6 IFRhaG9tYSI+PC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGlu IDBwdCAxLjc1aW4iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQt U0laRTogMTBwdDsgQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBUYWhvbWEiPuHRx9vI7CDU3t4g 5t3h4SDex+Tm5CDMz+3PIMjPx+3J4+QgNjAwzOTt5TxzcGFuPiZuYnNwOyA8L3NwYW4+yMfh1NHm 3iDm49XRIMfhzM/tz8kg5uPP7eTJIOTV0SDmx+HKzOPaIObH4ePe2OMgPHNwYW4+Jm5ic3A7PC9z cGFuPubU7dHHyubkIMjj08fNx8og487K4d3JPHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9i PjwvcD4KCjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDog MjguMTVwdDsgVEVYVC1BTElHTjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0i Rk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogI2ZmNjYwMDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7H4drR 1iAxOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEw cHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48 L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQt RkFNSUxZOiBBcmlhbCI+1N7JIMjT2tE8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBz dHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+4d7YyTwvc3Bhbj48L2I+PGI+ PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJDT0xPUjogYmx1ZTsgRk9OVC1GQU1JTFk6IEFyaWFs Ij4gNjAwzOTt5SDIx+HU0ebeIMjM5sfRIOTHz+wg5eHt5sjh7dM8L3NwYW4+PC9iPjxzcGFuIGRp cj0ibHRyIj48L3NwYW4+PGI+PHNwYW4gZGlyPSJsdHIiIHN0eWxlPSJGT05ULUZBTUlMWTogQXJp YWwiPjxzcGFuIGRpcj0ibHRyIj48L3NwYW4+PHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9i PjxiPjxzcGFuIGRpcj0ibHRyIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTog QXJpYWwiPjxzcGFuPiZuYnNwOzwvc3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNB IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjwvc3Bhbj48L2I+ PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hUOiAy OC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+HU3uUgyMfT38fkIOPIx9HfIMjM 5sfRIOTHz+wg5eHt5sjh7dMgx+HMz+3PIObkx9XtySDMz+3PySDK1NjtyCDT5sjRIOHm39Mg4eMg ytPK2uPhINrh7CDNz+3eySDIx+HP5tEgx+HH0dbsIOPTx83JIDEzMOMg2sjH0eUg2uQgMuTm4yDm M9HTyNTkIObN48fjIObj2MjOIObI4d/m5CDmx+HT2tEgx+Hj2OHmyCDh5CDtyt/R0SDd3tggNjAw zOTt5SDj1dHsIDwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046 IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4g bGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05U LUZBTUlMWTogQXJpYWwiPsfh2tHWMjo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBz dHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZu YnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkNPTE9S OiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPtTeySDPx87hIN/m48jm5M8g5sfP7CDH4dHI7dog yMfh1NHm3jwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6 IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIg c3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046 IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9O VC1GQU1JTFk6IEFyaWFsIj7H4dTe5SDI4+be2iDjyuPt0iDIzObH0SDkx8/sIOXh7ebI4e3TIMfh zM/tzzwvc3Bhbj48L2I+PHNwYW4gZGlyPSJsdHIiPjwvc3Bhbj48Yj48c3BhbiBsYW5nPSJBUi1T QSIgZGlyPSJsdHIiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ PHNwYW4gZGlyPSJsdHIiPjwvc3Bhbj4gPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIg c3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7O4d0g4cThxMkgx+HU 0ebeIObH7dbHIM/HzuEg3+bjyObkzyDj38rj4SDH4c7P48fKIObH4ePRx93eIOPTx83JIDEzNOMg 2sjH0eUg2uQgM+Tm4yDmMtHTyNTkIDLmzePH4yDm49jIziDmyOHf5uQgx+HT2tEgMTIwMMzk7eUg 49XR7CA8L3NwYW4+PC9iPjwvcD4KCjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7 IE1BUkdJTi1SSUdIVDogMjguMTVwdDsgVEVYVC1BTElHTjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9 IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogI2ZmNjYwMDsgRk9OVC1GQU1J TFk6IEFyaWFsIj7H4drR1jM6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJzcDsmbmJzcDsg PC9zcGFuPjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJDT0xPUjogYmx1 ZTsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3skyMDDjIN7H5ObkIMzP7c8gyNTH0dogx+HL5tHJIMfh 0cbt0+wgyOPV0SDH4czP7c/JPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9 IkZPTlQtRkFNSUxZOiBBcmlhbCI+IDwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxl PSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdo dCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFN SUxZOiBBcmlhbCI+4eHH7czH0SDU3uUgyNrjx9HHyiDH4dTR38kgx+HT2ubP7ckgyNTH0dogx+HL 5tHJIMfh48fZySDm5ewg7cfhz+bRIMfhysfk7CDj08fNySAyMDDjINrIx9HlINrkIDPk5uMg5jTR 08jU5CDmM83jx+Mg5jLI4d/m5CDm7ebMzyDb0d3JIOPH08rRIObjytTYyOUgyMfR3+3lIObI5tHT 4e3kPHNwYW4+Jm5ic3A7IDwvc3Bhbj7m49jh5sgg3e3lxyAxNzUwzOTt5SDj1dHsIDwvc3Bhbj48 L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hU OiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwiPsfh 2tHWNDo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAx MHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48 Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJp YWwiPtTeySDRx8baySAxODDjIMfh3e3mINrh7CDkx8/sIMfh2O3Rx+Qg48jH1NHJIMjj1dEgx+HM z+3PyTwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEw cHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5 bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJp Z2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1G QU1JTFk6IEFyaWFsIj7h4cftzMfRIN7H5ObkIMzP7c8g1N7JIMjTx+TKIN3Hyu3jxyDH4d3t5iDH 38vRIOPkINHHxtog2uHsIOTHz+wgx+HY7dHH5CDI1MfR2iDHzePPIN3Ex88gx+HRxu3T7CDj08fN ySAxODDjIObH4dXH3ewgMTYw4yDayMfR5SDa5CAy5ObjIOYz0dPI1OQg5s3jx+Mg5uPYyM4gytTY 7cgg0+3Rx+Pt3yDf4eXHIObf0cfk7dQgyMfh097dIM/HzuHlxyDIx+Tm5cfKIMjH4c/m0SDH4dHH yNog5sfh2t7H0TXHz+bH0SDmx+HT2tEgx+Hj2OHmyCAyMjUwzOTt5SDj1dHsPC9zcGFuPjwvYj48 L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4 LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha0dY1 Ojwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9i PjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBB cmlhbCI+1N7JIDIyMOMgyNrjx9HHyiDH4ePP3drtySDH48fjINPtyuwg08rH0dI8L3NwYW4+PC9i PjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlM WTogQXJpYWwiPjwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046 IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4g bGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ 4eHH7czH0SDex+Tm5CDMz+3PIMfjx+Mg0+3K7CDTysfR0iDP5tE5IMgy49XazyDayMfR5SDa5CAz 5ObjIOYz0dPI1OQg5s3jx+Mg5uPYyM4g5sjh3+bkIMrU2O3IIMjH0d/t5SDm0+3Rx+Pt3yDa48fR x8og1O3fIMzPxyDH4d3t5iDRx8baIMfh09rRIMfh49jh5sggMjUwMMzk7eUg49XR7Dwvc3Bhbj48 L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hU OiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwiPsfh 2tHWNjo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAx MHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PC9zcGFu PjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlM WTogQXJpYWwiPtTeySAxNTDjIM7h3SDkx8/sIMfh5NXRIOHM4+3aIMfhx9vRx9YgyOPV0SDH4czP 7c/JPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtRkFNSUxZOiBB cmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRs OyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5n PSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7h4cft zMfRIN7H5ObkIMzP7c8g1N7JIMjUx9HaINrh7CDd5ePJIN/H4+Egz+bRIMfm4SDK1eHN0yDT3+Qg 497RIMfPx9HsIOHM4+3aIMfhx9vRx9Yg2sjH0eUg2uQgM+Tm4yDmMtHTyNTkIOYyzePH4yDm49jI ziDmyOHf5uQgytTY7cgg0+3Rx+Pt3yDP5cfkx8ogzc/ty8kgx+HT2tEgx+Hj2OHmyDMwMDDM5O3l IOPV0ewgPC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRs OyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5n PSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFN SUxZOiBBcmlhbCI+x+Ha0dY3Ojwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7Jm5ic3A7 IDwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGJsdWUiPtTeySDHz8fR7CDI4+be2iDN7ebsIMzP xyDa4ewg4+3Px+QgytHt490g2uHsINTH0dogx+Hk0uXJIMfh0cbt0+w8L3NwYW4+PC9zcGFuPjwv Yj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6 IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3skg3sfk5uQgzM/tzyDIx+HP 5tEgx+HKx+TsIN/j3tEg1NHfySDHz8fR7CDj08fNySAxODDjINrIx9HlINrkIDPb0d0g5jPR08jU 5CDmzePH4yDm49jIziDK1NjtyCDI4cfYIOPH0sft3+Yg5s3jx+Mg5uPYyM4g0+3Rx+Pt3yDH4dPa 0SDH4ePY4ebIIDM1MDDM5O3lIOPV0ewgPC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5 bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJp Z2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6 ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha0dY4Ojwvc3Bhbj48L2I+PGI+PHNwYW4g bGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ PHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHls ZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+1N7JIM/m0SDH0dbsMjIw4yDI3+Ht 5SDH4cjkx8ogytXhzSDhzOPt2iDH4cfb0cfWPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1T QSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4gPC9zcGFuPjwv Yj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6 IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7h4cftzMfRIN7H5ObkIMzP7c8g yN/h7eUgx+HI5MfKIMfR1uwg49HK3dogyOPPzuEgzsfVINrIx9HlINrkIDXb0d0g5jPR08jU5CDm Ms3jx+Mg5uPYyM4g5sjh3+bkIMrU2O3IINPt0cfj7d8g5srV4c0g09/k7CDH5iDHz8fR7CDH5iDN 1sfk5SDhx+TlxyDH4cfkIM3Wx+TlIMfh09rRNjAwMMzk7eUg49XR7CA8L3NwYW4+PC9iPjwvcD4K CjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDogMjguMTVw dDsgVEVYVC1BTElHTjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBDT0xPUjogI2ZmNjYwMDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7H4drR1jk6PC9z cGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtRkFNSUxZOiBBcmlhbCI+ IDxzcGFuIHN0eWxlPSJDT0xPUjogYmx1ZSI+3dHVySDU3uUg3sfk5uQgzM/tzyDI7eQg2sjH0yDm 49/R4yDayO3PPC9zcGFuPjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBk aXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRF WFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTog MTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3skg49PHzckgMjMw4yDI48/t5Mkg5NXRIMfh4+TY 3skgx+HTx8/TySDayMfR5SDa5CAz5ObjIOY00dPI1OQg5jLN48fjIObj2MjOIObI4d/m5CDIx+HP 5tEgx+HRx8jaIMrU2O3IIMjhx9gg2sfP7CDmx+HN48fjIObH4ePYyM4g0+3Rx+Pt3yDmytXhzSDT 3+Qgx+Yg49/KyCDj2OHmyCAxODAwzOTt5SDj1dHsPC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0 bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJ R046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsg Q09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha0dYxMDo8L3NwYW4+PC9iPjxi PjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTog QXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5n PSJBUi1TQSIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPtTeySDI09rR IOPb0ewgx9HW7CDIzc/t3skgzuHdIM3P7d7JIMfh2N3hIMja48fRySDMz+3PyTwvc3Bhbj48L2I+ PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZ OiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjog cnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBs YW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U 3skg3sfk5uQgzM/tzyDO4d0gzc/t3skgx+HY3eEgyOPP7eTJIOTV0SDH0dbsIMjNz+3eySDO4d3t 5SDj08fNySAxMzDjINrIx9HlINrkIDXb0d0g5tXH4eUg5jLN48fjIObj2MjOIObI4d/m5CDm7ebM zyDM0cfMIM7H1SDI5cc8c3Bhbj4mbmJzcDsgPC9zcGFuPsfh09rRIN3e2CAyMDAwzOTt5SDj1dHs IDwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFS R0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVIt U0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTog QXJpYWwiPsfh2tHWMTE6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48c3Bhbj4mbmJzcDsmbmJzcDsgPC9z cGFuPjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJDT0xPUjogYmx1ZTsg Rk9OVC1GQU1JTFk6IEFyaWFsIj7U3skg3sfk5uQgzM/tzyAxNzXjIMjH4crH09rJIMjjz+3kySDk 1dE8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBGT05ULUZBTUlMWTogQXJpYWwiPjwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxl PSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdo dCI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFN SUxZOiBBcmlhbCI+4eHH7czH0SDU3skgyMfhz+bRIMfhzsfj0yDI2t7H0TExz+bRIMgy49XazyDa yMfR5SDa5CAz5ObjIOYz0dPI1OQg5jLN48fjIObj2MjOIObI4d/m5CDK1NjtyCDT7dHH4+3fIMfh 09rRIMfh49jh5sggMjUwMMzk7eUg49XR7CA8L3NwYW4+PC9iPjwvcD4KCjxwIGRpcj0icnRsIiBz dHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDogMjguMTVwdDsgVEVYVC1BTElHTjog cmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xP UjogI2ZmNjYwMDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7H4drR1jEyOjwvc3Bhbj48L2I+PGI+PHNw YW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlh bCI+PHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBz dHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+1N7JIDIwMOMgyMzmx9Egx+HT 0cfMIM7h3SDH4ebkz9Eg4cfkzzwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8 cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7 IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3uUg3sfk5uQgzM/tzyDO4d0gx+Hm5M/RIOHH 5M8gyOPP7eTJIOTV0SDH4ePk2N7JIMfhy8fj5Mk8c3Bhbj4mbmJzcDsgPC9zcGFuPsjH4c/m0SDH 4dPHz9Mg5sfh2t7H0TjHz+bH0SDI49XazyDayMfR5SDa5CAz5ObjIOY00dPI1OQg5jLN48fjIObj 2MjOIObI4d/m5CDa4ewgx+HjzcfRySDmyOXHIOTMx9HJIObTyMffySDm3+XRyMfBIOPm3tog0cfe 7CDMz8cg5uXHz+wg5sfh09rRIMfh49jh5sggMjUwMMzk7eUg49XR7CA8L3NwYW4+PC9iPjwvcD4K CjxwIGRpcj0icnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDogMjguMTVw dDsgVEVYVC1BTElHTjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBDT0xPUjogI2ZmNjYwMDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7H4drR1jEzOjwv c3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZP TlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9iPjxiPjxzcGFu IGxhbmc9IkFSLVNBIiBzdHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+4dHH 28jsIMfh09/kIN7H5ObkIMzP7c8gyOPm3tog48rj7dIg5tHH3uwgyOPP7eTJIOTV0Twvc3Bhbj48 L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFN SUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElP TjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3Bh biBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFs Ij7U3skg4eHH7czH0SDIx+HT3cfRx8og4+be2iDj4+3SIOTH1e3JIMjI0cwg3c7jIMjH4c/m0SDH 4TMg5sfh2t7H0TExz+bRIMgy49XazyDj08fNySAxNzXjINrIx9HlINrkIDPk5uMg5jPR08jU5CDm Ms3jx+Mg5uPYyM4g5jPI4d/m5CDK1NjtyCDT7dHH4+3fIObj08rm7e3kIMfh09rRIDMwMDDM5O3l IOPV0ewgPC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRs OyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5n PSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFN SUxZOiBBcmlhbCI+x+Ha0dYxNDo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHls ZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNw OyA8L3NwYW4+PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkNPTE9SOiBi bHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPtTeySDex+Tm5CDMz+3PIDIwMOMg5MfV7ckgyOPP7eTJ IOTV0Twvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIHN0eWxlPSJGT05ULVNJWkU6IDEw cHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5 bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJp Z2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1TQSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1G QU1JTFk6IEFyaWFsIj7h4cftzMfRINTeySDIx+HTx8jaySDI48/t5Mkg5NXRIM/m0SDKx+TsIObH 4drex9ExMc/m0SDIMuPV2s8g49PHzckgMjAw4yDayMfR5SDa5CAz5ObjIOYz0dPI1OQg5jLN48fj IObj2MjOIObI4d/m5CDK1NjtyCDT7dHH4+3fIObH4dPa0SDH4ePY4ebIIDMwMDDM5O3lIOPV0ewg PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJH SU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1T QSIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBB cmlhbCI+x+Ha0dYxNTo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9O VC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3Nw YW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBibHVlIj7h0cfbyOwgx+HK4+3SIObH4d3Ox+PJIObH4dPf 5CDI1N7eIObd4eEgyMfhyszj2iDH4c7H49M8L3NwYW4+IDwvc3Bhbj48L2I+PC9wPgoKPHAgZGly PSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgVEVYVC1JTkRFTlQ6IC0wLjI1aW47IE1BUkdJ Ti1SSUdIVDogNDYuMTVwdDsgVEVYVC1BTElHTjogcmlnaHQiPjxiPjxzcGFuIHN0eWxlPSJGT05U LVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPijD nSk8c3BhbiBzdHlsZT0iRk9OVDogN3B0ICYjMzk7VGltZXMgTmV3IFJvbWFuJiMzOTsiPiZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvc3Bhbj48L2I+ PHNwYW4gZGlyPSJydGwiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBzdHlsZT0iRk9OVC1TSVpFOiAx MHB0OyBDT0xPUjogYmx1ZTsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U3skg3cfO0ckg2uHsINTH0dog x+HM5uHdIMfh0cbt0+wgze3LIMfhyuPt0iDH4drH4ewgx+Hd7eYg2uHsIOPtz8fkIMfRx8jt4cc8 L3NwYW4+PC9iPjwvc3Bhbj48Yj48c3BhbiBkaXI9Imx0ciIgc3R5bGU9IkZPTlQtU0laRTogMTBw dDsgQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PC9zcGFuPjwvYj48L3A+Cgo8cCBk aXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4LjE1cHQ7IFRF WFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkZPTlQtU0laRTog MTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj7j08fNySAyMDDjINrIx9HlINrkIDPk5uMg5jPR08jU 5CDmMs3jx+Mg5uPYyM4g5sjh3+bkIOYyyOHf5uQgytTY7cg8c3Bhbj4mbmJzcDsgPC9zcGFuPt3H ztHH4dPa0SDH4ePY4ebIIDIwMDDM5O3lIOPV0ewgPC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0 bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBURVhULUlOREVOVDogLTAuMjVpbjsgTUFSR0lOLVJJ R0hUOiA0Ni4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCI+PHNwYW4+KMidKTxz cGFuIHN0eWxlPSJGT05UOiA3cHQgJiMzOTtUaW1lcyBOZXcgUm9tYW4mIzM5OyI+Jm5ic3A7Jm5i c3A7Jm5ic3A7IDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvYj48c3BhbiBkaXI9InJ0bCI+PGI+PHNw YW4gbGFuZz0iQVItRUciIHN0eWxlPSJDT0xPUjogYmx1ZTsgRk9OVC1GQU1JTFk6IEFyaWFsIj7U 3skgMTUw4yDIx+HKzOPaIMfhzsfj0yDIx+HN7CDH4cvH4csgyMzmx9Eg49PMzyDdx9jjySDH4dTR yMrh7Dwvc3Bhbj48L2I+PC9zcGFuPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0OyBGT05ULUZBTUlMWTogQXJpYWwiPiDj08fNySAxNTDjINrIx9HlINrkIDPk5uMg 5jPR08jU5CDmMs3jx+Mg5iDj2MjOIObI4d/m5CDK1NjtyCDdx87RINrh7CDmx8zl5SDIzdHsIObN z+3eySDm2uHsINTH0dog2tHW5TUw4yDm2+3RIOPM0ebNySDk5cfG7CDH4dPa0SDH4ePY4ebIIDI1 MDDM5O3lIOPV0ewgPC9zcGFuPjwvYj48Yj48c3BhbiBkaXI9Imx0ciIgc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj48L3NwYW4+PC9iPjwvcD4KCjxwIGRpcj0icnRs IiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDogMjguMTVwdDsgVEVYVC1BTElH TjogcmlnaHQiPjxzcGFuIGRpcj0icnRsIj48L3NwYW4+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0 eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwi PjxzcGFuIGRpcj0icnRsIj48L3NwYW4+KMwpPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1F RyIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPuHRx9vI7CDH4dPf5CDH 4d3HztEg1N7JIMfR1uwgyM3P7d7JIM7h3SDd5M/eIMfh4+3Rx8wgyMfhyszj2jwvc3Bhbj48L2I+ PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZ OiBBcmlhbCI+INTeySDex+Tm5CDMz+3PIMjH4d7H5dHJIMfhzM/tz8kgx9HW7CDj0crd2iDIzc/t 3skgzsfVySDj08fNySAzMDDjINrIx9HlINrkIDTb0d0g5jPR08jU5CDmMs3jx+Mg5uPYyM4g5srU 2O3IINPt0cfj7d8g3cfO0SDmyOXHIMrh7d3m5CDH4dPa0SDH4ePY4ebIIDM1MDDM5O3lIOPV0ewg PC9zcGFuPjwvYj48L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJH SU4tUklHSFQ6IDI4LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1F RyIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBB cmlhbCI+KM8pPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkZPTlQtU0la RTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4gPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJB Ui1FRyIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwiPt3t4ccgz+bI4d/T INHHxtrJIMjNz+3eySDOx9XJIMjH4crM49ogx+HOx+PTIOHhx+3Mx9Eg3sfk5uQgzM/tzzwvc3Bh bj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQt RkFNSUxZOiBBcmlhbCI+IN3t4ccg0ebaySDH0dbsIOPTx83JIDI1MOMg2sjH0eUg2uQgM+Tm4yDm M9HTyNTkIOYzzePH4yDm49jIziDmyOHf5uQgytTY7cgg0c7H4yDm0+3Rx+Pt3yDmyOXHIMfh5uPt ysfhIMfh09rRIMfh49jh5sggNDAwMMzk7eUg49XR7CA8L3NwYW4+PC9iPjwvcD4KCjxwIGRpcj0i cnRsIiBzdHlsZT0iRElSRUNUSU9OOiBydGw7IE1BUkdJTi1SSUdIVDogMjguMTVwdDsgVEVYVC1B TElHTjogcmlnaHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBDT0xPUjogI2ZmNjYwMDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4o5Sk8L3NwYW4+PC9iPjxiPjxz cGFuIGxhbmc9IkFSLUVHIiBzdHlsZT0iQ09MT1I6IGJsdWU7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ 3e3hxyDj08re4ckgMzUw4yDIx+HV5tEg5MfV7ckg2uHsINTH0dogx+HK09rt5CDH4dHG7dPsIMjH 4crM49ogx+HOx+PTPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkZPTlQt U0laRTogMTBwdDsgRk9OVC1GQU1JTFk6IEFyaWFsIj4g3e3hxyDI4+be2iDh5CDtyt/R0SDex+Tm 5CDMz+3PINrh7CDkx9XtySDUx9Ha7eQg0cbt0+3t5CDIx+HKzOPaIMfhzsfj0yDjx9LH4cogys3K IMfhytTY7cgg2sjH0eUg2uQgNOTm4yDmNNHTyNTkIOYzzePH4yDm49jIziDmMsjh3+bkIDwvc3Bh bj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJ R0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0 eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwi PijmKTwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEw cHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+IDwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUci IHN0eWxlPSJDT0xPUjogYmx1ZTsgRk9OVC1GQU1JTFk6IEFyaWFsIj7d7eHHIOPTyt7hySDH48fj IOPPx9HTIMfO5MfK5uQgyMfhyszj2iDH4c7H49Mg4eHH7czH0SDex+Tm5CDMz+08L3NwYW4+PC9i PjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlM WTogQXJpYWwiPs8g4+be2uXHIOPU5eYg0czPxyDj5CDH0d7sIOPmx97aIMjH4crM49ogx+HOx+PT IOPTx83K5ccgNjAw4yDayMfR5SDa5CDIz9Hm4yDmx9HW7CDmx+bhIObR5ubdPC9zcGFuPjwvYj48 L3A+Cgo8cCBkaXI9InJ0bCIgc3R5bGU9IkRJUkVDVElPTjogcnRsOyBNQVJHSU4tUklHSFQ6IDI4 LjE1cHQ7IFRFWFQtQUxJR046IHJpZ2h0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6ICNmZjY2MDA7IEZPTlQtRkFNSUxZOiBBcmlhbCI+x+Ha0dYx Njo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 OyBGT05ULUZBTUlMWTogQXJpYWwiPjxzcGFuPiZuYnNwOyA8L3NwYW4+PC9zcGFuPjwvYj48Yj48 c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkNPTE9SOiBibHVlOyBGT05ULUZBTUlMWTogQXJpYWwi PtTeySAxMTDjIN7H5ObkIMzP7c8gyMfh497Y4zwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVIt RUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+IDwvc3Bhbj48 L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hU OiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxl PSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+4eHH7czH0SDex+Tm5CDMz+3P INTeySDIx+Hj3tjjIMjH4eXWyMkgx+Hm09jsIM/m0dPHz9Mg49PHzckgMTEw4yDayMfRySDa5CAy 5ObjIOYy0dPI1OQg5s3jx+Mg5uPYyM4g5sjh3+bkIMrU2O3IIN/H4+Eg5u3MzyDM0cfMIM7H1SDI 5ccgx+HT2tEgx+Hj2OHmyCAxMTAwzOTt5SDj1dHsIDwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJy dGwiIHN0eWxlPSJESVJFQ1RJT046IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFM SUdOOiByaWdodCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IENPTE9SOiAjZmY2NjAwOyBGT05ULUZBTUlMWTogQXJpYWwiPsfh2tHWMTc6PC9zcGFuPjwvYj48 Yj48c3BhbiBsYW5nPSJBUi1FRyIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgRk9OVC1GQU1JTFk6 IEFyaWFsIj48c3Bhbj4mbmJzcDsmbmJzcDsgPC9zcGFuPjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFu Zz0iQVItRUciIHN0eWxlPSJDT0xPUjogYmx1ZTsgRk9OVC1GQU1JTFk6IEFyaWFsIj7d7eHHIMjj 0cjaIMfh5tLH0cEgyMfh1O3Rx8rm5CDIx+Tm0cfjxyDa4ewgzePH4yDTyMfNyTwvc3Bhbj48L2I+ PGI+PHNwYW4gbGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZ OiBBcmlhbCI+IDwvc3Bhbj48L2I+PC9wPgoKPHAgZGlyPSJydGwiIHN0eWxlPSJESVJFQ1RJT046 IHJ0bDsgTUFSR0lOLVJJR0hUOiAyOC4xNXB0OyBURVhULUFMSUdOOiByaWdodCI+PGI+PHNwYW4g bGFuZz0iQVItRUciIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IEZPTlQtRkFNSUxZOiBBcmlhbCI+ 4eHH7czH0SDex+Tm5CDMz+3PIN3t4ccgyMfhz+bRIMfh0cfI2iDI1MfR2iDj5sfS7CDh3e3hxyDj 5O3RIMvHyMogyMfh1O3Rx8rm5CDj08fNyTM1MOMg2sjH0eUg2uQgM+Tm4yDmNNHTyNTkIOYzzePH 4yDm49jIziDmyOHf5uQg5t/hINvR3ckg4eXHIM3jx+MgzsfVIMjlxyDmytTY7cjlxyDIx9Hf7eUg 5tPt0cfj7d8g5sjlxyDj2MjOIMfR5iDmz+3f5tHHyiDa4ewgx9rh7CDj08rm7CDmx+HT3+Qg0cfe 7CDl0Mcgx+Hj5t7aIOHQ5uwgx+HdzsfjySDH4dPa0SDH4ePY4ebIIDkwMDDM5O3lIOPV0ewgPC9z cGFuPjwvYj48L3A+CjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQt U0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4KPHAgc3R5bGU9Ik1BUkdJ TjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZP TlQtU0laRTogMTBwdDsgQ09MT1I6IHJlZCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj7l 5Mcg483hx8ogyNTmx9HaIMrMx9HtySDj5CDH4c/RzMkgx+HH5uHsPHNwYW4+Jm5ic3A7IDwvc3Bh bj7m4+bH3tog5MfP0ckg4czj7dogx+HH29HH1iDh4cjt2iDH5iDH4cftzMfRIMjj08fNx8og5sfj x9/kIOPK3dHeySDI49XRIOPk5ccgyMfh1ebRPC9mb250Pjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5 bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIg c3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJz cDs8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48 Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0 bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGJsdWUiPsfh2tHWMTo8L3NwYW4+PC9i PjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+ PHNwYW4+Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGZ1Y2hzaWEiPuPN4SDh4cjt 2iDH5iDH4cftzMfRIN3sIOPV0SDH4czP7c/JIMjj5t7aIOTHz9Hm4d7YySDI4+3Px+Qgx+HH0+PH 2u3h7ck8L3NwYW4+INrh7CDUx9HaINHG7dPsIO3V4c0g4cjk5t8gLSDK5t/t4cfKIMfN0O3JLSDK 5t/t4cfKIOPYx9rjLSDK5t/t4cfKIOPN4+bhIOPTx83JIDcw4yDIx9HK3cfaIDQuNSDjytEg5uPT ysjazyDk1MfYINXtz+HtySDH4crax97PIN3sIM3H4ckgx+HH7czH0SDj2OHmyCA21OXm0SDj3s/j IObH4ePP5SDH4cftzMfR7ck10+Tmx8og5sfhx+3Mx9Egx+Hj2OHmyCAyMsfh3SDM5O3lIOPV0ewg PC9zcGFuPjwvYj48L2ZvbnQ+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0g bm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElO Ry1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9u ZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xp ZCI+CjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAw aW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1C T1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25l OyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4g bGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNl PSJUaW1lcyBOZXcgUm9tYW4iPubd7CDNx+HJIMfhyO3aIMfh48rRINrh7CAyOMfh3SDM5O3lIOPV 0ew8c3Bhbj4mbmJzcDsgPC9zcGFuPsfsIMfhx8zjx+HsIDE5NjAwMDDH4d0gzOTt5SDj1dHsIDwv Zm9udD48L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0 Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQi Pjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+Jm5ic3A7PC9mb250Pjwvc3Bhbj48L2I+PC9w Pgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJv bWFuIj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEw cHQ7IENPTE9SOiBibHVlIj7H4drR1jI6PC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIg ZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxzcGFuPiZuYnNwOyZuYnNwOyA8L3Nw YW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7jzeHt5CDd0dXJIOHe2MkgyNrt5CDU49Mg yMfI0cfl7eMg2sjPIMfh0cfS3iDH4dHG7dPsIM3tyyDH4d/Lx93JIMfh09/H5O3JIMfh2sfh7ckg PC9zcGFuPubU5dHK5SDH4crMx9HtySDj5CDH4c/RzMkgx+HH5uHsPHNwYW4+Jm5ic3A7IDwvc3Bh bj7h4cjt2iDH5iDH4cftzMfRIOPTx83JIMfhx+bhIDYw4yDmx+HLx+TsIDkw4yDm5eTH3yDH49/H 5O3lIN3KzeXjINrh7CDI2tYg2uHsIMfh2ObIIMfhx83j0SDa0dYgx+HUx9HaIDIw4yDI5eMgzOPt 2iDH4ePRx93eIMrRzu3VIMfh483hx8ogyszH0ewg4+Qgx+HN7CDm7ebMzyDM4+3aIMfh4+bH1eHH yiDm7ebMzyDK0+Xt4cfKIN3sIMfh08/Hzzwvc3Bhbj48L2I+PC9mb250PjwvcD4KCjxkaXYgc3R5 bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVS LVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMXB0 OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RU T006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRp dW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFE RElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAwcHQ7 IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRP TTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZP TlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJzcDs8L2ZvbnQ+ PC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+ PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9u dCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNwOzwvZm9udD48L3NwYW4+PC9iPjwvcD4KPHAg c3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+ PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBD T0xPUjogYmx1ZSI+x+Ha0dYzOjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0i cnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48c3Bhbj4mbmJzcDsmbmJzcDsgPC9zcGFuPjxz cGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+0+bI0SDjx9HfyiAxNzDjIMjH4ePR7ebY7ckg2uHs INTH0drt5CDm5eYg1NvH4SDNx+HtxyA8L3NwYW4+PC9zcGFuPjwvYj48L2ZvbnQ+PC9wPgoKPGRp diBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBC T1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9N OiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVS LUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xpZCI+CjxwIHN0eWxlPSJCT1JERVItUklHSFQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25l OyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGlu IDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVIt Qk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHls ZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogZnVjaHNpYSI+PGZvbnQgZmFjZT0iVGltZXMgTmV3 IFJvbWFuIj4mbmJzcDs8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjwvZGl2Pgo8cCBzdHlsZT0iTUFS R0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0i Rk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNwOzwvZm9u dD48L3NwYW4+PC9iPjwvcD4KPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxmb250IGZh Y2U9IlRpbWVzIE5ldyBSb21hbiI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHls ZT0iRk9OVC1TSVpFOiAxMHB0OyBDT0xPUjogYmx1ZSI+x+Ha0dY0Ojwvc3Bhbj48L2I+PGI+PHNw YW4gbGFuZz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48c3Bhbj4m bmJzcDsmbmJzcDsgPC9zcGFuPjxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+483hx8ogyOPm x97aIOHe2MkgyOPV0SDH4d7P7ePJIOPm3togyszH0ewg0cfG2iDIzObH0SDjzdjJIOPK0eYg48fR 7CDM0czTIObIzObH0SDH4d/m0eTt1CDm3tPjIOPV0SDH4d7P7ePJIOHhyO3aIMfmIOHhx+3Mx9E8 L3NwYW4+PC9zcGFuPjwvYj48L2ZvbnQ+PC9wPgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAw cHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBw dCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4xXyDjzeEg49PHzcrlIDYw4yDK1NjtyCDT 5sjRIOHm39Mgx9HW7cfKIObN5sfG2CDT7dHH4+3fIObV4cfKIObf1Mfdx8ogPC9mb250Pjwvc3Bh bj48L2I+PC9wPgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0i QVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1l cyBOZXcgUm9tYW4iPjJfIO3mzM8gx+3WxyDjzeHHyiDj5CAxNcfh7CAxMjDjIMjP5uQgytTY7cgg x+3WxyDI5N3TIMfh4+be2iDH4crMx9HsIOXQxyA8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjxkaXYg c3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9S REVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTog MXB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1C T1RUT006IHdpbmRvd3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBt ZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsg UEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAw cHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJP VFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9 IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4zXyDIz9Hm4yAz MDDjIMfR1u3HyiDN1e3RySDO0dPH5O3JIObN5sfG2CDK5ebtySDj5CA05szlx8og3uPt1SDO0dPH 5Owg7dXhzSDjztLkIMfmIOPV5NogPC9mb250Pjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5bGU9IkJP UkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDog bWVkaXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJH SU46IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAw aW47IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lIj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGly PSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21h biI+Jm5ic3A7PC9mb250Pjwvc3Bhbj48L2I+PC9wPgo8L2Rpdj4KPHAgc3R5bGU9Ik1BUkdJTjog MGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQt U0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJzcDs8L2ZvbnQ+PC9z cGFuPjwvYj48L3A+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5n PSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRp bWVzIE5ldyBSb21hbiI+PHNwYW4+Jm5ic3A7IDwvc3Bhbj48c3BhbiBzdHlsZT0iQ09MT1I6IGJs dWUiPjxzcGFuPiZuYnNwOzwvc3Bhbj7H4drR1jU6PC9zcGFuPjxzcGFuPiZuYnNwOyZuYnNwOyA8 L3NwYW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7jzeEgyNPkytEgx+Hjz+3kyTxzcGFu PiZuYnNwOyA8L3NwYW4+yMfh49Hf0iDH4drH4ePsPHNwYW4+Jm5ic3A7IDwvc3Bhbj7j5t7aIOPK 4+3SIMjH4drH1NEg4+Qg0ePWx+QgyMzmx9Egx+Hj5t7dIDwvc3Bhbj7mx+HI5ObfIMjj2uTsIMfk 5TxzcGFuPiZuYnNwOyA8L3NwYW4+4+be2iDKzMfR7CDm5eYgyMfhz+bRIMfhysfhyiDmx+3WxyDI zObH0SDH4dPh4yDmx+HH08fk0+3RINnH5dEgzM/HIOPTx83K5SAzMdI14yDOx+HVIMfhy+PkIObI 483W0SDH4cfTyuHH4yDm2t7PIOTlx8bsINvt0SDjzc/PIMfh5NTH2CDH4cjHyCDNz+3PIObH4dTI x8jt3yDI2tHWIMfh483hIMjH4cfh5uPtysfhIObjz+Xm5CDI4cfTyu3fIMfI7dYgPC9mb250Pjwv c3Bhbj48L2I+PC9wPgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFE RElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAw aW47IFBBRERJTkctQk9UVE9NOiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElO Ry1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xpZCI+CjxwIHN0 eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRF Ui1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBp bjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5H LVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVIt RUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBO ZXcgUm9tYW4iPsfjxyDH4dPa0SDd5eYg4d7YySA1MMfh3SDM5O3lIOPV0ewgPC9mb250Pjwvc3Bh bj48L2I+PC9wPgo8L2Rpdj4KPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFu IGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFj ZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJzcDs8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjxwIHN0eWxl PSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxiPjxz cGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6 IGJsdWUiPsfh2tHWNjo8L3NwYW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIg c3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PHNwYW4+Jm5ic3A7Jm5ic3A7IDwvc3Bhbj48c3BhbiBz dHlsZT0iQ09MT1I6IGZ1Y2hzaWEiPuPN4SDI4+be2iDH08rL48fR7CDh4cjt2iDIx+HayOYg0SDO 4d0gx8jmINDf0ewgyNPkytEgx9PKy+PH0ewg4+Qgx+HP0czJIMfhx+bh7CA8L3NwYW4+PC9zcGFu PjwvYj48L2ZvbnQ+PC9wPgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFu IGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFj ZT0iVGltZXMgTmV3IFJvbWFuIj48c3Bhbj4mbmJzcDs8L3NwYW4+497HyOEg49Xhzckgx+HQ5cgg x+HMz+3PySDIx+HN7CDH4cfm4SDIx+HP5tEgx+HH0dbsIObHzOXlIDwvZm9udD48L3NwYW4+PC9i PjwvcD4KPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdI VDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJ TkctQk9UVE9NOiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBp bjsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xpZCI+CjxwIHN0eWxlPSJCT1JE RVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1l ZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lO OiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGlu OyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0i cnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4i Psfh09rRIMfh49jh5sggMTYwx+HdIMzk7eUg49XR7CDfx9Qg5uPj3+QgytPl7eHHyjxzcGFuPiZu YnNwOyA8L3NwYW4+yNPa0SAxODDH4d0gzOTt5SDj1dHsIDwvZm9udD48L3NwYW4+PC9iPjwvcD4K CjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47 IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RU T006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQ QURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFu Zz0iQVItRUciIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJU aW1lcyBOZXcgUm9tYW4iPiZuYnNwOzwvZm9udD48L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0 eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwi IHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+Jm5i c3A7PC9mb250Pjwvc3Bhbj48L2I+PC9wPgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+ PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJy dGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7IENPTE9SOiBibHVlIj7H4drR1jc6PC9zcGFuPjwv Yj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQi PjxzcGFuPiZuYnNwOyZuYnNwOyA8L3NwYW4+PHNwYW4gc3R5bGU9IkNPTE9SOiBmdWNoc2lhIj7j zeEgMTIw4yDKzMfR7CDMz8fHx8fHx8cg2uHsINTH0dog0cbt0+w8c3Bhbj4mbmJzcDsgPC9zcGFu Psjj5t7aINHH3uwgzM/HIMjH4eHH09/kz9HtySA8L3NwYW4+PC9zcGFuPjwvYj48L2ZvbnQ+PC9w PgoKPGRpdiBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDog MGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkct Qk9UVE9NOiAxcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsg Qk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xpZCI+CjxwIHN0eWxlPSJCT1JERVIt UklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1 bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAw aW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBC T1JERVItQk9UVE9NOiBtZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRpcj0icnRs IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZu YnNwOzwvZm9udD48L3NwYW4+PC9iPjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAw aW4gMHB0Ij48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6 IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+Jm5ic3A7PC9mb250Pjwvc3Bhbj48 L2I+PC9wPgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGZvbnQgZmFjZT0iVGltZXMg TmV3IFJvbWFuIj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJ WkU6IDEwcHQ7IENPTE9SOiBibHVlIj7H4drR1jg6PHNwYW4+Jm5ic3A7IDwvc3Bhbj48L3NwYW4+ PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBw dCI+PHNwYW4+Jm5ic3A7Jm5ic3A7PC9zcGFuPjxzcGFuIHN0eWxlPSJDT0xPUjogZnVjaHNpYSI+ 483hIMjH4dTtziDSx+3PIDIwMDAgx+PH4yDj5MrM2iDH4czm48fk5TxzcGFuPiZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyA8L3NwYW4+PC9zcGFuPjxzcGFuPiZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3NwYW4+PC9iPjwvZm9udD48L3A+ Cgo8cCBzdHlsZT0iTUFSR0lOOiAwaW4gMGluIDBwdCI+PGI+PHNwYW4gbGFuZz0iQVItRUciIGRp cj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9t YW4iPuPTx83JIDQw4yDKztXt1SDO1sfRIObdx9/l5SDm4+Pf5CDK2+3RIMfh5NTH2CDN08ggx+Hj ysfNIOPkIN7I4SDH4czlx9IgPC9mb250Pjwvc3Bhbj48L2I+PC9wPgo8ZGl2IHN0eWxlPSJCT1JE RVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1l ZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDFwdDsgQk9SREVS LUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiB3aW5k b3d0ZXh0IDEuNXB0IHNvbGlkIj4KPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVkaXVtIG5vbmU7 IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBBRERJTkctTEVG VDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0OyBCT1JERVIt TEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IG1lZGl1 bSBub25lIj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6 IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+x+Hjz93aIDc5x+HdIMzk7eUg49XR 7CDm49jh5sggNjLH4d0g0+Tm7ccg2uHsIDnH3tPH2CDH7CA50+Tmx8ogx+bhIN7T2CDt08rN3iDd 7CA0LzEyLzIwMDjmx+Hj2OHmyCA0MMfh3SDH5t3RIMjH4cfWx93JIMfh7CDH4ePI4dsgx+HQ7CDK 4yDP3drlIOPkIN7I4SDh4czlx9Ig5u3mzM8gx+Pfx+Tt5SDH4cre0+3YINrh7CAxMTje09ggx+wg MTjT5OUgyM/hxyDj5CA50+Tmx8ogPC9mb250Pjwvc3Bhbj48L2I+PC9wPgo8L2Rpdj4KPHAgc3R5 bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIg c3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4mbmJz cDs8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48 Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0 bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdDsgQ09MT1I6IGJsdWUiPsfh2tHWIDk6PC9zcGFuPjwv Yj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQ7 IENPTE9SOiBmdWNoc2lhIj48c3Bhbj4mbmJzcDsmbmJzcDsgPC9zcGFuPuPe0SDj08fNyuUgMTgw MOMgyOPk2N7JIM3h5sfkIMfh0cbt0+3JIM3tyyDH4d/Lx93JIMfh09/H5O3JIMfh2sfh7ck8L3Nw YW4+PC9iPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTog MTBwdCI+PC9zcGFuPjwvYj48L2ZvbnQ+PC9wPgoKPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAw cHQiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBw dCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj7Ix+He0cgg4+Qg48rR5iDH4cfk3cfeIObj 5t7dIMfhx8rmyO3TIObH4dHT3e3TIObj5CDM4+3aIMfh2sfj4e3kIMjj1cfk2iDN4ebH5CDj49/k INrj4eXHIOPTytTd7CDH5iDj0d/SINjI7CDjyt/H4+EgyOTZx+Mgx+Hj1MfR38kg5uXkx98g4ccg 7ebMzyDj08rU3ewgx+Yg49Hf0iDYyOwgyOTd0yDH4ePTx83JIObt49/kINrj4SDV7c/h7ckgz8fO 4e3JIOHh49PK1N3sIOHOz+PJINHmx8/lxyDj3tPj5SDa4ewgz+bR7eQgx+bhPHNwYW4+Jm5ic3A7 IDwvc3Bhbj7mysfk7CDm3+Eg4+Tl4yA5MDDjIMjH4cfWx93lIOHhx9HW7CA0NTDjIOPaIMfj38fk 7eUg2uPhIOPPzuEgzsfVIDwvZm9udD48L3NwYW4+PC9iPjwvcD4KCjxkaXYgc3R5bGU9IkJPUkRF Ui1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVk aXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMXB0OyBCT1JERVIt TEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RUT006IHdpbmRv d3RleHQgMS41cHQgc29saWQiPgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsg UEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZU OiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1M RUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVt IG5vbmUiPjxiPjxzcGFuIGxhbmc9IkFSLUVHIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTog MTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj7Y0e3eySDH4dPPx88g3ewgzcfh5SDH 4cjt2iDIx+HK3tPt2CDm3ewgzcfhIMfh49TH0d/JIO3f5uQg5M3kIMjH4ePfx+Qg5s3W0crf4yDI x+HKzOXt0sfKIObH4cfPx9HJIOPaIObM5s8g5NnH4yDjzcfTyOwg48rfx+PhIMfhx9HIx80g2Mje xyDh4eTTyCDH4crsIO3K4yDH4cfK3cfeINrh7eXHIDwvZm9udD48L3NwYW4+PC9iPjwvcD4KPC9k aXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0Ij48Yj48c3BhbiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPiZuYnNwOzwvZm9udD48L3Nw YW4+PC9iPjwvcD4KPHAgc3R5bGU9Ik1BUkdJTjogMGluIDBpbiAwcHQgMTg5cHQiPjxiPjxzcGFu IGxhbmc9IkFSLVNBIiBkaXI9InJ0bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFj ZT0iVGltZXMgTmV3IFJvbWFuIj7h4ePax+3k5SDt0czsIMfhx8rVx+Eg2uHsINHe4yDH4eXHyt0g x+Ygx+Hj0cfT4ckg2sjRIMfhx+3j7eE8L2ZvbnQ+PC9zcGFuPjwvYj48L3A+CjxkaXYgc3R5bGU9 Ik1BUkdJTjogMGluIDBpbiAwcHQgMTg5cHQiPjxiPjxzcGFuIGxhbmc9IkFSLVNBIiBkaXI9InJ0 bCIgc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj4w MTAzMDQzNjgyPC9mb250Pjwvc3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRs IiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPjwv Zm9udD48L3NwYW4+PC9iPjwvZGl2Pgo8L2ZvbnQ+PC9zcGFuPjwvYj4KPGRpdiBzdHlsZT0iQk9S REVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVItVE9QOiBt ZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiA2cHQ7IE1BUkdJ Ti1MRUZUOiAxODlwdDsgQk9SREVSLUxFRlQ6IG1lZGl1bSBub25lOyBNQVJHSU4tUklHSFQ6IDBp bjsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogd2luZG93dGV4dCAxLjVwdCBzb2xp ZCI+Cgo8cCBzdHlsZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDog MGluOyBCT1JERVItVE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkct Qk9UVE9NOiAwaW47IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9u ZTsgUEFERElORy1UT1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFu IHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxhIG9uY2xpY2s9InJldHVybiB0b3AuanMuT3BlbkV4 dExpbmsod2luZG93LGV2ZW50LHRoaXMpIiBocmVmPSJtYWlsdG86bWFza2FubWFzcnlAZ21haWwu Y29tIiB0YXJnZXQ9Il9ibGFuayI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5tYXNrYW5t YXNyeUBnbWFpbC5jb208L2ZvbnQ+PC9hPjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5bGU9IkJPUkRF Ui1SSUdIVDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVk aXVtIG5vbmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46 IDBpbiAwaW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47 IEJPUkRFUi1CT1RUT006IG1lZGl1bSBub25lIj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJy dGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+ 4drP4yDK4d7sIMfsINHTx8bhIOPkIOXQxyDH4eTm2iDt0czsIMfR08fhINPH4eUgzsfh7eUg2uHs IOXQxyDH4cft4+3hPC9mb250Pjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5bGU9IkJPUkRFUi1SSUdI VDogbWVkaXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5v bmU7IFBBRERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAw aW4gMHB0OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRF Ui1CT1RUT006IG1lZGl1bSBub25lIj48Yj48c3BhbiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48 YSBvbmNsaWNrPSJyZXR1cm4gdG9wLmpzLk9wZW5FeHRMaW5rKHdpbmRvdyxldmVudCx0aGlzKSIg aHJlZj0ibWFpbHRvOlNvemFuMWVneXB0QGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPjxmb250 IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+U296YW4xZWd5cHRAZ21haWwuY29tPC9mb250PjwvYT48 L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURE SU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBp bjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9u ZSI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGly PSJydGwiIHN0eWxlPSJGT05ULVNJWkU6IDEwcHQiPubH0Mcg38fkIOHP7d/jINrR1iDU3skgLePe 0S3d7eHHPC9zcGFuPjwvYj48Yj48c3BhbiBsYW5nPSJBUi1FRyIgZGlyPSJydGwiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQiPi0g49Xk2iCWINXtz+HtyS3jztLkLePN4cfmIMfsIMfV5uEgx87R7Dwv c3Bhbj48L2I+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpF OiAxMHB0Ij4g4eHH7czH0SDH5iDh4cjt2iDt49/k3+Mgx9HTx+Egyt3H1e3hIMfh2tHWIN/H4+HH IObt3dbhIObM5s8g1ebRIMfkIMfj3+Qg2uHsIOXQxyDH4cft4+3hPC9zcGFuPjwvYj48Yj48c3Bh biBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0Ij48L3NwYW4+PC9iPjwvZm9udD48L3A+Cgo8cCBzdHls ZT0iQk9SREVSLVJJR0hUOiBtZWRpdW0gbm9uZTsgUEFERElORy1SSUdIVDogMGluOyBCT1JERVIt VE9QOiBtZWRpdW0gbm9uZTsgUEFERElORy1MRUZUOiAwaW47IFBBRERJTkctQk9UVE9NOiAwaW47 IE1BUkdJTjogMGluIDBpbiAwcHQ7IEJPUkRFUi1MRUZUOiBtZWRpdW0gbm9uZTsgUEFERElORy1U T1A6IDBpbjsgQk9SREVSLUJPVFRPTTogbWVkaXVtIG5vbmUiPjxiPjxzcGFuIHN0eWxlPSJGT05U LVNJWkU6IDEwcHQiPjxhIG9uY2xpY2s9InJldHVybiB0b3AuanMuT3BlbkV4dExpbmsod2luZG93 LGV2ZW50LHRoaXMpIiBocmVmPSJtYWlsdG86bWFza2FubWFzcnlAZ21haWwuY29tIiB0YXJnZXQ9 Il9ibGFuayI+PGZvbnQgZmFjZT0iVGltZXMgTmV3IFJvbWFuIj5tYXNrYW5tYXNyeUBnbWFpbC5j b208L2ZvbnQ+PC9hPjwvc3Bhbj48L2I+PC9wPgoKPHAgc3R5bGU9IkJPUkRFUi1SSUdIVDogbWVk aXVtIG5vbmU7IFBBRERJTkctUklHSFQ6IDBpbjsgQk9SREVSLVRPUDogbWVkaXVtIG5vbmU7IFBB RERJTkctTEVGVDogMGluOyBQQURESU5HLUJPVFRPTTogMGluOyBNQVJHSU46IDBpbiAwaW4gMHB0 OyBCT1JERVItTEVGVDogbWVkaXVtIG5vbmU7IFBBRERJTkctVE9QOiAwaW47IEJPUkRFUi1CT1RU T006IG1lZGl1bSBub25lIj48Yj48c3BhbiBsYW5nPSJBUi1TQSIgZGlyPSJydGwiIHN0eWxlPSJG T05ULVNJWkU6IDEwcHQiPjxmb250IGZhY2U9IlRpbWVzIE5ldyBSb21hbiI+5sfQxyDfx+Qgx+Ha 0dYgx+Hj0dPhINvt0SDj5MfTyCDt0czsIMfR08fhINjhyN/jINrh7CDl0Mcgx+HH7ePt4TwvZm9u dD48L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQ QURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6 IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxF RlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0g bm9uZSI+PGI+PHNwYW4gc3R5bGU9IkZPTlQtU0laRTogMTBwdCI+PGZvbnQgZmFjZT0iVGltZXMg TmV3IFJvbWFuIj48YSBvbmNsaWNrPSJyZXR1cm4gdG9wLmpzLk9wZW5FeHRMaW5rKHdpbmRvdyxl dmVudCx0aGlzKSIgaHJlZj0ibWFpbHRvOkhhbmFuMWVneXB0QGdtYWlsLmNvbSIgdGFyZ2V0PSJf YmxhbmsiPkhhbmFuMWVneXB0QGdtYWlsLmNvbTwvYT48c3BhbiBkaXI9InJ0bCI+PC9zcGFuPjxz cGFuIGxhbmc9IkFSLVNBIiBkaXI9InJ0bCI+PHNwYW4gZGlyPSJydGwiPjwvc3Bhbj4gPC9zcGFu PjwvZm9udD48L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBu b25lOyBQQURESU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5H LUxFRlQ6IDBpbjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9S REVSLUxFRlQ6IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBt ZWRpdW0gbm9uZSI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1T SVpFOiAxMHB0Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPuPaIMrN7cfKIDwvZm9udD48 L3NwYW4+PC9iPjwvcD4KCjxwIHN0eWxlPSJCT1JERVItUklHSFQ6IG1lZGl1bSBub25lOyBQQURE SU5HLVJJR0hUOiAwaW47IEJPUkRFUi1UT1A6IG1lZGl1bSBub25lOyBQQURESU5HLUxFRlQ6IDBp bjsgUEFERElORy1CT1RUT006IDBpbjsgTUFSR0lOOiAwaW4gMGluIDBwdDsgQk9SREVSLUxFRlQ6 IG1lZGl1bSBub25lOyBQQURESU5HLVRPUDogMGluOyBCT1JERVItQk9UVE9NOiBtZWRpdW0gbm9u ZSI+PGI+PHNwYW4gbGFuZz0iQVItU0EiIGRpcj0icnRsIiBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0 Ij48Zm9udCBmYWNlPSJUaW1lcyBOZXcgUm9tYW4iPuPT3+Qg49XR7DwvZm9udD48L3NwYW4+PC9i PjwvcD4KPC9kaXY+CjxwIHN0eWxlPSJNQVJHSU46IDBpbiAwaW4gMHB0IDE4OXB0Ij48Yj48c3Bh biBzdHlsZT0iRk9OVC1TSVpFOiAxMHB0OyBGT05ULUZBTUlMWTogJiMzOTtUaW1lcyBOZXcgUm9t YW4mIzM5OyI+PGEgb25jbGljaz0icmV0dXJuIHRvcC5qcy5PcGVuRXh0TGluayh3aW5kb3csZXZl bnQsdGhpcykiIGhyZWY9Imh0dHA6Ly93d3cubWFza2FubWFzcnkuY29tLyIgdGFyZ2V0PSJfYmxh bmsiPnd3dy5tYXNrYW5tYXNyeS5jb208L2E+PC9zcGFuPjwvYj48L3A+Cjwvc3Bhbj48L2Rpdj4K ------=_Part_144361_12721996.1231106966208-- From david@fromorbit.com Sun Jan 4 16:45:50 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n04Mjo0I001725 for ; Sun, 4 Jan 2009 16:45:50 -0600 X-ASG-Debug-ID: 1231109148-3b9602dc0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id ABF9313D152C for ; Sun, 4 Jan 2009 14:45:48 -0800 (PST) Received: from ipmail05.adl2.internode.on.net (ipmail05.adl2.internode.on.net [203.16.214.145]) by cuda.sgi.com with ESMTP id qKxfbPWmOyr1WWpL for ; Sun, 04 Jan 2009 14:45:48 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEAH7HYEl5LCBV/2dsb2JhbADJM4Vy X-IronPort-AV: E=Sophos;i="4.36,329,1228051800"; d="scan'208";a="286445804" Received: from ppp121-44-32-85.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.32.85]) by ipmail05.adl2.internode.on.net with ESMTP; 05 Jan 2009 09:10:13 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LJbdj-00006R-I2; Mon, 05 Jan 2009 09:40:11 +1100 Date: Mon, 5 Jan 2009 09:40:11 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] sanity check attr fork size Subject: Re: [PATCH] sanity check attr fork size Message-ID: <20090104224011.GK10725@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20090104164211.GA15734@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090104164211.GA15734@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1231109149 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14432 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Sun, Jan 04, 2009 at 11:42:11AM -0500, Christoph Hellwig wrote: > Recently we have quite a few kerneloops reports about dereferencing a NULL > if_data in the attribute fork. From looking over the code this can only > happen if we pass a 0 size argument to xfs_iformat_local. This implies some > sort of corruption and in fact the only mailinglist report about this from > earlier this year was after a powerfail presumably on a system with write > cache and without barriers. > > Add a quick sanity check for the attr fork size in xfs_iformat to catch > these early and without an oops. Looks sane to me. Reviewed-by: Dave Chinner -- Dave Chinner david@fromorbit.com From help1@uni-potsdam.de Sun Jan 4 18:22:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.3 required=5.0 tests=BAYES_60,MIME_8BIT_HEADER autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n050M8kH006987 for ; Sun, 4 Jan 2009 18:22:08 -0600 X-ASG-Debug-ID: 1231114925-714403da0000-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from olc-14.verat.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 53AE717A5468 for ; Sun, 4 Jan 2009 16:22:05 -0800 (PST) Received: from olc-14.verat.net (olc-14.verat.net [62.108.127.40]) by cuda.sgi.com with ESMTP id 7f7RhDtqS7ZGCPp7 for ; Sun, 04 Jan 2009 16:22:05 -0800 (PST) Received: from webmail.verat.net (webmail.verat.net [85.222.160.153]) by olc-14.verat.net (Postfix) with ESMTP id 1649AC05E8; Mon, 5 Jan 2009 01:11:50 +0100 (CET) Received: from 41.220.75.3 (SquirrelMail authenticated user kosovac) by webmail.verat.net with HTTP; Mon, 5 Jan 2009 01:21:31 +0100 (CET) Message-ID: <36217.41.220.75.3.1231114891.squirrel@webmail.verat.net> Date: Mon, 5 Jan 2009 01:21:31 +0100 (CET) X-ASG-Orig-Subj: Sehr geehrte uni-potsdam.de Account Benutzer, Subject: Sehr geehrte uni-potsdam.de Account Benutzer, From: W3-TEAM =?iso-8859-1?Q?Universit=E4t_Potsdam?= Reply-To: webmasteronlineservice17@gmail.com User-Agent: SquirrelMail/1.4.13 MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal To: undisclosed-recipients:; X-Barracuda-Connect: olc-14.verat.net[62.108.127.40] X-Barracuda-Start-Time: 1231114927 X-Barracuda-Bayes: INNOCENT GLOBAL 0.5134 1.0000 0.7500 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.75 X-Barracuda-Spam-Status: No, SCORE=0.75 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14440 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Sehr geehrte uni-potsdam.de Account Benutzer, Es wird ein Upgrade in unserem System zwischen 5 bis 16 Januar 2009. Durch die anonyme Registrierung von uni-potsdam.deaccounts und die Anzahl der ruhende Konten, werden wir mit diesem Upgrade zu bestimmen, die genaue Zahl der Teilnehmer haben wir derzeit. Sie sind beauftragt, um sich bei Ihrer uni-potsdam.deto ob Ihr Konto ist immer noch gültig und senden Sie sofort die folgenden: Login-Name :................................( Obligatorische) Passwort :...................................( Obligatorische) Geburtsdatum :..............................( Optional) Staat :........................................( Optional) Vor dem Senden Ihrer Angaben an uns, Sie werden beraten, um in diesem Login Link: https: / / webmail.uni-potsdam.de/horde/login.php Beachten Sie, dass, wenn Ihr Konto nicht anmelden, senden Sie uns die Details oder sonst bedeutet es, Es wurde gestrichen. Sorry für die inconvinence Dies könnte dazu führen, dass Sie sind wir nur versuchen, um sicherzustellen, dass Sie nicht verlieren Informationen in Ihre Konten. Alles, was Sie zu tun haben, ist Klicken Sie auf Antwort und geben Sie die oben genannten Informationen, Ihr Konto wird nicht unterbrochen werden und wird auch weiterhin wie gewohnt. Vielen Dank für Ihre Aufmerksamkeit auf diese Aufforderung. Wir entschuldigen uns noch einmal für alle Unannehmlichkeiten. Warnung! Konto-Nutzer, die sich weigern, ihre Rechnung nach 5 Tagen nach Erhalt dieser Warnung, Benutzer verliert sein Konto dauerhaft. © 2009 uni-potsdam.de (W3-TEAM Universität Potsdam) From npiggin@suse.de Sun Jan 4 19:48:26 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n051mQT5011760 for ; Sun, 4 Jan 2009 19:48:26 -0600 X-ASG-Debug-ID: 1231120104-150f02cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 126585EED6 for ; Sun, 4 Jan 2009 17:48:24 -0800 (PST) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id gCOPWUwFBhxsHUgl for ; Sun, 04 Jan 2009 17:48:24 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from Relay1.suse.de (relay-ext.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 DAD1445876; Mon, 5 Jan 2009 02:48:23 +0100 (CET) Date: Mon, 5 Jan 2009 02:48:21 +0100 From: Nick Piggin To: Christoph Hellwig Cc: Peter Klotz , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? Message-ID: <20090105014821.GA367@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090103214443.GA6612@infradead.org> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231120106 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Sat, Jan 03, 2009 at 04:44:43PM -0500, Christoph Hellwig wrote: > On Tue, Dec 30, 2008 at 05:23:33AM +0100, Nick Piggin wrote: > > On Tue, Dec 23, 2008 at 12:12:59PM -0500, Christoph Hellwig wrote: > > > > > > Nick, I've seen various reports like this by Roman. It seems to be > > > caused by an interaction of the lockless pagecache with the xfs > > > I/O code. Any idea what might be wrong here: > > > > Hmm, it could get into a loop here if there is a page in the pagecache > > with a zero refcount, which might be a problem with XFS... other looping > > conditions might indicate a problem iwth lockless pagecache or radix > > tree. It would be very helpful to know what condition it is looping on... > > See http://oss.sgi.com/bugzilla/show_bug.cgi?id=805 OK.. Hmm, well here is a modification to your patch which might help further. I'll see if I can reproduce it here meanwhile. --- mm/filemap.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) Index: linux-2.6/mm/filemap.c =================================================================== --- linux-2.6.orig/mm/filemap.c +++ linux-2.6/mm/filemap.c @@ -770,11 +770,13 @@ EXPORT_SYMBOL(find_or_create_page); * find_get_pages() returns the number of pages which were found. */ unsigned find_get_pages(struct address_space *mapping, pgoff_t start, - unsigned int nr_pages, struct page **pages) + unsigned int nr_pages, + struct page **pages) { unsigned int i; unsigned int ret; unsigned int nr_found; + int locked = 0; rcu_read_lock(); restart: @@ -785,27 +787,46 @@ restart: struct page *page; repeat: page = radix_tree_deref_slot((void **)pages[i]); - if (unlikely(!page)) + if (unlikely(!page)) { + if (printk_ratelimit()) + printk(KERN_INFO "unable to deref page\n"); continue; + } + /* * this can only trigger if nr_found == 1, making livelock * a non issue. */ - if (unlikely(page == RADIX_TREE_RETRY)) + if (unlikely(page == RADIX_TREE_RETRY)) { + printk(KERN_INFO "got RADIX_TREE_RETRY\n"); goto restart; + } - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* If the page is in the radix-tree, and the radix-tree + * is locked, the page must have a non-zero refcount */ + BUG_ON(locked); + printk(KERN_INFO "page_cache_get failed\n"); + spin_lock_irq(&mapping->tree_lock); + locked = 1; goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { + BUG_ON(locked); + printk(KERN_INFO "page moved\n"); page_cache_release(page); + spin_lock_irq(&mapping->tree_lock); + locked = 1; goto repeat; } pages[ret] = page; ret++; } + if (locked) + spin_unlock_irq(&mapping->tree_lock); rcu_read_unlock(); return ret; } From lachlan@sgi.com Sun Jan 4 21:09:09 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n053983T016300 for ; Sun, 4 Jan 2009 21:09:09 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 9BD3030406B; Sun, 4 Jan 2009 19:09:03 -0800 (PST) Message-ID: <49617A4D.2090200@sgi.com> Date: Mon, 05 Jan 2009 14:11:09 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.19 (X11/20081209) MIME-Version: 1.0 To: Christoph Hellwig CC: Arkadiusz Miskiewicz , xfs@oss.sgi.com Subject: Re: [PATCH, RFC] xfs_repair: allow filesystems with a single AG References: <20081224231901.GA652@infradead.org> In-Reply-To: <20081224231901.GA652@infradead.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Looks fine to me but I feel that repair is compromised without the second SB so we should fix mkfs too to prevent people from creating single AG filesystems. Christoph Hellwig wrote: > Currently xfs_repair bails out on a filesystem with just a single AG. > But that's a perfectly valid configureation, so we should allow it. > > Skip the geomery validation because we simply can't do it if we don't > have a secondary SB, and make sure to take the internal log into account > when guestimating the first inode cluster. > > I'll also cook up a testcase for repair on single AG filesystems. > > > Signed-off-by: Christoph Hellwig > Reported-By: Arkadiusz Miskiewicz > > Index: xfsprogs/repair/sb.c > =================================================================== > --- xfsprogs.orig/repair/sb.c 2008-12-24 23:36:29.946033933 +0100 > +++ xfsprogs/repair/sb.c 2008-12-24 23:42:08.101044710 +0100 > @@ -773,14 +773,17 @@ verify_set_primary_sb(xfs_sb_t *rsb, > break; > case 1: > /* > - * just report the geometry info and get out. > - * refuse to run further unless the force (-F) > - * option is in effect. > + * If we only have a single allocation group there is no > + * secondary superblock that we can use to verify the geometry > + * information. Not much we can do here, as we don't want > + * to prevent the user from checking the filesystem. > + * > + * XXX(hch): We should allow putting a secondary superblock > + * into the last sector of a filesystem to so that > + * we can still have a backup for single allocation > + * group filesystems. > */ > - if (!force_geo) { > - do_warn(_("Only one AG detected - cannot proceed.\n")); > - exit(1); > - } > + break; > default: > /* > * at least half of the probed superblocks have > Index: xfsprogs/repair/xfs_repair.c > =================================================================== > --- xfsprogs.orig/repair/xfs_repair.c 2008-12-25 00:00:09.116033372 +0100 > +++ xfsprogs/repair/xfs_repair.c 2008-12-25 00:07:50.295036179 +0100 > @@ -409,6 +409,19 @@ calc_mkfs(xfs_mount_t *mp) > fino_bno = inobt_root + XFS_MIN_FREELIST_RAW(1, 1, mp) + 1; > > /* > + * If we only have a single allocation group the log is also allocated > + * in the first allocation group and we need to add the number of > + * blocks used by the log to the above calculation. > + * All this of course doesn't apply if we have an external log. > + */ > + if (mp->m_sb.sb_agcount == 1 && mp->m_sb.sb_logstart) { > + /* > + * XXX(hch): verify that sb_logstart makes sense? > + */ > + fino_bno += mp->m_sb.sb_logblocks; > + } > + > + /* > * ditto the location of the first inode chunks in the fs ('/') > */ > if (xfs_sb_version_hasdalign(&mp->m_sb) && do_inoalign) { > > _______________________________________________ > xfs mailing list > xfs@oss.sgi.com > http://oss.sgi.com/mailman/listinfo/xfs From lachlan@sgi.com Sun Jan 4 21:25:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from relay.sgi.com (relay2.corp.sgi.com [137.38.102.29]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n053PMCi017454 for ; Sun, 4 Jan 2009 21:25:22 -0600 Received: from [134.14.55.78] (redback.melbourne.sgi.com [134.14.55.78]) by relay2.corp.sgi.com (Postfix) with ESMTP id 43AD630406C; Sun, 4 Jan 2009 19:25:19 -0800 (PST) Message-ID: <49617E1F.7070305@sgi.com> Date: Mon, 05 Jan 2009 14:27:27 +1100 From: Lachlan McIlroy Reply-To: lachlan@sgi.com Organization: SGI User-Agent: Thunderbird 2.0.0.19 (X11/20081209) MIME-Version: 1.0 To: Nick Piggin CC: xfs@oss.sgi.com Subject: Re: [GIT PULL] XFS update for 2.6.29 References: <20081230030845.A4F0558AE206@chook.melbourne.sgi.com> <200812311419.10199.nickpiggin@yahoo.com.au> In-Reply-To: <200812311419.10199.nickpiggin@yahoo.com.au> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Nick Piggin wrote: > On Tuesday 30 December 2008 14:08:45 Lachlan McIlroy wrote: >> The following changes since commit >> 3c92ec8ae91ecf59d88c798301833d7cf83f2179: Linus Torvalds (1): >> Merge branch 'next' of git://git.kernel.org/.../paulus/powerpc >> >> are available in the git repository at: >> >> git://oss.sgi.com/oss/git/xfs/xfs.git for-linus > > Any reason you're not merging those vmap patches? > Sorry Nick, I didn't realise we missed them. Can you provide a pointer to them and I'll pull them in. Lachlan From npiggin@suse.de Sun Jan 4 22:20:04 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n054K4Ve021201 for ; Sun, 4 Jan 2009 22:20:04 -0600 X-ASG-Debug-ID: 1231129202-260102c50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx2.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 042455F2ED for ; Sun, 4 Jan 2009 20:20:02 -0800 (PST) Received: from mx2.suse.de (mx2.suse.de [195.135.220.15]) by cuda.sgi.com with ESMTP id BMldiPia0hvLJWvx for ; Sun, 04 Jan 2009 20:20:02 -0800 (PST) Received: from Relay2.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 mx2.suse.de (Postfix) with ESMTP id 0E32948473; Mon, 5 Jan 2009 05:20:00 +0100 (CET) Date: Mon, 5 Jan 2009 05:19:59 +0100 From: Nick Piggin To: Christoph Hellwig Cc: Peter Klotz , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? Message-ID: <20090105041959.GC367@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090105014821.GA367@wotan.suse.de> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: mx2.suse.de[195.135.220.15] X-Barracuda-Start-Time: 1231129204 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14455 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 02:48:21AM +0100, Nick Piggin wrote: > On Sat, Jan 03, 2009 at 04:44:43PM -0500, Christoph Hellwig wrote: > > On Tue, Dec 30, 2008 at 05:23:33AM +0100, Nick Piggin wrote: > > > On Tue, Dec 23, 2008 at 12:12:59PM -0500, Christoph Hellwig wrote: > > > > > > > > Nick, I've seen various reports like this by Roman. It seems to be > > > > caused by an interaction of the lockless pagecache with the xfs > > > > I/O code. Any idea what might be wrong here: > > > > > > Hmm, it could get into a loop here if there is a page in the pagecache > > > with a zero refcount, which might be a problem with XFS... other looping > > > conditions might indicate a problem iwth lockless pagecache or radix > > > tree. It would be very helpful to know what condition it is looping on... > > > > See http://oss.sgi.com/bugzilla/show_bug.cgi?id=805 > > OK.. Hmm, well here is a modification to your patch which might help further. > I'll see if I can reproduce it here meanwhile. I have reproduced it. It seems like it might be a livelock condition because the system ended up recovering after I terminated the dd (and did so before I collected any real info, oops, hopefully I can reproduce it again). This would fit with the problem going away when the debugging patch was applied. Timing changes... From npiggin@suse.de Mon Jan 5 00:48:49 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n056ml6w030728 for ; Mon, 5 Jan 2009 00:48:49 -0600 X-ASG-Debug-ID: 1231138120-2fa702810000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D8D4E5F106 for ; Sun, 4 Jan 2009 22:48:41 -0800 (PST) Received: from mx1.suse.de (ns.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id WWnFAH7lLMBIAl7u for ; Sun, 04 Jan 2009 22:48:41 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from Relay1.suse.de (relay-ext.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 6022F446AF; Mon, 5 Jan 2009 07:48:39 +0100 (CET) Date: Mon, 5 Jan 2009 07:48:38 +0100 From: Nick Piggin To: Christoph Hellwig Cc: Peter Klotz , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? Message-ID: <20090105064838.GA5209@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090105041959.GC367@wotan.suse.de> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: ns.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231138126 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Jan 05, 2009 at 05:19:59AM +0100, Nick Piggin wrote: > On Mon, Jan 05, 2009 at 02:48:21AM +0100, Nick Piggin wrote: > > > > OK.. Hmm, well here is a modification to your patch which might help further. > > I'll see if I can reproduce it here meanwhile. > > I have reproduced it. It seems like it might be a livelock condition > because the system ended up recovering after I terminated the dd (and > did so before I collected any real info, oops, hopefully I can > reproduce it again). > > This would fit with the problem going away when the debugging patch > was applied. Timing changes... No, I was wrong. The problem goes away with the patch applied because a function call == a compiler barrier. The problem randomly recovered for me because of something more subtle. I believe this patch should solve it. Please test and confirm before I send it upstream. --- An XFS workload showed up a bug in the lockless pagecache patch. Basically it would go into an "infinite" loop, although it would sometimes be able to break out of the loop! The reason is a missing compiler barrier in the "increment reference count unless it was zero" case of the lockless pagecache protocol in the gang lookup functions. This would cause the compiler to use a cached value of struct page pointer to retry the operation with, rather than reload it. So the page might have been removed from pagecache and freed (refcount==0) but the lookup would not correctly notice the page is no longer in pagecache, and keep attempting to increment the refcount and failing, until the page gets reallocated for something else. This isn't a data corruption because the condition will be detected if the page has been reallocated. However it can result in a lockup. Add a the required compiler barrier and comment to fix this. Assembly snippet from find_get_pages, before: .L220: movq (%rbx), %rax #* ivtmp.1162, tmp82 movq (%rax), %rdi #, prephitmp.1149 .L218: testb $1, %dil #, prephitmp.1149 jne .L217 #, testq %rdi, %rdi # prephitmp.1149 je .L203 #, cmpq $-1, %rdi #, prephitmp.1149 je .L217 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L218 #, after: .L212: movq (%rbx), %rax #* ivtmp.1109, tmp81 movq (%rax), %rdi #, ret testb $1, %dil #, ret jne .L211 #, testq %rdi, %rdi # ret je .L197 #, cmpq $-1, %rdi #, ret je .L211 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L212 #, (notice the obvious infinite loop in the first example, if page->count remains 0) --- Index: linux-2.6/mm/filemap.c =================================================================== --- linux-2.6.orig/mm/filemap.c 2009-01-05 17:22:57.000000000 +1100 +++ linux-2.6/mm/filemap.c 2009-01-05 17:28:40.000000000 +1100 @@ -794,8 +794,19 @@ repeat: if (unlikely(page == RADIX_TREE_RETRY)) goto restart; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* + * A failed page_cache_get_speculative operation does + * not imply any barriers (Documentation/atomic_ops.txt), + * and as such, we must force the compiler to deref the + * radix-tree slot again rather than using the cached + * value (because we need to give up if the page has been + * removed from the radix-tree, rather than looping until + * it gets reused for something else). + */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { @@ -850,8 +861,11 @@ repeat: if (page->mapping == NULL || page->index != index) break; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* barrier: see find_get_pages() */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { @@ -904,8 +918,11 @@ repeat: if (unlikely(page == RADIX_TREE_RETRY)) goto restart; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* barrier: see find_get_pages() */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { From kononov@ftml.net Mon Jan 5 08:25:40 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05EPdx0025668 for ; Mon, 5 Jan 2009 08:25:40 -0600 X-ASG-Debug-ID: 1231165539-486802b10000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from out2.smtp.messagingengine.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 36C2D174B322 for ; Mon, 5 Jan 2009 06:25:39 -0800 (PST) Received: from out2.smtp.messagingengine.com (out2.smtp.messagingengine.com [66.111.4.26]) by cuda.sgi.com with ESMTP id WAB49kjt3bXakDlu for ; Mon, 05 Jan 2009 06:25:39 -0800 (PST) Received: from compute2.internal (compute2.internal [10.202.2.42]) by out1.messagingengine.com (Postfix) with ESMTP id 778592022E3; Mon, 5 Jan 2009 09:25:07 -0500 (EST) Received: from heartbeat2.messagingengine.com ([10.202.2.161]) by compute2.internal (MEProxy); Mon, 05 Jan 2009 09:25:07 -0500 X-Sasl-enc: p0ii0BFEGz/E6Rn57sv60RAT2mRzZiv49Ak2u5vYfUMt 1231165507 Received: from hole.wormery.net (adsl-70-131-211-107.dsl.emhril.sbcglobal.net [70.131.211.107]) by mail.messagingengine.com (Postfix) with ESMTPSA id 2867431B6E; Mon, 5 Jan 2009 09:25:07 -0500 (EST) Received: from [192.168.130.197] (aaa.wormery.net [192.168.130.197]) by hole.wormery.net (Postfix) with ESMTP id E39B71E4135; Mon, 5 Jan 2009 08:25:05 -0600 (CST) Message-ID: <49621841.7040108@ftml.net> Date: Mon, 05 Jan 2009 08:25:05 -0600 From: Roman Kononov User-Agent: Thunderbird 2.0.0.18 (X11/20081125) MIME-Version: 1.0 To: Nick Piggin CC: Christoph Hellwig , Peter Klotz , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> In-Reply-To: <20090105064838.GA5209@wotan.suse.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: out2.smtp.messagingengine.com[66.111.4.26] X-Barracuda-Start-Time: 1231165539 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14486 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On 2009-01-05 00:48 Nick Piggin said the following: > I believe this patch should solve it. Please test and confirm before > I send it upstream. 3 systems with 2.6.27.10 have worked overnight with dd running continuously. They all failed within 20 minutes without the patch. Thank you, Roman From peter.klotz@aon.at Mon Jan 5 10:22:01 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05GM1BA000637 for ; Mon, 5 Jan 2009 10:22:01 -0600 X-ASG-Debug-ID: 1231172518-141b03b50000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from email.aon.at (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 6BCC16140A for ; Mon, 5 Jan 2009 08:21:59 -0800 (PST) Received: from email.aon.at (nat-warsl417-02.aon.at [195.3.96.120]) by cuda.sgi.com with ESMTP id 8kgcE7aDSuiEHP2g for ; Mon, 05 Jan 2009 08:21:59 -0800 (PST) Received: (qmail 18565 invoked from network); 5 Jan 2009 16:21:58 -0000 Received: from smarthub93.highway.telekom.at (HELO email.aon.at) ([172.18.5.237]) (envelope-sender ) by fallback44.highway.telekom.at (qmail-ldap-1.03) with SMTP for ; 5 Jan 2009 16:21:58 -0000 Received: (qmail 26826 invoked from network); 5 Jan 2009 16:21:25 -0000 Received: from 91-114-253-96.adsl.highway.telekom.at (HELO [192.168.0.100]) ([91.114.253.96]) (envelope-sender ) by smarthub93.highway.telekom.at (qmail-ldap-1.03) with SMTP for ; 5 Jan 2009 16:21:25 -0000 Message-ID: <49623384.2070801@aon.at> Date: Mon, 05 Jan 2009 17:21:24 +0100 From: Peter Klotz User-Agent: Thunderbird 2.0.0.18 (X11/20081125) MIME-Version: 1.0 To: Nick Piggin CC: Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com X-ASG-Orig-Subj: Re: BUG: soft lockup - is this XFS problem? Subject: Re: BUG: soft lockup - is this XFS problem? References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> In-Reply-To: <20090105064838.GA5209@wotan.suse.de> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Barracuda-Connect: nat-warsl417-02.aon.at[195.3.96.120] X-Barracuda-Start-Time: 1231172520 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14492 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- Nick Piggin wrote: > I believe this patch should solve it. Please test and confirm before > I send it upstream. My test successfully completed two times, writing a 900GB file in each run. I used a patched 2.6.27.10 x86_64 kernel. On an unpatched system this test usually fails before reaching 100GB. Thank you for fixing this issue that quick. Regards, Peter. From npiggin@suse.de Mon Jan 5 10:41:39 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05GfdxN001615 for ; Mon, 5 Jan 2009 10:41:39 -0600 X-ASG-Debug-ID: 1231173697-32cb00340000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 32F9717A8083 for ; Mon, 5 Jan 2009 08:41:37 -0800 (PST) Received: from mx1.suse.de (cantor.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id 66IUWFrWoGhEExiS for ; Mon, 05 Jan 2009 08:41:37 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation 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 EE62C44A32; Mon, 5 Jan 2009 17:41:35 +0100 (CET) Date: Mon, 5 Jan 2009 17:41:35 +0100 From: Nick Piggin To: Peter Klotz , Linus Torvalds , stable@kernel.org, Linux Memory Management List Cc: Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090105164135.GC32675@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <49623384.2070801@aon.at> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: cantor.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231173699 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Hi, This patch should be applied to 2.6.29 and 27/28 stable kernels, please. -- Peter Klotz and Roman Kononov both reported a bug where in XFS workloads where they were seeing softlockups in find_get_pages (http://oss.sgi.com/bugzilla/show_bug.cgi?id=805). Basically it would go into an "infinite" loop, although it would sometimes be able to break out of the loop depending on the phase of the moon. This turns out to be a bug in the lockless pagecache patch. There is a missing compiler barrier in the "increment reference count unless it was zero" failure case of the lockless pagecache protocol in the gang lookup functions. This would cause the compiler to use a cached value of struct page pointer to retry the operation with, rather than reload it. So the page might have been removed from pagecache and freed (refcount==0) but the lookup would not correctly notice the page is no longer in pagecache, and keep attempting to increment the refcount and failing, until the page gets reallocated for something else. This isn't a data corruption because the condition will be properly handled if the page does get reallocated. However it can result in a lockup. Add a the required compiler barrier and comment to fix this. Assembly snippet from find_get_pages, before: .L220: movq (%rbx), %rax #* ivtmp.1162, tmp82 movq (%rax), %rdi #, prephitmp.1149 .L218: testb $1, %dil #, prephitmp.1149 jne .L217 #, testq %rdi, %rdi # prephitmp.1149 je .L203 #, cmpq $-1, %rdi #, prephitmp.1149 je .L217 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L218 #, after: .L212: movq (%rbx), %rax #* ivtmp.1109, tmp81 movq (%rax), %rdi #, ret testb $1, %dil #, ret jne .L211 #, testq %rdi, %rdi # ret je .L197 #, cmpq $-1, %rdi #, ret je .L211 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L212 #, (notice the obvious infinite loop in the first example, if page->count remains 0) The problem was noticed and resolved on 2.6.27 stable kernels, and also applies upstream (where I was able to reproduce it and verify the fix). Reported-by: Peter Klotz Reported-by: Roman Kononov Tested-by: Peter Klotz Tested-by: Roman Kononov Signed-off-by: Nick Piggin --- Index: linux-2.6/mm/filemap.c =================================================================== --- linux-2.6.orig/mm/filemap.c 2009-01-05 17:22:57.000000000 +1100 +++ linux-2.6/mm/filemap.c 2009-01-05 17:28:40.000000000 +1100 @@ -794,8 +794,19 @@ repeat: if (unlikely(page == RADIX_TREE_RETRY)) goto restart; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* + * A failed page_cache_get_speculative operation does + * not imply any barriers (Documentation/atomic_ops.txt), + * and as such, we must force the compiler to deref the + * radix-tree slot again rather than using the cached + * value (because we need to give up if the page has been + * removed from the radix-tree, rather than looping until + * it gets reused for something else). + */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { @@ -850,8 +861,11 @@ repeat: if (page->mapping == NULL || page->index != index) break; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* barrier: see find_get_pages() */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { @@ -904,8 +918,11 @@ repeat: if (unlikely(page == RADIX_TREE_RETRY)) goto restart; - if (!page_cache_get_speculative(page)) + if (!page_cache_get_speculative(page)) { + /* barrier: see find_get_pages() */ + barrier(); goto repeat; + } /* Has the page moved? */ if (unlikely(page != *((void **)pages[i]))) { From torvalds@linux-foundation.org Mon Jan 5 11:31:24 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05HVH9U005624 for ; Mon, 5 Jan 2009 11:31:24 -0600 X-ASG-Debug-ID: 1231176675-498e00c40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.linux-foundation.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id EB8DC61000 for ; Mon, 5 Jan 2009 09:31:15 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id HAX8fUbyEUQL3lBN for ; Mon, 05 Jan 2009 09:31:15 -0800 (PST) Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [140.211.169.55]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05HUuWG029737 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Jan 2009 09:30:57 -0800 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05HUtLu012086; Mon, 5 Jan 2009 09:30:55 -0800 Date: Mon, 5 Jan 2009 09:30:55 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Nick Piggin cc: Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) In-Reply-To: <20090105164135.GC32675@wotan.suse.de> Message-ID: References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.13 X-Barracuda-Connect: smtp1.linux-foundation.org[140.211.169.13] X-Barracuda-Start-Time: 1231176675 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14494 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 5 Jan 2009, Nick Piggin wrote: > > This patch should be applied to 2.6.29 and 27/28 stable kernels, please. No. I think this patch is utter crap. But please feel free to educate me on why that is not the case. Here's my explanation: Not only is it ugly (which is already sufficient ground to suspect it is wrong or could at least be done better), but reading the comment, it makes no sense at all. You only put the barrier in the "goto repeat" case, but the thing is, if you worry about radix tree slot not being reloaded in the repeat case, then you damn well should worry about it not being reloaded in the non-repeat case too! The code is immediately followed by a test to see that the page is still the same in the slot, ie this: /* * Has the page moved? * This is part of the lockless pagecache protocol. See * include/linux/pagemap.h for details. */ if (unlikely(page != *pagep)) { and if you need a barrier for the repeat case, you need one for this case too. In other words, it looks like you fixed the symptom, but not the real cause! That's now how we work in the kernel. The real cause, btw, appears to be that radix_tree_deref_slot() is a piece of slimy sh*t, and has not been correctly updated to RCU. The proper fix doesn't require any barriers that I can see - I think the proper fix is this simple one-liner. If you use RCU to protect a data structure, then any data loaded from that data structure that can change due to RCU should be loaded with "rcu_dereference()". Now, I can't test this, because it makes absolutely no difference for me (the diff isn't empty, but the asm changes seem to be all due to just gcc variable numbering changing). I can't seem to see the buggy code. Maybe it needs a specific compiler version, or some specific config option to trigger? So because I can't see the issue, I also obviously can't verify that it's the only possible case. Maybe there is some other memory access that should also be done with the proper rcu accessors? Of course, it's also possible that we should just put a barrier in page_cache_get_speculative(). That doesn't seem to make a whole lot of conceptual sense, though (the same way that your barrier() didn't make any sense - I don't see that the barrier has absolutely _anything_ to do with whether the speculative getting of the page fails or not!) In general, I'd like fewer "band-aid" patches, and more "deep thinking" patches. I'm not saying mine is very deep either, but I think it's at least scrathing the surface of the real problem rather than just trying to cover it up. Linus --- include/linux/radix-tree.h | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h index a916c66..355f6e8 100644 --- a/include/linux/radix-tree.h +++ b/include/linux/radix-tree.h @@ -136,7 +136,7 @@ do { \ */ static inline void *radix_tree_deref_slot(void **pslot) { - void *ret = *pslot; + void *ret = rcu_dereference(*pslot); if (unlikely(radix_tree_is_indirect_ptr(ret))) ret = RADIX_TREE_RETRY; return ret; From npiggin@suse.de Mon Jan 5 12:00:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_21 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05I0Bvu007269 for ; Mon, 5 Jan 2009 12:00:12 -0600 X-ASG-Debug-ID: 1231178410-0d5202900000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 1BCC5612B7 for ; Mon, 5 Jan 2009 10:00:10 -0800 (PST) Received: from mx1.suse.de (ns1.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id 9DtsGI8Qq0RpFYWv for ; Mon, 05 Jan 2009 10:00:10 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation Received: from Relay1.suse.de (relay-ext.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 1B84D4585C; Mon, 5 Jan 2009 19:00:09 +0100 (CET) Date: Mon, 5 Jan 2009 19:00:08 +0100 From: Nick Piggin To: Linus Torvalds Cc: Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090105180008.GE32675@wotan.suse.de> References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.9i X-Barracuda-Connect: ns1.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231178411 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Jan 05, 2009 at 09:30:55AM -0800, Linus Torvalds wrote: > > > On Mon, 5 Jan 2009, Nick Piggin wrote: > > > > This patch should be applied to 2.6.29 and 27/28 stable kernels, please. > > No. I think this patch is utter crap. But please feel free to educate me > on why that is not the case. > > Here's my explanation: > > Not only is it ugly (which is already sufficient ground to suspect it is > wrong or could at least be done better), but reading the comment, it makes > no sense at all. You only put the barrier in the "goto repeat" case, but > the thing is, if you worry about radix tree slot not being reloaded in the > repeat case, then you damn well should worry about it not being reloaded > in the non-repeat case too! In which case atomic_inc_unless is defined to provide a barrier. > The code is immediately followed by a test to see that the page is still > the same in the slot, ie this: > > /* > * Has the page moved? > * This is part of the lockless pagecache protocol. See > * include/linux/pagemap.h for details. > */ > if (unlikely(page != *pagep)) { > > and if you need a barrier for the repeat case, you need one for this case > too. > > In other words, it looks like you fixed the symptom, but not the real > cause! That's now how we work in the kernel. > > The real cause, btw, appears to be that radix_tree_deref_slot() is a piece > of slimy sh*t, and has not been correctly updated to RCU. The proper fix > doesn't require any barriers that I can see - I think the proper fix is > this simple one-liner. > > If you use RCU to protect a data structure, then any data loaded from that > data structure that can change due to RCU should be loaded with > "rcu_dereference()". It doesn't need that because the last level pointers in the radix tree are not necessarily under RCU, but whatever synchronisation the caller uses (in this case, speculative page references, which should not require smp_read_barrier_depends, AFAIKS). Putting an rcu_dereference there might work, but I think it misses a subtlety of this code. > Now, I can't test this, because it makes absolutely no difference for me > (the diff isn't empty, but the asm changes seem to be all due to just gcc > variable numbering changing). I can't seem to see the buggy code. Maybe it > needs a specific compiler version, or some specific config option to > trigger? > > So because I can't see the issue, I also obviously can't verify that it's > the only possible case. Maybe there is some other memory access that > should also be done with the proper rcu accessors? > > Of course, it's also possible that we should just put a barrier in > page_cache_get_speculative(). That doesn't seem to make a whole lot of > conceptual sense, though (the same way that your barrier() didn't make any > sense - I don't see that the barrier has absolutely _anything_ to do with > whether the speculative getting of the page fails or not!) When that fails, the caller can (almost) assume the pointer has changed. So it has to load the new pointer to continue. The object pointed to is not protected with RCU, nor is there a requirement to see a specific load execution ordering. > > In general, I'd like fewer "band-aid" patches, and more "deep thinking" > patches. I'm not saying mine is very deep either, but I think it's at > least scrathing the surface of the real problem rather than just trying to > cover it up. From tritium_helium@hotmail.com Mon Jan 5 13:05:07 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=3.1 required=5.0 tests=BAYES_50,HTML_MESSAGE, J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05J564S011036 for ; Mon, 5 Jan 2009 13:05:07 -0600 X-ASG-Debug-ID: 1231182301-32d6020f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bay0-omc2-s9.bay0.hotmail.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 3C6CC17A8A6A for ; Mon, 5 Jan 2009 11:05:02 -0800 (PST) Received: from bay0-omc2-s9.bay0.hotmail.com (bay0-omc2-s9.bay0.hotmail.com [65.54.246.145]) by cuda.sgi.com with ESMTP id NmxPUxHE0yYX431b for ; Mon, 05 Jan 2009 11:05:02 -0800 (PST) Received: from BAY123-W14 ([207.46.11.49]) by bay0-omc2-s9.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 5 Jan 2009 11:04:30 -0800 Message-ID: X-Originating-IP: [82.233.133.236] From: Tritium Tritium To: X-ASG-Orig-Subj: retrocompatibility XFS 2.10.1 with 2.8.1 ? Subject: retrocompatibility XFS 2.10.1 with 2.8.1 ? Date: Mon, 5 Jan 2009 19:04:30 +0000 Importance: Normal MIME-Version: 1.0 X-OriginalArrivalTime: 05 Jan 2009 19:04:30.0908 (UTC) FILETIME=[705B3FC0:01C96F68] X-Barracuda-Connect: bay0-omc2-s9.bay0.hotmail.com[65.54.246.145] X-Barracuda-Start-Time: 1231182306 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0086 1.0000 -1.9648 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1.96 X-Barracuda-Spam-Status: No, SCORE=-1.96 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=HTML_MESSAGE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14500 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 HTML_MESSAGE BODY: HTML included in message Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-length: 1126 HI ! In first, I 'm a french user and sorry for my very bad english ... For an Adsl Box, I want to partitionning and format my external hard disk d= rive under XFS .What a good idea , isn't it ? ;o) I get my Mandriva One (I know it isn't a "professionnal" distribution but y= ou know the French search the simple thing !) and use fdisk -l , gparted an= d mkfs.xfs /dev/xxx . With this, the adsl box reboot ! And of course it doesn't recognize the par= tition. I tried with a Debian Etch XFS ... and this is a SUCCESS ! When I compare XFS versions I find a 2.10.1 for Mandriva and 2.8.1 for Debi= an. Why the same command under two differents versions produce two format incom= patible ? Why the XFS 2.10.1 version is not compatible with the 2.8.1 ? It's a trap for newbie who get a old hardware under linux ... Thanks for your patience . Reguards Vince. _________________________________________________________________ T=E9l=E9phonez gratuitement =E0 tous vos proches avec Windows Live Messenge= r=A0 !=A0 T=E9l=E9chargez-le maintenant ! http://www.windowslive.fr/messenger/1.asp [[HTML alternate version deleted]] From SRS0+078186c4fdf4bbd729b5+1961+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 5 13:31:32 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05JVUYk013559 for ; Mon, 5 Jan 2009 13:31:32 -0600 X-ASG-Debug-ID: 1231183889-5cea00410000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D3C4E17A8684 for ; Mon, 5 Jan 2009 11:31:29 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id zCWtbErP3M0YLK2y for ; Mon, 05 Jan 2009 11:31:29 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJvAf-0005Dh-2Q for xfs@oss.sgi.com; Mon, 05 Jan 2009 19:31:29 +0000 Date: Mon, 5 Jan 2009 14:31:29 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com X-ASG-Orig-Subj: [PATCH] define xfs_ino_t as unsigned long long Subject: [PATCH] define xfs_ino_t as unsigned long long Message-ID: <20090105193129.GA19909@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231183889 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com That way we can avoid ugly casts when printining it (like the ones that show up on powerpc with Linus' current tree). Signed-off-by: Christoph Hellwig Index: xfs/fs/xfs/xfs_types.h =================================================================== --- xfs.orig/fs/xfs/xfs_types.h 2009-01-01 11:53:17.321546620 +0100 +++ xfs/fs/xfs/xfs_types.h 2009-01-05 20:30:04.794549213 +0100 @@ -45,7 +45,7 @@ typedef __uint32_t prid_t; /* project typedef __uint32_t inst_t; /* an instruction */ typedef __s64 xfs_off_t; /* type */ -typedef __u64 xfs_ino_t; /* type */ +typedef unsigned long long xfs_ino_t; /* type */ typedef __s64 xfs_daddr_t; /* type */ typedef char * xfs_caddr_t; /* type */ typedef __u32 xfs_dev_t; From torvalds@linux-foundation.org Mon Jan 5 13:32:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05JWZt4013664 for ; Mon, 5 Jan 2009 13:32:35 -0600 X-ASG-Debug-ID: 1231183952-5ce7004d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.linux-foundation.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id C870717A86FC for ; Mon, 5 Jan 2009 11:32:33 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id piPCHMk0fsfF7qDR for ; Mon, 05 Jan 2009 11:32:33 -0800 (PST) Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [140.211.169.55]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05IiSjG001741 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Jan 2009 10:44:29 -0800 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05IiRh1006722; Mon, 5 Jan 2009 10:44:27 -0800 Date: Mon, 5 Jan 2009 10:44:27 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Nick Piggin cc: Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) In-Reply-To: <20090105180008.GE32675@wotan.suse.de> Message-ID: References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.13 X-Barracuda-Connect: smtp1.linux-foundation.org[140.211.169.13] X-Barracuda-Start-Time: 1231183954 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14502 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 5 Jan 2009, Nick Piggin wrote: > On Mon, Jan 05, 2009 at 09:30:55AM -0800, Linus Torvalds wrote: > > > > Not only is it ugly (which is already sufficient ground to suspect it is > > wrong or could at least be done better), but reading the comment, it makes > > no sense at all. You only put the barrier in the "goto repeat" case, but > > the thing is, if you worry about radix tree slot not being reloaded in the > > repeat case, then you damn well should worry about it not being reloaded > > in the non-repeat case too! > > In which case atomic_inc_unless is defined to provide a barrier. Hmm. Ok, granted. > > If you use RCU to protect a data structure, then any data loaded from that > > data structure that can change due to RCU should be loaded with > > "rcu_dereference()". > > It doesn't need that because the last level pointers in the radix > tree are not necessarily under RCU, but whatever synchronisation > the caller uses (in this case, speculative page references, which > should not require smp_read_barrier_depends, AFAIKS). rcu_dereference() does more than that smp_read_barrier_depends() (which is a no-op on all sane architectures). The important part of rcu_dereference() is the ACCESS_ONCE() part. That's the one that guarantees the access to happen - exactly once. > Putting an rcu_dereference there might work, but I think it misses a > subtlety of this code. No, _you_ miss the subtlety of something that can change under you. Look at radix_tree_deref_slot(), and realize that without the rcu_dereference(), the compiler would actually be allowed to think that it can re-load anything from *pslot several times. So without my one-liner patch, the compiler can actually do this: register = load_from_memory(pslot) if (radix_tree_is_indirect_ptr(register)) goto fail: return load_from_memory(pslot); fail: return RADIX_TREE_RETRY; see? Imagine if you are low on registers (x86, anyone?) and look at that radix_tree_is_indirect_ptr() test: it does a logical "and" which can be done with a memory instruction on x86. So the compiler could _literally_ compile this as testb $1,(%eax) ; %eax is "pslot" jne indirect_pointer movl (%eax),%eax ; now we load it for real rather than movl (%eax),%eax testl $1,%eax jne indirect_pointer because the first version actually keeps more registers live for the indirect case. In fact, the compiler might be delaying that "movl" until much later (depending on barriers and needs). And notice how that "now we load it for real" may be getting a new value - including a possible indirect pointer value, even though we tested that it wasn't an indirect pointer! And THIS is why code that depends on RCU needs to use "rcu_dereference()". Because otherwise you may be testing one thing, and then later using some _other_ value than the one you tested. You must guarantee that you really just load it once, and that the compiler doesn't decide that it can load it multiple times, and test the multiple (possibly different) values using different logic. > > Of course, it's also possible that we should just put a barrier in > > page_cache_get_speculative(). That doesn't seem to make a whole lot of > > conceptual sense, though (the same way that your barrier() didn't make any > > sense - I don't see that the barrier has absolutely _anything_ to do with > > whether the speculative getting of the page fails or not!) > > When that fails, the caller can (almost) assume the pointer has changed. Not relevant. Yes, when it fails, the caller can obviously assume that the pointer has almost certainly changed, but that's neither here nor there - if the page_cache_get_speculative() fails, you mustn't use that pointer *whether* it has changed or not. So there's no point in even testing, and the code obviously doesn't. > So it has to load the new pointer to continue. The object pointed to is > not protected with RCU, nor is there a requirement to see a specific > load execution ordering. Either the value can change, or it can not. It's that simple. If it cannot change, then we can load it just once, or we can load it multiple times, and it won't matter. Barriers won't do anything but screw up the code. If it can change from under us, you need to use rcu_dereference(), or open-code it with an ACCESS_ONCE() or put in barriers. But your placement of a barrier was NONSENSICAL. Your barrier didn't protect anything else - like the test for the RADIX_TREE_INDIRECT_PTR bit. And that was the fundamental problem. And once you fix that fundamental problem, your barrier no longer makes any sense, because the barrier HAS NOTHING TO DO WITH WHETHER page_cache_get_speculative() fails or not! Linus From torvalds@linux-foundation.org Mon Jan 5 13:39:46 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05JdkMh014091 for ; Mon, 5 Jan 2009 13:39:46 -0600 X-ASG-Debug-ID: 1231184385-5eee00540000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.linux-foundation.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 952A017A90D7 for ; Mon, 5 Jan 2009 11:39:45 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id c2GBYmi40tAtHqB8 for ; Mon, 05 Jan 2009 11:39:45 -0800 (PST) Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [140.211.169.55]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05JdUCq005369 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Jan 2009 11:39:31 -0800 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05JdTtR019125; Mon, 5 Jan 2009 11:39:29 -0800 Date: Mon, 5 Jan 2009 11:39:29 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: Nick Piggin cc: Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) In-Reply-To: Message-ID: References: <20081223171259.GA11945@infradead.org> <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.13 X-Barracuda-Connect: smtp1.linux-foundation.org[140.211.169.13] X-Barracuda-Start-Time: 1231184385 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14502 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 5 Jan 2009, Linus Torvalds wrote: > > Either the value can change, or it can not. It's that simple. > > If it cannot change, then we can load it just once, or we can load it > multiple times, and it won't matter. Barriers won't do anything but screw > up the code. > > If it can change from under us, you need to use rcu_dereference(), or > open-code it with an ACCESS_ONCE() or put in barriers. But your placement > of a barrier was NONSENSICAL. Your barrier didn't protect anything else - > like the test for the RADIX_TREE_INDIRECT_PTR bit. > > And that was the fundamental problem. Btw, this is the real issue with anything that does "locking vs optimistic" accesses. If you use locking, then by definition (if you did things right), the values you are working with do not change. As a result, it doesn't matter if the compiler re-orders accesses, splits them up, or coalesces them. It's why normal code should never need barriers, because it doesn't matter whether some access gets optimized away or gets done multiple times. But whenever you use an optimistic algorithm, and the data may change under you, you need to use barriers or other things to limit the things the CPU and/or compiler does. And yes, "rcu_dereference()" is one such thing - it's not a barrier in the sense that it doesn't necessarily affect ordering of accesses to other variables around it (although the read_barrier_depends() obviously _is_ a very special kind of ordering wrt the pointer itself on alpha). But it does make sure that the compiler at least does not coalesce - or split - that _one_ particular access. It's true that it has "rcu" in its name, and it's also true that that may be a bit misleading in that it's very much useful not just for rcu, but for _any_ algorithm that depends on rcu-like behavior - ie optimistic accesses to data that may change underneath it. RCU is just the most commonly used (and perhaps best codified) variant of that kind of code. Linus From paulmck@paulmck-laptop.linux.vnet.ibm.com Mon Jan 5 14:13:12 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05KD84Y016119 for ; Mon, 5 Jan 2009 14:13:12 -0600 X-ASG-Debug-ID: 1231186387-658700cd0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9653862913 for ; Mon, 5 Jan 2009 12:13:08 -0800 (PST) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id cyHlDE3WRhpSBmmH for ; Mon, 05 Jan 2009 12:13:08 -0800 (PST) Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e5.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n05KBi8X019302 for ; Mon, 5 Jan 2009 15:11:44 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n05KD7F5188708 for ; Mon, 5 Jan 2009 15:13:07 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n05LDA48026184 for ; Mon, 5 Jan 2009 16:13:18 -0500 Received: from paulmck-laptop.localdomain (paulmck-laptop-009047022065.beaverton.ibm.com [9.47.22.65]) by d01av04.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n05LD9E1026105; Mon, 5 Jan 2009 16:13:09 -0500 Received: by paulmck-laptop.localdomain (Postfix, from userid 1000) id 94F4C14FB40; Mon, 5 Jan 2009 12:12:58 -0800 (PST) Date: Mon, 5 Jan 2009 12:12:58 -0800 From: "Paul E. McKenney" To: Linus Torvalds Cc: Nick Piggin , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090105201258.GN6959@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1231186388 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14504 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 10:44:27AM -0800, Linus Torvalds wrote: > On Mon, 5 Jan 2009, Nick Piggin wrote: > > On Mon, Jan 05, 2009 at 09:30:55AM -0800, Linus Torvalds wrote: > > Putting an rcu_dereference there might work, but I think it misses a > > subtlety of this code. > > No, _you_ miss the subtlety of something that can change under you. > > Look at radix_tree_deref_slot(), and realize that without the > rcu_dereference(), the compiler would actually be allowed to think that it > can re-load anything from *pslot several times. So without my one-liner > patch, the compiler can actually do this: > > register = load_from_memory(pslot) > if (radix_tree_is_indirect_ptr(register)) > goto fail: > return load_from_memory(pslot); > > fail: > return RADIX_TREE_RETRY; My guess is that Nick believes that the value in *pslot cannot change in such as way as to cause radix_tree_is_indirect_ptr()'s return value to change within a given RCU grace period, and that Linus disagrees. Whatever the answer, I would argue for -at- -least- a comment explaining why it is safe. I am not seeing the objection to rcu_dereference(), but I must confess that it has been awhile since I have looked closely at the radix_tree code. :-/ Thanx, Paul From SRS0+078186c4fdf4bbd729b5+1961+infradead.org+hch@bombadil.srs.infradead.org Mon Jan 5 14:19:44 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05KJhTE016718 for ; Mon, 5 Jan 2009 14:19:44 -0600 X-ASG-Debug-ID: 1231186783-5d5601440000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from bombadil.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9514517A8DD9 for ; Mon, 5 Jan 2009 12:19:43 -0800 (PST) Received: from bombadil.infradead.org (bombadil.infradead.org [18.85.46.34]) by cuda.sgi.com with ESMTP id yREe4xw18JfcV8xU for ; Mon, 05 Jan 2009 12:19:43 -0800 (PST) X-ASG-Whitelist: Client Received: from hch by bombadil.infradead.org with local (Exim 4.68 #1 (Red Hat Linux)) id 1LJvvK-0001qe-Ki; Mon, 05 Jan 2009 20:19:42 +0000 Date: Mon, 5 Jan 2009 15:19:42 -0500 From: Christoph Hellwig To: xfs@oss.sgi.com Cc: Arkadiusz Miskiewicz X-ASG-Orig-Subj: [PATCH] xfs_repair: allow filesystems with a single allocation group Subject: [PATCH] xfs_repair: allow filesystems with a single allocation group Message-ID: <20090105201942.GA6960@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.18 (2008-05-17) X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org See http://www.infradead.org/rpr.html X-Barracuda-Connect: bombadil.infradead.org[18.85.46.34] X-Barracuda-Start-Time: 1231186783 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com Currently xfs_repair bails out on a filesystem with just a single AG. But that's a perfectly valid configureation, so we should allow it. Because we could cause harm only allow it when using the force_geometry suboption. But we nice enough to tell the user about it when he needs it. Also make sure to take the internal log into account when guestimating the first inode cluster offset. I'll also cook up a testcase for repair on single AG filesystems. Signed-off-by: Christoph Hellwig Reported-By: Arkadiusz Miskiewicz Index: xfsprogs-dev/repair/sb.c =================================================================== --- xfsprogs-dev.orig/repair/sb.c 2009-01-03 21:57:42.415546683 +0100 +++ xfsprogs-dev/repair/sb.c 2009-01-05 21:19:01.706752325 +0100 @@ -760,27 +760,37 @@ verify_set_primary_sb(xfs_sb_t *rsb, switch (num_sbs) { case 2: /* - * all them have to be right. if not, report geometry - * and get out unless force option is in effect (-F) + * If we only have two allocation groups, and the superblock + * in the second allocation group differs from the primary + * superblock we can't verify the geometry information. + * Warn the user about this situation and get out unless + * explicitly overridden. */ if (current->refs != 2) { if (!force_geo) { do_warn( - _("Only two AGs detected and they do not match - cannot proceed.\n")); + _("Only two AGs detected and they do not match - " + "cannot validate filesystem geometry.\n" + "Use the -o force_geometry option to proceed.\n")); exit(1); } } - break; + goto out_free_list; case 1: /* - * just report the geometry info and get out. - * refuse to run further unless the force (-F) - * option is in effect. + * If we only have a single allocation group there is no + * secondary superblock that we can use to verify the geometry + * information. Warn the user about this situation and get + * out unless explicitly overridden. */ if (!force_geo) { - do_warn(_("Only one AG detected - cannot proceed.\n")); + do_warn( + _("Only one AG detected - " + "cannot validate filesystem geometry.\n" + "Use the -o force_geometry option to proceed.\n")); exit(1); } + goto out_free_list; default: /* * at least half of the probed superblocks have @@ -820,6 +830,7 @@ verify_set_primary_sb(xfs_sb_t *rsb, sb_width = sb->sb_width; } +out_free_list: free_geo(list); out: free(sb); Index: xfsprogs-dev/repair/xfs_repair.c =================================================================== --- xfsprogs-dev.orig/repair/xfs_repair.c 2009-01-03 21:57:42.416547229 +0100 +++ xfsprogs-dev/repair/xfs_repair.c 2009-01-05 20:53:24.810738262 +0100 @@ -62,6 +62,8 @@ char *o_opts[] = { "bhash", #define AG_STRIDE 4 "ag_stride", +#define FORCE_GEO 5 + "force_geometry", NULL }; @@ -258,6 +260,13 @@ process_args(int argc, char **argv) case AG_STRIDE: ag_stride = (int)strtol(val, NULL, 0); break; + case FORCE_GEO: + if (val) + noval('o', o_opts, FORCE_GEO); + if (force_geo) + respec('o', o_opts, FORCE_GEO); + force_geo = 1; + break; default: unknown('o', val); break; @@ -409,6 +418,19 @@ calc_mkfs(xfs_mount_t *mp) fino_bno = inobt_root + XFS_MIN_FREELIST_RAW(1, 1, mp) + 1; /* + * If we only have a single allocation group the log is also allocated + * in the first allocation group and we need to add the number of + * blocks used by the log to the above calculation. + * All this of course doesn't apply if we have an external log. + */ + if (mp->m_sb.sb_agcount == 1 && mp->m_sb.sb_logstart) { + /* + * XXX(hch): verify that sb_logstart makes sense? + */ + fino_bno += mp->m_sb.sb_logblocks; + } + + /* * ditto the location of the first inode chunks in the fs ('/') */ if (xfs_sb_version_hasdalign(&mp->m_sb) && do_inoalign) { Index: xfsprogs-dev/man/man8/xfs_repair.8 =================================================================== --- xfsprogs-dev.orig/man/man8/xfs_repair.8 2009-01-05 21:11:50.054546919 +0100 +++ xfsprogs-dev/man/man8/xfs_repair.8 2009-01-05 21:14:49.228027165 +0100 @@ -146,6 +146,15 @@ RAM size. This creates additional processing threads to parallel process AGs that span multiple concat units. This can significantly reduce repair times on concat based filesystems. +.TP +.BI force_geometry +Check the filesystem even if geometry information could not be validate. +Geometry information can not be validated if there is only a single +allocation group exists and thus no backups superblock exists, or +if there are two allocation groups and the two superblocks do not +agree on the filesystem geometry. Only use this option if you validated +the geometry yourself and know what your doing. In doubt do a run +in no modify mode first. .RE .TP .B \-t " interval" From torvalds@linux-foundation.org Mon Jan 5 14:40:15 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05KeBPA017759 for ; Mon, 5 Jan 2009 14:40:15 -0600 X-ASG-Debug-ID: 1231188009-499003740000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from smtp1.linux-foundation.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id D134262B68 for ; Mon, 5 Jan 2009 12:40:10 -0800 (PST) Received: from smtp1.linux-foundation.org (smtp1.linux-foundation.org [140.211.169.13]) by cuda.sgi.com with ESMTP id IqKRXJ5UBsu5DWAH for ; Mon, 05 Jan 2009 12:40:10 -0800 (PST) Received: from imap1.linux-foundation.org (imap1.linux-foundation.org [140.211.169.55]) by smtp1.linux-foundation.org (8.14.2/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05KdHPO009614 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Mon, 5 Jan 2009 12:39:18 -0800 Received: from localhost (localhost [127.0.0.1]) by imap1.linux-foundation.org (8.13.5.20060308/8.13.5/Debian-3ubuntu1.1) with ESMTP id n05KdEU9003036; Mon, 5 Jan 2009 12:39:15 -0800 Date: Mon, 5 Jan 2009 12:39:14 -0800 (PST) From: Linus Torvalds X-X-Sender: torvalds@localhost.localdomain To: "Paul E. McKenney" cc: Nick Piggin , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) In-Reply-To: <20090105201258.GN6959@linux.vnet.ibm.com> Message-ID: References: <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> User-Agent: Alpine 2.00 (LFD 1167 2008-08-23) MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII X-MIMEDefang-Filter: lf$Revision: 1.188 $ X-Scanned-By: MIMEDefang 2.63 on 140.211.169.13 X-Barracuda-Connect: smtp1.linux-foundation.org[140.211.169.13] X-Barracuda-Start-Time: 1231188010 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14506 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 5 Jan 2009, Paul E. McKenney wrote: > > My guess is that Nick believes that the value in *pslot cannot change > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > to change within a given RCU grace period, and that Linus disagrees. Oh, it's entirely possible that there are some lifetime rules or others that make it impossible for things to go from "not indirect" -> "indirect". So if that was Nick's point, then I'm not "disagreeing" per se. What I'm disagreeing about is that Nick apparently thinks that this is all subtle code, and as a result we should add barriers in some very non-obvious places. While _I_ think that the problem isn't properly solved by barriers, but by just making the code less subtle. If the barrier only exists because of the reload issue, then the obvious solution - to me - is to just use what is already the proper accessor function that forces a nice reload. That way the compiler is forced to create code that does what the source clearly means it to do, regardless of any barriers at all. Barriers in general should be the _last_ thing added. And if they are added, they should be added as deeply in the call-chain as possible, so that we don't need to add them in multiple call-sites. Again, using the rcu_dereference() approach seems to solve that issue too - rather than add three barriers in three different places, we just add the proper dereference in _one_ place. > Whatever the answer, I would argue for -at- -least- a comment explaining > why it is safe. I am not seeing the objection to rcu_dereference(), but > I must confess that it has been awhile since I have looked closely at > the radix_tree code. :-/ And I'm actually suprised that gcc can generate the problematic code in the first place. I'd expect that a "atomic_add_unless()" would always be at LEAST a compiler barrier, even if it isn't necessarily a CPU memory barrier. But because we inline it, and because we allow gcc to see that it doesn't do anything if it gets just the right value from memory, I guess gcc ends up able to change the "for()" loop so that the first iteration can exit specially, and then for that case (and no other case) it can cache variables over the whole atomic_add_unless(). Again, that's very fragile. The fact that Documentation/atomic_ops.txt says that the failure case doesn't contain any barriers is really _meant_ to be about the architecture-specific CPU barriers, not so much about something as simple as a compiler re-ordering. So while I think that we should use rcu_dereference() (regardless of any other issues), I _also_ think that part of the problem really is the excessive subtlety in the whole code, and the (obviously very surprising) fact that gcc could end up caching an unrelated memory load across that whole atomic op. Maybe we should make atomics always imply a compiler barrier, even when they do not imply a memory barrier. The one exception would be the (special) case of "atomic_read()/atomic_set()", which don't really do any kind of complex operation at all, and where we really do want the compiler to be able to coalesce multiple atomic_reads() to a single one. In contrast, there's no sense in allowing the compiler to coalesce a "atomic_add_unless()" with anything else. Making it a compiler barrier (possibly by uninlining it, or just adding a barrier to it) would also have avoided the whole subtle case - which is always a good thing. Linus From peterz@infradead.org Mon Jan 5 15:05:08 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05L58Mc019339 for ; Mon, 5 Jan 2009 15:05:08 -0600 X-ASG-Debug-ID: 1231189502-661501750000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from casper.infradead.org (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 30C9C62AD6 for ; Mon, 5 Jan 2009 13:05:02 -0800 (PST) Received: from casper.infradead.org (casper.infradead.org [85.118.1.10]) by cuda.sgi.com with ESMTP id 6CzFDagGm3XErTF1 for ; Mon, 05 Jan 2009 13:05:02 -0800 (PST) Received: from d9244.upc-d.chello.nl ([213.46.9.244] helo=twins) by casper.infradead.org with esmtpsa (Exim 4.69 #1 (Red Hat Linux)) id 1LJwd1-0004gx-Eo; Mon, 05 Jan 2009 21:04:51 +0000 Received: by twins (Postfix, from userid 1000) id 8E1F41813EF70; Mon, 5 Jan 2009 22:04:51 +0100 (CET) X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: From: Peter Zijlstra To: paulmck@linux.vnet.ibm.com Cc: Linus Torvalds , Nick Piggin , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton In-Reply-To: <20090105201258.GN6959@linux.vnet.ibm.com> References: <20081230042333.GC27679@wotan.suse.de> <20090103214443.GA6612@infradead.org> <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> Content-Type: text/plain Content-Transfer-Encoding: 7bit Date: Mon, 05 Jan 2009 22:04:51 +0100 Message-Id: <1231189491.11687.22.camel@twins> Mime-Version: 1.0 X-Mailer: Evolution 2.24.2 X-Barracuda-Connect: casper.infradead.org[85.118.1.10] X-Barracuda-Start-Time: 1231189508 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14508 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, 2009-01-05 at 12:12 -0800, Paul E. McKenney wrote: > On Mon, Jan 05, 2009 at 10:44:27AM -0800, Linus Torvalds wrote: > > On Mon, 5 Jan 2009, Nick Piggin wrote: > > > On Mon, Jan 05, 2009 at 09:30:55AM -0800, Linus Torvalds wrote: > > > Putting an rcu_dereference there might work, but I think it misses a > > > subtlety of this code. > > > > No, _you_ miss the subtlety of something that can change under you. > > > > Look at radix_tree_deref_slot(), and realize that without the > > rcu_dereference(), the compiler would actually be allowed to think that it > > can re-load anything from *pslot several times. So without my one-liner > > patch, the compiler can actually do this: > > > > register = load_from_memory(pslot) > > if (radix_tree_is_indirect_ptr(register)) > > goto fail: > > return load_from_memory(pslot); > > > > fail: > > return RADIX_TREE_RETRY; > > My guess is that Nick believes that the value in *pslot cannot change > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > to change within a given RCU grace period, and that Linus disagrees. Nick's belief would indeed be true IFF all modifying ops including all uses of radix_tree_replace_slot() are serialized wrt. each other. However, since radix_tree_deref_slot() is the counterpart of radix_tree_replace_slot(), one would indeed expect rcu_dereference() therein, much like Linus suggests. While what Nick says is true, the lifetime management of the data objects is arranged externally from the radix tree -- I still think we need the rcu_dereference() even for that argument, as we want to support RCU lifetime management as well. From rick@powerpointseo.com Mon Jan 5 15:42:42 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: *** X-Spam-Status: No, score=4.0 required=5.0 tests=BAYES_50, RCVD_IN_BL_SPAMCOP_NET,RCVD_IN_PSBL autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05LggZB021152 for ; Mon, 5 Jan 2009 15:42:42 -0600 X-ASG-Debug-ID: 1231191759-6615025e0001-w1Z2WR X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from 1-jiiod2uwfk09e (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with SMTP id 1AE346300C for ; Mon, 5 Jan 2009 13:42:40 -0800 (PST) Received: from 1-jiiod2uwfk09e ([61.138.185.198]) by cuda.sgi.com with SMTP id WQLWFz1twRkhzLOJ for ; Mon, 05 Jan 2009 13:42:40 -0800 (PST) From: "Rick Garrison" To: "Linux-xfs" X-ASG-Orig-Subj: your site Subject: your site Date: Mon, 5 Jan 2009 13:42:42 -0800 Reply-To: "Rick Garrison" Message-ID: <74740470.20090105134242@powerpointseo.com> X-Priority: 3 (Normal) MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-1" X-Barracuda-Connect: UNKNOWN[61.138.185.198] X-Barracuda-Start-Time: 1231191762 X-Barracuda-Bayes: INNOCENT GLOBAL 0.2418 1.0000 -0.6150 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: 0.30 X-Barracuda-Spam-Status: No, SCORE=0.30 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests=MIME_QP_LONG_LINE, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14510 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.82 MIME_QP_LONG_LINE RAW: Quoted-printable line longer than 76 chars 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by oss.sgi.com id n05LggZB021152 We can put your site at the top of a search engines listings. If this is something you might be interested in, send me a reply with the web addresses you want to promote and the best way to contact you with some options. Sincerely, Rick Garrison PowerPoint SEO From paulmck@paulmck-laptop.linux.vnet.ibm.com Mon Jan 5 15:58:35 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05LwZJQ022183 for ; Mon, 5 Jan 2009 15:58:35 -0600 X-ASG-Debug-ID: 1231192713-658502ba0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e1.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id A4D0962EF1 for ; Mon, 5 Jan 2009 13:58:34 -0800 (PST) Received: from e1.ny.us.ibm.com (e1.ny.us.ibm.com [32.97.182.141]) by cuda.sgi.com with ESMTP id BAipruWH0C1Ps8Tv for ; Mon, 05 Jan 2009 13:58:34 -0800 (PST) Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e1.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n05LvNgF003303 for ; Mon, 5 Jan 2009 16:57:23 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n05LwX12157440 for ; Mon, 5 Jan 2009 16:58:33 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n05MwhOg031100 for ; Mon, 5 Jan 2009 17:58:44 -0500 Received: from paulmck-laptop.localdomain (paulmck-laptop-009047022065.beaverton.ibm.com [9.47.22.65]) by d01av04.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n05MwgTQ031068; Mon, 5 Jan 2009 17:58:42 -0500 Received: by paulmck-laptop.localdomain (Postfix, from userid 1000) id 3E78A14FB40; Mon, 5 Jan 2009 13:58:31 -0800 (PST) Date: Mon, 5 Jan 2009 13:58:32 -0800 From: "Paul E. McKenney" To: Peter Zijlstra Cc: Linus Torvalds , Nick Piggin , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: Message-ID: <20090105215832.GR6959@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> <1231189491.11687.22.camel@twins> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1231189491.11687.22.camel@twins> User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-Barracuda-Connect: e1.ny.us.ibm.com[32.97.182.141] X-Barracuda-Start-Time: 1231192714 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14511 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 10:04:51PM +0100, Peter Zijlstra wrote: > On Mon, 2009-01-05 at 12:12 -0800, Paul E. McKenney wrote: > > On Mon, Jan 05, 2009 at 10:44:27AM -0800, Linus Torvalds wrote: > > > On Mon, 5 Jan 2009, Nick Piggin wrote: > > > > On Mon, Jan 05, 2009 at 09:30:55AM -0800, Linus Torvalds wrote: > > > > Putting an rcu_dereference there might work, but I think it misses a > > > > subtlety of this code. > > > > > > No, _you_ miss the subtlety of something that can change under you. > > > > > > Look at radix_tree_deref_slot(), and realize that without the > > > rcu_dereference(), the compiler would actually be allowed to think that it > > > can re-load anything from *pslot several times. So without my one-liner > > > patch, the compiler can actually do this: > > > > > > register = load_from_memory(pslot) > > > if (radix_tree_is_indirect_ptr(register)) > > > goto fail: > > > return load_from_memory(pslot); > > > > > > fail: > > > return RADIX_TREE_RETRY; > > > > My guess is that Nick believes that the value in *pslot cannot change > > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > > to change within a given RCU grace period, and that Linus disagrees. > > Nick's belief would indeed be true IFF all modifying ops including all > uses of radix_tree_replace_slot() are serialized wrt. each other. > > However, since radix_tree_deref_slot() is the counterpart of > radix_tree_replace_slot(), one would indeed expect rcu_dereference() > therein, much like Linus suggests. > > While what Nick says is true, the lifetime management of the data > objects is arranged externally from the radix tree -- I still think we > need the rcu_dereference() even for that argument, as we want to support > RCU lifetime management as well. Makes sense to me! Thanx, Paul From paulmck@paulmck-laptop.linux.vnet.ibm.com Mon Jan 5 15:57:30 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n05LvTLt022124 for ; Mon, 5 Jan 2009 15:57:30 -0600 X-ASG-Debug-ID: 1231192648-1c7e00560000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e5.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 28C9217A9D7C for ; Mon, 5 Jan 2009 13:57:28 -0800 (PST) Received: from e5.ny.us.ibm.com (e5.ny.us.ibm.com [32.97.182.145]) by cuda.sgi.com with ESMTP id LxoPAp7G48bDChch for ; Mon, 05 Jan 2009 13:57:28 -0800 (PST) Received: from d01relay04.pok.ibm.com (d01relay04.pok.ibm.com [9.56.227.236]) by e5.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n05Lu4GQ030719 for ; Mon, 5 Jan 2009 16:56:04 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay04.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n05LvSjx134750 for ; Mon, 5 Jan 2009 16:57:28 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n05Mvcnt028659 for ; Mon, 5 Jan 2009 17:57:39 -0500 Received: from paulmck-laptop.localdomain (paulmck-laptop-009047022065.beaverton.ibm.com [9.47.22.65]) by d01av04.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n05MvbmX028650; Mon, 5 Jan 2009 17:57:37 -0500 Received: by paulmck-laptop.localdomain (Postfix, from userid 1000) id 4CE9C14FB40; Mon, 5 Jan 2009 13:57:26 -0800 (PST) Date: Mon, 5 Jan 2009 13:57:27 -0800 From: "Paul E. McKenney" To: Linus Torvalds Cc: Nick Piggin , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090105215727.GQ6959@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20090105014821.GA367@wotan.suse.de> <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-Barracuda-Connect: e5.ny.us.ibm.com[32.97.182.145] X-Barracuda-Start-Time: 1231192649 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14511 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 12:39:14PM -0800, Linus Torvalds wrote: > > > On Mon, 5 Jan 2009, Paul E. McKenney wrote: > > > > My guess is that Nick believes that the value in *pslot cannot change > > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > > to change within a given RCU grace period, and that Linus disagrees. > > Oh, it's entirely possible that there are some lifetime rules or others > that make it impossible for things to go from "not indirect" -> > "indirect". So if that was Nick's point, then I'm not "disagreeing" per > se. > > What I'm disagreeing about is that Nick apparently thinks that this is all > subtle code, and as a result we should add barriers in some very > non-obvious places. > > While _I_ think that the problem isn't properly solved by barriers, but by > just making the code less subtle. If the barrier only exists because of > the reload issue, then the obvious solution - to me - is to just use what > is already the proper accessor function that forces a nice reload. That > way the compiler is forced to create code that does what the source > clearly means it to do, regardless of any barriers at all. > > Barriers in general should be the _last_ thing added. And if they are > added, they should be added as deeply in the call-chain as possible, so > that we don't need to add them in multiple call-sites. Again, using the > rcu_dereference() approach seems to solve that issue too - rather than add > three barriers in three different places, we just add the proper > dereference in _one_ place. I don't have any argument with this line of reasoning, and am myself a bit puzzled as to why rcu_dereference() isn't the right tool for Nick's job. Then again, I don't claim to fully understand what he is trying to do. > > Whatever the answer, I would argue for -at- -least- a comment explaining > > why it is safe. I am not seeing the objection to rcu_dereference(), but > > I must confess that it has been awhile since I have looked closely at > > the radix_tree code. :-/ > > And I'm actually suprised that gcc can generate the problematic code in > the first place. I'd expect that a "atomic_add_unless()" would always be > at LEAST a compiler barrier, even if it isn't necessarily a CPU memory > barrier. > > But because we inline it, and because we allow gcc to see that it doesn't > do anything if it gets just the right value from memory, I guess gcc ends > up able to change the "for()" loop so that the first iteration can exit > specially, and then for that case (and no other case) it can cache > variables over the whole atomic_add_unless(). > > Again, that's very fragile. The fact that Documentation/atomic_ops.txt > says that the failure case doesn't contain any barriers is really _meant_ > to be about the architecture-specific CPU barriers, not so much about > something as simple as a compiler re-ordering. > > So while I think that we should use rcu_dereference() (regardless of any > other issues), I _also_ think that part of the problem really is the > excessive subtlety in the whole code, and the (obviously very surprising) > fact that gcc could end up caching an unrelated memory load across that > whole atomic op. > > Maybe we should make atomics always imply a compiler barrier, even when > they do not imply a memory barrier. The one exception would be the > (special) case of "atomic_read()/atomic_set()", which don't really do any > kind of complex operation at all, and where we really do want the compiler > to be able to coalesce multiple atomic_reads() to a single one. > > In contrast, there's no sense in allowing the compiler to coalesce a > "atomic_add_unless()" with anything else. Making it a compiler barrier > (possibly by uninlining it, or just adding a barrier to it) would also > have avoided the whole subtle case - which is always a good thing. That makes a lot of sense to me! Thanx, Paul From david@fromorbit.com Mon Jan 5 19:10:22 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43 autolearn=no version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n061AMER031429 for ; Mon, 5 Jan 2009 19:10:22 -0600 X-ASG-Debug-ID: 1231204219-497c008f0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 19C8215B7E6B for ; Mon, 5 Jan 2009 17:10:19 -0800 (PST) Received: from ipmail05.adl2.internode.on.net (ipmail05.adl2.internode.on.net [203.16.214.145]) by cuda.sgi.com with ESMTP id JMUGWvLglcnV6gz8 for ; Mon, 05 Jan 2009 17:10:19 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABs8Ykl5LDnl/2dsb2JhbADON4Vy X-IronPort-AV: E=Sophos;i="4.36,334,1228051800"; d="scan'208";a="287106586" Received: from ppp121-44-57-229.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.57.229]) by ipmail05.adl2.internode.on.net with ESMTP; 06 Jan 2009 11:40:16 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LK0SU-0006xV-Pk; Tue, 06 Jan 2009 12:10:14 +1100 Date: Tue, 6 Jan 2009 12:10:14 +1100 From: Dave Chinner To: Tritium Tritium Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: retrocompatibility XFS 2.10.1 with 2.8.1 ? Subject: Re: retrocompatibility XFS 2.10.1 with 2.8.1 ? Message-ID: <20090106011014.GA9448@disturbed> Mail-Followup-To: Tritium Tritium , xfs@oss.sgi.com References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1231204222 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0001 1.0000 -2.0204 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14517 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 07:04:30PM +0000, Tritium Tritium wrote: > > HI ! > > In first, I 'm a french user and sorry for my very bad english ... > For an Adsl Box, I want to partitionning and format my external hard disk drive under XFS .What a good idea , isn't it ? ;o) > I get my Mandriva One (I know it isn't a "professionnal" distribution but you know the French search the simple thing !) and use fdisk -l , gparted and mkfs.xfs /dev/xxx . > With this, the adsl box reboot ! And of course it doesn't recognize the partition. > I tried with a Debian Etch XFS ... and this is a SUCCESS ! > When I compare XFS versions I find a 2.10.1 for Mandriva and 2.8.1 for Debian. The defaults mkfs.xfs uses in 2.10.1 are different to 2.8.1. The newer version enables features that are only availble in more recent kernels (since about 2.6.19, IIRC), so it would seem that your ADSL box has an old kernel on it that does not support the newer, faster, shinier features XFS has.... The kernel version of your ADSL box, as well as the mkfs.xfs output from both distro's would help confirm this. Cheers, Dave. -- Dave Chinner david@fromorbit.com From david@fromorbit.com Mon Jan 5 19:14:17 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda3.sgi.com [192.48.176.15]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n061EH6r031757 for ; Mon, 5 Jan 2009 19:14:17 -0600 X-ASG-Debug-ID: 1231204455-4a04008d0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from ipmail05.adl2.internode.on.net (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 477E217ACB3F for ; Mon, 5 Jan 2009 17:14:16 -0800 (PST) Received: from ipmail05.adl2.internode.on.net (ipmail05.adl2.internode.on.net [203.16.214.145]) by cuda.sgi.com with ESMTP id hYofAh9g7KhayZNm for ; Mon, 05 Jan 2009 17:14:16 -0800 (PST) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: ApoEABs8Ykl5LDnl/2dsb2JhbADON4Vy X-IronPort-AV: E=Sophos;i="4.36,334,1228051800"; d="scan'208";a="287108803" Received: from ppp121-44-57-229.lns10.syd7.internode.on.net (HELO disturbed) ([121.44.57.229]) by ipmail05.adl2.internode.on.net with ESMTP; 06 Jan 2009 11:44:15 +1030 Received: from dave by disturbed with local (Exim 4.69) (envelope-from ) id 1LK0WM-00072H-5d; Tue, 06 Jan 2009 12:14:14 +1100 Date: Tue, 6 Jan 2009 12:14:14 +1100 From: Dave Chinner To: Christoph Hellwig Cc: xfs@oss.sgi.com X-ASG-Orig-Subj: Re: [PATCH] define xfs_ino_t as unsigned long long Subject: Re: [PATCH] define xfs_ino_t as unsigned long long Message-ID: <20090106011414.GB9448@disturbed> Mail-Followup-To: Christoph Hellwig , xfs@oss.sgi.com References: <20090105193129.GA19909@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090105193129.GA19909@infradead.org> User-Agent: Mutt/1.5.18 (2008-05-17) X-Barracuda-Connect: ipmail05.adl2.internode.on.net[203.16.214.145] X-Barracuda-Start-Time: 1231204457 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14517 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Mon, Jan 05, 2009 at 02:31:29PM -0500, Christoph Hellwig wrote: > That way we can avoid ugly casts when printining it (like the ones > that show up on powerpc with Linus' current tree). Is that because ppc uses int-l64.h instead of int-64ll.h and so __64 gets defined to an unsigned long on that platform? Whatever the reason, it looks fine to me. Reviewed-by: Dave Chinner Cheers, Dave. -- Dave Chinner david@fromorbit.com From npiggin@suse.de Mon Jan 5 20:06:00 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n06260DD002192 for ; Mon, 5 Jan 2009 20:06:00 -0600 X-ASG-Debug-ID: 1231207556-2f18016c0000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from mx1.suse.de (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 4B31363A5C for ; Mon, 5 Jan 2009 18:05:57 -0800 (PST) Received: from mx1.suse.de (ns1.suse.de [195.135.220.2]) by cuda.sgi.com with ESMTP id YrGBZfwSFtNnQlem for ; Mon, 05 Jan 2009 18:05:57 -0800 (PST) X-ASG-Whitelist: Barracuda Reputation 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 3131145747; Tue, 6 Jan 2009 03:05:53 +0100 (CET) Date: Tue, 6 Jan 2009 03:05:50 +0100 From: Nick Piggin To: "Paul E. McKenney" Cc: Linus Torvalds , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090106020550.GA819@wotan.suse.de> References: <20090105041959.GC367@wotan.suse.de> <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> <20090105215727.GQ6959@linux.vnet.ibm.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090105215727.GQ6959@linux.vnet.ibm.com> User-Agent: Mutt/1.5.9i X-Barracuda-Connect: ns1.suse.de[195.135.220.2] X-Barracuda-Start-Time: 1231207560 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com On Mon, Jan 05, 2009 at 01:57:27PM -0800, Paul E. McKenney wrote: > On Mon, Jan 05, 2009 at 12:39:14PM -0800, Linus Torvalds wrote: > > > > > > On Mon, 5 Jan 2009, Paul E. McKenney wrote: > > > > > > My guess is that Nick believes that the value in *pslot cannot change > > > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > > > to change within a given RCU grace period, and that Linus disagrees. > > > > Oh, it's entirely possible that there are some lifetime rules or others > > that make it impossible for things to go from "not indirect" -> > > "indirect". So if that was Nick's point, then I'm not "disagreeing" per > > se. > > > > What I'm disagreeing about is that Nick apparently thinks that this is all > > subtle code, and as a result we should add barriers in some very > > non-obvious places. > > > > While _I_ think that the problem isn't properly solved by barriers, but by > > just making the code less subtle. If the barrier only exists because of > > the reload issue, then the obvious solution - to me - is to just use what > > is already the proper accessor function that forces a nice reload. That > > way the compiler is forced to create code that does what the source > > clearly means it to do, regardless of any barriers at all. > > > > Barriers in general should be the _last_ thing added. And if they are > > added, they should be added as deeply in the call-chain as possible, so > > that we don't need to add them in multiple call-sites. Again, using the > > rcu_dereference() approach seems to solve that issue too - rather than add > > three barriers in three different places, we just add the proper > > dereference in _one_ place. > > I don't have any argument with this line of reasoning, and am myself a bit > puzzled as to why rcu_dereference() isn't the right tool for Nick's job. > Then again, I don't claim to fully understand what he is trying to do. OK, granted I do need the ACCESS_ONCE. It is loading a pointer who's target can be changed concurrently with the rcu algorithm. The rcu_derefernce thing kind of set me thinking down the wrong track, because the object of the pointer it loads is not RCU protected and doesn't need the memory barrier (on alpha). But... RCU radix tree is not only used for the pagecache, so it's probably not worth complicating things to seperate out those two cases. rcu_dereference might be the best fit. > > > Whatever the answer, I would argue for -at- -least- a comment explaining > > > why it is safe. I am not seeing the objection to rcu_dereference(), but > > > I must confess that it has been awhile since I have looked closely at > > > the radix_tree code. :-/ > > > > And I'm actually suprised that gcc can generate the problematic code in > > the first place. I'd expect that a "atomic_add_unless()" would always be > > at LEAST a compiler barrier, even if it isn't necessarily a CPU memory > > barrier. > > > > But because we inline it, and because we allow gcc to see that it doesn't > > do anything if it gets just the right value from memory, I guess gcc ends > > up able to change the "for()" loop so that the first iteration can exit > > specially, and then for that case (and no other case) it can cache > > variables over the whole atomic_add_unless(). > > > > Again, that's very fragile. The fact that Documentation/atomic_ops.txt > > says that the failure case doesn't contain any barriers is really _meant_ > > to be about the architecture-specific CPU barriers, not so much about > > something as simple as a compiler re-ordering. > > > > So while I think that we should use rcu_dereference() (regardless of any > > other issues), I _also_ think that part of the problem really is the > > excessive subtlety in the whole code, and the (obviously very surprising) > > fact that gcc could end up caching an unrelated memory load across that > > whole atomic op. > > > > Maybe we should make atomics always imply a compiler barrier, even when > > they do not imply a memory barrier. The one exception would be the > > (special) case of "atomic_read()/atomic_set()", which don't really do any > > kind of complex operation at all, and where we really do want the compiler > > to be able to coalesce multiple atomic_reads() to a single one. > > > > In contrast, there's no sense in allowing the compiler to coalesce a > > "atomic_add_unless()" with anything else. Making it a compiler barrier > > (possibly by uninlining it, or just adding a barrier to it) would also > > have avoided the whole subtle case - which is always a good thing. > > That makes a lot of sense to me! It would have avoided one problem (the same one my patch did). But it doesn't solve the problem of the missing ACCESS_ONCE allowing the pointer to be reloaded from the slot pointer. Sticking an rcu_dereference in radix_tree_deref_slot seems to fix the assembly for me too, I grafted the changelog onto that. Linus probably you are using -Os? -- Subject: mm lockless pagecache barrier fix An XFS workload showed up a bug in the lockless pagecache patch. Basically it would go into an "infinite" loop, although it would sometimes be able to break out of the loop! The reason is a missing compiler barrier in the "increment reference count unless it was zero" case of the lockless pagecache protocol in the gang lookup functions. This would cause the compiler to use a cached value of struct page pointer to retry the operation with, rather than reload it. So the page might have been removed from pagecache and freed (refcount==0) but the lookup would not correctly notice the page is no longer in pagecache, and keep attempting to increment the refcount and failing, until the page gets reallocated for something else. This isn't a data corruption because the condition will be detected if the page has been reallocated. However it can result in a lockup. Linus points out that ACCESS_ONCE is also required in that pointer load, even if it's absence is not causing a bug on our particular build. The most general way to solve this is just to put an rcu_dereference in radix_tree_deref_slot. Assembly of find_get_pages, before: .L220: movq (%rbx), %rax #* ivtmp.1162, tmp82 movq (%rax), %rdi #, prephitmp.1149 .L218: testb $1, %dil #, prephitmp.1149 jne .L217 #, testq %rdi, %rdi # prephitmp.1149 je .L203 #, cmpq $-1, %rdi #, prephitmp.1149 je .L217 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L218 #, after: .L212: movq (%rbx), %rax #* ivtmp.1109, tmp81 movq (%rax), %rdi #, ret testb $1, %dil #, ret jne .L211 #, testq %rdi, %rdi # ret je .L197 #, cmpq $-1, %rdi #, ret je .L211 #, movl 8(%rdi), %esi # ._count.counter, c testl %esi, %esi # c je .L212 #, (notice the obvious infinite loop in the first example, if page->count remains 0) Signed-off-by: Nick Piggin --- include/linux/radix-tree.h | 2 +- mm/filemap.c | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) Index: linux-2.6/include/linux/radix-tree.h =================================================================== --- linux-2.6.orig/include/linux/radix-tree.h +++ linux-2.6/include/linux/radix-tree.h @@ -136,7 +136,7 @@ do { \ */ static inline void *radix_tree_deref_slot(void **pslot) { - void *ret = *pslot; + void *ret = rcu_dereference(*pslot); if (unlikely(radix_tree_is_indirect_ptr(ret))) ret = RADIX_TREE_RETRY; return ret; From paulmck@paulmck-laptop.linux.vnet.ibm.com Mon Jan 5 20:23:54 2009 X-Spam-Checker-Version: SpamAssassin 3.3.0-rupdated (updated) on oss.sgi.com X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00 autolearn=ham version=3.3.0-rupdated Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n062NrTJ003178 for ; Mon, 5 Jan 2009 20:23:54 -0600 X-ASG-Debug-ID: 1231208632-2f6501980000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from e2.ny.us.ibm.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 265A063BF6 for ; Mon, 5 Jan 2009 18:23:52 -0800 (PST) Received: from e2.ny.us.ibm.com (e2.ny.us.ibm.com [32.97.182.142]) by cuda.sgi.com with ESMTP id 0yrCt12R1evus3MC for ; Mon, 05 Jan 2009 18:23:52 -0800 (PST) Received: from d01relay02.pok.ibm.com (d01relay02.pok.ibm.com [9.56.227.234]) by e2.ny.us.ibm.com (8.13.1/8.13.1) with ESMTP id n062Md6F021012 for ; Mon, 5 Jan 2009 21:22:39 -0500 Received: from d01av04.pok.ibm.com (d01av04.pok.ibm.com [9.56.224.64]) by d01relay02.pok.ibm.com (8.13.8/8.13.8/NCO v9.1) with ESMTP id n062NqHX183592 for ; Mon, 5 Jan 2009 21:23:52 -0500 Received: from d01av04.pok.ibm.com (loopback [127.0.0.1]) by d01av04.pok.ibm.com (8.12.11.20060308/8.13.3) with ESMTP id n063O2pm016585 for ; Mon, 5 Jan 2009 22:24:03 -0500 Received: from paulmck-laptop.localdomain (paulmck-laptop-009047022065.beaverton.ibm.com [9.47.22.65]) by d01av04.pok.ibm.com (8.12.11.20060308/8.12.11) with ESMTP id n063O1ES016571; Mon, 5 Jan 2009 22:24:02 -0500 Received: by paulmck-laptop.localdomain (Postfix, from userid 1000) id 0CAF314FB40; Mon, 5 Jan 2009 18:23:51 -0800 (PST) Date: Mon, 5 Jan 2009 18:23:52 -0800 From: "Paul E. McKenney" To: Nick Piggin Cc: Linus Torvalds , Peter Klotz , stable@kernel.org, Linux Memory Management List , Christoph Hellwig , Roman Kononov , linux-kernel@vger.kernel.org, xfs@oss.sgi.com, Andrew Morton X-ASG-Orig-Subj: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Subject: Re: [patch] mm: fix lockless pagecache reordering bug (was Re: BUG: soft lockup - is this XFS problem?) Message-ID: <20090106022352.GY6959@linux.vnet.ibm.com> Reply-To: paulmck@linux.vnet.ibm.com References: <20090105064838.GA5209@wotan.suse.de> <49623384.2070801@aon.at> <20090105164135.GC32675@wotan.suse.de> <20090105180008.GE32675@wotan.suse.de> <20090105201258.GN6959@linux.vnet.ibm.com> <20090105215727.GQ6959@linux.vnet.ibm.com> <20090106020550.GA819@wotan.suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20090106020550.GA819@wotan.suse.de> User-Agent: Mutt/1.5.15+20070412 (2007-04-11) X-Barracuda-Connect: e2.ny.us.ibm.com[32.97.182.142] X-Barracuda-Start-Time: 1231208633 X-Barracuda-Bayes: INNOCENT GLOBAL 0.0000 1.0000 -2.0210 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -2.02 X-Barracuda-Spam-Status: No, SCORE=-2.02 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 tests= X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.1.14522 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- On Tue, Jan 06, 2009 at 03:05:50AM +0100, Nick Piggin wrote: > On Mon, Jan 05, 2009 at 01:57:27PM -0800, Paul E. McKenney wrote: > > On Mon, Jan 05, 2009 at 12:39:14PM -0800, Linus Torvalds wrote: > > > > > > > > > On Mon, 5 Jan 2009, Paul E. McKenney wrote: > > > > > > > > My guess is that Nick believes that the value in *pslot cannot change > > > > in such as way as to cause radix_tree_is_indirect_ptr()'s return value > > > > to change within a given RCU grace period, and that Linus disagrees. > > > > > > Oh, it's entirely possible that there are some lifetime rules or others > > > that make it impossible for things to go from "not indirect" -> > > > "indirect". So if that was Nick's point, then I'm not "disagreeing" per > > > se. > > > > > > What I'm disagreeing about is that Nick apparently thinks that this is all > > > subtle code, and as a result we should add barriers in some very > > > non-obvious places. > > > > > > While _I_ think that the problem isn't properly solved by barriers, but by > > > just making the code less subtle. If the barrier only exists because of > > > the reload issue, then the obvious solution - to me - is to just use what > > > is already the proper accessor function that forces a nice reload. That > > > way the compiler is forced to create code that does what the source > > > clearly means it to do, regardless of any barriers at all. > > > > > > Barriers in general should be the _last_ thing added. And if they are > > > added, they should be added as deeply in the call-chain as possible, so > > > that we don't need to add them in multiple call-sites. Again, using the > > > rcu_dereference() approach seems to solve that issue too - rather than add > > > three barriers in three different places, we just add the proper > > > dereference in _one_ place. > > > > I don't have any argument with this line of reasoning, and am myself a bit > > puzzled as to why rcu_dereference() isn't the right tool for Nick's job. > > Then again, I don't claim to fully understand what he is trying to do. > > OK, granted I do need the ACCESS_ONCE. It is loading a pointer who's target > can be changed concurrently with the rcu algorithm. The rcu_derefernce > thing kind of set me thinking down the wrong track, because the object of the > pointer it loads is not RCU protected and doesn't need the memory barrier > (on alpha). > > But... RCU radix tree is not only used for the pagecache, so it's probably not > worth complicating things to seperate out those two cases. rcu_dereference > might be the best fit. Works for me! > > > > Whatever the answer, I would argue for -at- -least- a comment explaining > > > > why it is safe. I am not seeing the objection to rcu_dereference(), but > > > > I must confess that it has been awhile since I have looked closely at > > > > the radix_tree code. :-/ > > > > > > And I'm actually suprised that gcc can generate the problematic code in > > > the first place. I'd expect that a "atomic_add_unless()" would always be > > > at LEAST a compiler barrier, even if it isn't necessarily a CPU memory > > > barrier. > > > > > > But because we inline it, and because we allow gcc to see that it doesn't > > > do anything if it gets just the right value from memory, I guess gcc ends > > > up able to change the "for()" loop so that the first iteration can exit > > > specially, and then for that case (and no other case) it can cache > > > variables over the whole atomic_add_unless(). > > > > > > Again, that's very fragile. The fact that Documentation/atomic_ops.txt > > > says that the failure case doesn't contain any barriers is really _meant_ > > > to be about the architecture-specific CPU barriers, not so much about > > > something as simple as a compiler re-ordering. > > > > > > So while I think that we should use rcu_dereference() (regardless of any > > > other issues), I _also_ think that part of the problem really is the > > > excessive subtlety in the whole code, and the (obviously very surprising) > > > fact that gcc could end up caching an unrelated memory load across that > > > whole atomic op. > > > > > > Maybe we should make atomics always imply a compiler barrier, even when > > > they do not imply a memory barrier. The one exception would be the > > > (special) case of "atomic_read()/atomic_set()", which don't really do any > > > kind of complex operation at all, and where we really do want the compiler > > > to be able to coalesce multiple atomic_reads() to a single one. > > > > > > In contrast, there's no sense in allowing the compiler to coalesce a > > > "atomic_add_unless()" with anything else. Making it a compiler barrier > > > (possibly by uninlining it, or just adding a barrier to it) would also > > > have avoided the whole subtle case - which is always a good thing. > > > > That makes a lot of sense to me! > > It would have avoided one problem (the same one my patch did). But it > doesn't solve the problem of the missing ACCESS_ONCE allowing the > pointer to be reloaded from the slot pointer. Agreed. > Sticking an rcu_dereference in radix_tree_deref_slot seems to fix the > assembly for me too, I grafted the changelog onto that. Linus probably > you are using -Os? > > -- > Subject: mm lockless pagecache barrier fix > > An XFS workload showed up a bug in the lockless pagecache patch. Basically it > would go into an "infinite" loop, although it would sometimes be able to break > out of the loop! The reason is a missing compiler barrier in the "increment > reference count unless it was zero" case of the lockless pagecache protocol in > the gang lookup functions. > > This would cause the compiler to use a cached value of struct page pointer to > retry the operation with, rather than reload it. So the page might have been > removed from pagecache and freed (refcount==0) but the lookup would not correctly > notice the page is no longer in pagecache, and keep attempting to increment the > refcount and failing, until the page gets reallocated for something else. This > isn't a data corruption because the condition will be detected if the page has > been reallocated. However it can result in a lockup. > > Linus points out that ACCESS_ONCE is also required in that pointer load, even > if it's absence is not causing a bug on our particular build. The most general > way to solve this is just to put an rcu_dereference in radix_tree_deref_slot. > > Assembly of find_get_pages, > before: > .L220: > movq (%rbx), %rax #* ivtmp.1162, tmp82 > movq (%rax), %rdi #, prephitmp.1149 > .L218: > testb $1, %dil #, prephitmp.1149 > jne .L217 #, > testq %rdi, %rdi # prephitmp.1149 > je .L203 #, > cmpq $-1, %rdi #, prephitmp.1149 > je .L217 #, > movl 8(%rdi), %esi # ._count.counter, c > testl %esi, %esi # c > je .L218 #, > > after: > .L212: > movq (%rbx), %rax #* ivtmp.1109, tmp81 > movq (%rax), %rdi #, ret > testb $1, %dil #, ret > jne .L211 #, > testq %rdi, %rdi # ret > je .L197 #, > cmpq $-1, %rdi #, ret > je .L211 #, > movl 8(%rdi), %esi # ._count.counter, c > testl %esi, %esi # c > je .L212 #, > > (notice the obvious infinite loop in the first example, if page->count remains 0) Reviewed-by: Paul E. McKenney > Signed-off-by: Nick Piggin > --- > include/linux/radix-tree.h | 2 +- > mm/filemap.c | 23 ++++++++++++++++++++--- > 2 files changed, 21 insertions(+), 4 deletions(-) > > Index: linux-2.6/include/linux/radix-tree.h > =================================================================== > --- linux-2.6.orig/include/linux/radix-tree.h > +++ linux-2.6/include/linux/radix-tree.h > @@ -136,7 +136,7 @@ do { \ > */ > static inline void *radix_tree_deref_slot(void **pslot) > { > - void *ret = *pslot; > + void *ret = rcu_dereference(*pslot); > if (unlikely(radix_tree_is_indirect_ptr(ret))) > ret = RADIX_TREE_RETRY; > return ret; > From sogerc1@gmail.com Mon Jan 5 20:28:50 2009 Received: from cuda.sgi.com (cuda2.sgi.com [192.48.176.25]) by oss.sgi.com (8.12.11.20060308/8.12.11/SuSE Linux 0.7) with ESMTP id n062SlFZ003409 for ; Mon, 5 Jan 2009 20:28:47 -0600 X-ASG-Debug-ID: 1231208907-2eff01b40000-NocioJ X-Barracuda-URL: http://cuda.sgi.com:80/cgi-bin/mark.cgi Received: from rv-out-0708.google.com (localhost [127.0.0.1]) by cuda.sgi.com (Spam Firewall) with ESMTP id 9BB7663EE7 for ; Mon, 5 Jan 2009 18:28:27 -0800 (PST) Received: from rv-out-0708.google.com (rv-out-0708.google.com [209.85.198.247]) by cuda.sgi.com with ESMTP id 7seyFv6G5xsHV4iY for ; Mon, 05 Jan 2009 18:28:27 -0800 (PST) Received: by rv-out-0708.google.com with SMTP id f25so7058526rvb.32 for ; Mon, 05 Jan 2009 18:28:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:sender :to:subject:mime-version:content-type:x-google-sender-auth; bh=reYfbd1PxnDQpekYawIaG1m0q938iIg1f3rJzc0pBtI=; b=rpT5apd/c0JMJOyPpXWb1/c0SmRrVqOWvIywe5UjjVpzoV6FhapxxmAl21gl2osEeF 5BMgDZOu8rzQi52mc+LMEJaUZWP1LNp/dqlOKxs4mf0uMuBN4bGi+i+qVpVranhtEQNg BbF6e75vz15XZGxdeqFwNcC4ZjFcTDrrQiUeQ= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:sender:to:subject:mime-version:content-type :x-google-sender-auth; b=fbrDWQoLEb8q0gZgnWQGLG8aib82LBRTqBPXxgTlG9be6a731Lee6LAD6OenpuN7Lb u0PAGBsSnCgnHmfhgiH3qPn3THUcsHB1GKh1NjFCKqmqa1cBPAcIl3dyjBBZPRhuW5Io I3pc/Zl8x2JA2gQE+w1XFRa8aDK25XBYup+gc= Received: by 10.114.234.13 with SMTP id g13mr14207033wah.64.1231208906039; Mon, 05 Jan 2009 18:28:26 -0800 (PST) Received: by 10.114.179.17 with HTTP; Mon, 5 Jan 2009 18:28:15 -0800 (PST) Message-ID: Date: Tue, 6 Jan 2009 04:28:15 +0200 From: "Gergely Soos" Sender: sogerc1@gmail.com To: xfs@oss.sgi.com X-ASG-Orig-Subj: cannot repair XFS partition Subject: cannot repair XFS partition MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_170748_21754712.1231208905757" X-Google-Sender-Auth: 690465c7cf659c50 X-Barracuda-Connect: rv-out-0708.google.com[209.85.198.247] X-Barracuda-Start-Time: 1231208915 X-Barracuda-Virus-Scanned: by cuda.sgi.com at sgi.com X-Barracuda-Spam-Score: -1001.00 X-Barracuda-Spam-Status: No, SCORE=-1001.00 using per-user scores of TAG_LEVEL=2.0 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=2.1 ------=_Part_170748_21754712.1231208905757 Content-Type: multipart/alternative; boundary="----=_Part_170749_20230986.1231208905757" ------=_Part_170749_20230986.1231208905757 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Greetings I heard that people compliment XFS for being the fastest FS these days so I thought I give it a try. What I did was that I converted my old 107GB FAT32 partition to XFS (I created an XFS over it) and I wanted to use it as /home Everything went as it should, I moved the files from my old /home then I restarted (cleanly!) under windows. When I got back from windows I was no longer able to mount the XFS partition. xfs_repair only said that the superblock is invalid and attempts to find secondary superblocks but all candidates fail. So I created a file on another computer with the exact same size as the partition on my computer and created an XFS on it. Then I extracted the first 512 bytes and copied to my HDD using dd. But it complained about the UUID so I corrected it using khexedit. Then xfs_db complained that it cannot find the root inode so I wrote a little perl script to search it. You can find it in myxfs.tar.bz2. It seems that it found the root inode because after I corrected the address using khexedit xfs_db started complaining about the realtime bitmap inodes, so I corrected those too (using inode numbers rootino+1 and rootino+2). And this is where I'm stuck. The mount still fails, dmesg says that it cannot find the root inode, xfs_repair says the same old thing, xfs_check says a lot of things, most of them are messages like this: can't seek in filesystem at bb or: ag bad magick number. That exceeds my knowledge. Please help me restore the partition, It contains lots of programmes I wrote over the years and some of them are not backed up, some of them are, but only an older version. I also have personal stuff on it like my bill records that I cannot recover from anywhere else. myxfs.tar.bz2 contains the perl script I mentioned above and the inodes it found. The one staring with ri is the root inode, the files starting with sb are the suspected superblocks (I also took one of those at random and corrected the three inode numbers with khexedit but the result is the same) and the file backup_bootsect contains the original superblock that was on the disk after I came back from windows xp. It does not look like anything to me... The numbers after ri and sb are the starting address in bytes of the inode on the disk. I've also attached the output of xfs_metadump. This was created after I corrected the three inode numbers in the superblock. Please help, Gergely ------=_Part_170749_20230986.1231208905757 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Greetings

I heard that people compliment XFS for being the fastest FS these days so I thought I give it a try.
What I did was that I converted my old 107GB FAT32 partition to XFS (I created an XFS over it) and I wanted to use it as /home
Everything went as it should, I moved the files from my old /home then I restarted (cleanly!) under windows.
When I got back from windows I was no longer able to mount the XFS partition.
xfs_repair only said that the superblock is invalid and attempts to find secondary superblocks but all candidates fail.
So I created a file on another computer with the exact same size as the partition on my computer and created an XFS on it.
Then I extracted the first 512 bytes and copied to my HDD using dd. But it complained about the UUID so I corrected it using khexedit.
Then xfs_db complained that it cannot find the root inode so I wrote a little perl script to search it.
You can find it in myxfs.tar.bz2. It seems that it found the root inode because after I corrected the address using khexedit
xfs_db started complaining about the realtime bitmap inodes, so I corrected those too (using inode numbers rootino+1 and rootino+2).
And this is where I'm stuck.
The mount still fails, dmesg says that it cannot find the root inode, xfs_repair says the same old thing, xfs_check says a lot of things,
most of them are messages like this: can't seek in filesystem at bb <some numbers> or: ag bad magick number.
That exceeds my knowledge.
Please help me restore the partition, It contains lots of programmes I wrote over the years and some of them are not backed up,
some of them are, but only an older version. I also have personal stuff on it like my bill records that I cannot recover from anywhere else.
myxfs.tar.bz2 contains the perl script I mentioned above and the inodes it found. The one staring with ri is the root inode,
the files starting with sb are the suspected superblocks (I also took one of those at random and corrected the three inode numbers
with khexedit but the result is the same) and the file backup_bootsect contains the original superblock that was on the disk after I came back
from windows xp. It does not look like anything to me...
The numbers after ri and sb are the starting address in bytes of the inode on the disk.
I've also attached the output of xfs_metadump. This was created after I corrected the three inode numbers in the superblock.

Please help,
Gergely

------=_Part_170749_20230986.1231208905757-- ------=_Part_170748_21754712.1231208905757 Content-Type: application/x-bzip2; name=myxfs.tar.bz2 Content-Transfer-Encoding: base64 X-Attachment-Id: f_fplwsiq90 Content-Disposition: attachment; filename=myxfs.tar.bz2 QlpoOTFBWSZTWTgWKfQACE3///////3//////////////////P93/fv//u7vv/72/93f4AZ/eiRb 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 pzGAAeTAABuszmEL/xdyRThQkDgWKfQ= ------=_Part_170748_21754712.1231208905757 Content-Type: application/x-bzip2; name=metadata.bz2 Content-Transfer-Encoding: base64 X-Attachment-Id: f_fplwsruz1 Content-Disposition: attachment; filename=metadata.bz2 QlpoOTFBWSZTWQh64+0ET8n/////////////////////////////////////////////4b0cMD7A KPneUAAAAAAPPAAB5JpQAABQ9Aa84Bh16jQq1YADW7q5xSC+7LtttcLgjpTQA94ABQe7AhTnece2 jq2ClqsHmA9b2s5zdpEvbUKGJ4ESlo0SkIACa0CEQAAABbsPRuN4AAAATpVgAB0A7opS4BoFmzdt IjHY27utsUe5lAdNKOvdhJWT1UKoAoFBQW7NsMJWzaJUBR7wzrtpn2blN9tKpVFWtbUGlSUtKBsJ sswAADQtLQtobsO21K2Mlo1VdoAbYFbFTJjKDUdxjklbGU2baBlpSqKkGDatk2AXYMRV1hS5WJzj uVezAp1lLtj01HsmpraMxIEbFg50AAm5Y1p7M94NzNlqG2LGxFi1m3nXnvZRHqXbXs3vdy2HfXnr zIdu7ItaNg2yRdw6hXPsHe83KyHRTbZOd1o1TQ25bbrhV6xOAAtlXee69jVXe3hzvMPavLnSttQz sDjsAAejoCULtY0B0N33dBT0AGhEC9mahmtbbe5q+wNNABrwoNpYDrQdmG1YZjAPpoO2CZgAoJrC tt6GnoaDxDPWejebImw6DQdAAKk5u5ZZYilJLDoAA6AuhgA3u4evVKU6NsdO5g5AdaWwLstjTQ0G hIdKDoAdssYAqwvbcGWbGsKAk2zaylou3UKpSko7ANVCqoQVCKpE3ahVCcw6crljZZQSnQ3WAKoI bZNmpIhsWFmnJ3GUUXDNsxhduOpm1izCQaTUYNqWmUxqNtnbKlbOFe91c63IYNsb2dLsPdk8wAB0 d2HoAC3XCzHZwA24AFADbAAAdDT0CgL20UKo6BHWWx1o6roFUOQDoHR3Y6A6A10AGnR7YAvY0AaB dgAdAoADkB6AAFdGgAAB3YA6O26I5tHWRsdOKo6e5YNsD0V3YAGQUFBQLB3BthuwD16AAAAOQAAa BQAaDQb73OQPbUXYA6AADdp2Adfdh0p7tQHnb0ABovvHAJPQD0CgfQWwAvWAABuYDtvZxzeKqRVd rUaNGKUjNmi21qijWtGigtcMMwPI6nvc9NAAONjrQAFNenQ152FBIBQbs9AGgR7w2u0G1fDzB01A QqKAyEw0ZMhqbU9AmAT1T0aNMjTTTA1MmTRieintTRhqaZDCPSaAwFPBNNMNBNNhDTJk0MQaNBkM TBGmCNJ6MTQaNDQb3+qVTalBpSIAAAAAAEwTAAACZMBMEYCYJk0YBMATEwAEyYmTE0NNAGg0AADQ AA0AAAaACYINJNBmiMGSgCIBGgmgT00mCaTaaNohpoI9T0aTTDUwIDEyZqMJjRGR6TQ9IGmjRoaB tTTTTQ0ANAaAAYQNBpoAaAEKREgQIJmgI0mDUehJp6U9qm2inqegehNpDIn6j0oxqep6TaTYpmU/ UaCYmaZT0m1MyR6R6MkZlPU2Rpo1NNMnqekeiMxJmp6mT1GmIz1TE2TQyYkbUCJSTQEARiaABMmJ poxDTQAmJmghtTBqYTaAmTExDJgmpsmJgmE00zRMmmQ00Gmk8mmjRPQmyaU/Qnk0maaaaTGhM0ma aAaUESkQSYICMABMIaaNE9AMhpkCZphU/IJjQBMADQmFT8ZTEyaYmGTU0xT9JkwBMEwTTE0wmTTA JkxCbTTE0GhpkyaKf/yF+w/dc9+T1Z8Guo7fBoXRrHwunNwvOjv78HCOzPDo6Js40mg0b1uF0W95 00GGy4kcJ0GHOokcLr1xpXbHAY4GBY8YJj0x2GnjSuMARGgzwZs2nVAcHHOnkNps2RsAx9ZTc/tj s9BUgTQQIG0k4NTR805t5b3RtfXGAe4R4fnR2gX17eISAe4J/zcJBPz/CQa7CQcJCxUTHRkXnYuO js/IyUhJSUlJLyUgpimvqqWmrytIMTIyRy0trUY0LLTILkg2NjZIsLFJNrc/Nza2t0k3tzc3yLg4 yS6CIiGZb2dubGxqb29ub3FwcnJDcmFfXmVJTGhSTT9AW2xSb1puUG5ObVNvaZeXcFVbbdA3sy+3 Nyw3ui22MDc3N+gcGVycWdxcXSXa3dzc290cnSXdHV3eHd3SEdqSEhQaGlXWVpMb01NcGZobXFiZ WVpe1RVb15wecy4MjJmVpbY2zMMTKwOLa1MTI4OTa2uTm2aFvmXR00TnMzLpOTju/vb1OLuZ2Phc 1svFcFvVe99Nns/oL8Aho96k3s2o3+sKghSSjRkYkfNRYmB81+k0a70ZmYlqLAw6swzNRookgmOI sT5rRmYYEMQwQ5iYO8MGSGDWFGJHHhwzNGjIuNGmmMjrjqkuXAyC6tLp1gYkEBmtAaCCTUmBBhg4 miVOyBDREBFEWsDIKsMMgiKqqKKNWVJSxUERVNNFERVBU00TRRVQSTFVRFURFFTTMkgRZFNIIF6N 3pCIPB3d6CBvm/9z3VpEwXkj1eSTsPSs3Jk58Z4D23k74PAuqqqqqqoiqqqqqqoiqqqqiiiiiiij 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 aTS6DQaG4uOjz2XrbDluEyVljLPNaDK5j5uczWDiqymVieabOxNaUqioqKjy5SkzMsmZmCqqqqox qrMqqrMzMzMiorKzMzMzMzMzMiqqqqqqqqIiqaqimyoqqqsysqqrBUREVVVVVVZVVVVVVVVERVVV VVRkZVRVZlZVVWZlVVZmaUpSlKUpSkqqqnIzkQAkZECaUaYsxSzLTLLMUu6A7PwQnaITrFR+nn2N U3MVeyCfmqmrAfIVNMB6t/pKasg8MUc+U1Yq7sUfX0mrKr3ERuCNyI26hsNoTMD0qlrJPohWsJyC tYp0RWsk/HStZJ/ig/opW2VOoRykctD5GRyqOSo/wRP3BPaRO5KufFXKo0xHLIvWwasq+2oaZT8a k0w4MrTA4kpo8sk4KTipOCJxajhVG2o4sjaodbU3MTfg34PaVXLqdmjvSbyuOThU7EbZV3IvKRd0 l0UcSHM1bWcQOJVtK2hsYcYuapv03I3Bztb1bk4pvnPeV9cpXRzenStVqxmi57HjdJw4a3Ss2fSK tbG1sg/rtvde13Ncx0/kt3Vjcjpv+sHX59jQs1KCU2nO5khKkOSSRBTwAIs20CMhFa8pzcToEnSJ OhicroonCI5EW5hbkjpaGrkSZkuno0xXJBzFWrFXZB5qHmKPFJ5lTsKctTri60Xa0cGjgo4MOeDq aunlz5cZOYTajZ4uC0ErgqaKYTwz0HWEIMQpce++hBhxQBP9Tlv5GRHVV2K+fi+l1GrxOqurvCXO ou7vU63VcTzGVsucsstY47U5nnOczFlma/M6G5uf8s/cctpufz/Tam60GW0Wk1Gq0ek5u50ei0nS 6e66HpNNqrrT6e5z11qdRa3V3qbrVa682F5e7HT3myvb29+3s7rrdp2Gm23ZdhsOy2m07Tsey6/Z bX7fZ9jtNtfdn/r23b9v9zbdft/u/e+/uO47nbd13fed733f+B2vg+Fufwbrdbvcbz/be+H+H8Xi d/+P8n+/5fF8bx915Hk77yt/5f5vE8z/j9Hm/p87ffq8/9foej+z0vO/b6fqfu9X9/rfq9f2PZ/5 9r2/4ep/17nsfx/793gev/L+f9P6+9/5/b3Pf+D/3/7+/w0f2cH4vjp/Jwfj+P4/iAAAAAAAAAFF FHxgAAAAAAAABRRRTAAAAAAAAACiij5AAAAAAAAAAooopgAAAAAAAACiiimAAAAAAAAAFFFFMAAA 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 VV+4jufMwm95Ttv4elX9rY+3gev8/1e11vB03dZCPXyOx8X6e9zOL47QXP5+zqPbxP/98zX9f4nr fLeH/h2f1PW/of26/s/i8C7VbvU+JV5BkmMjMTMpL13dcX10qvF0l3SXSd14rrTu6TqSuszqeGut O7xdaVZYlmCy18nxbrsdj1XB8sqnBz6Kz2m/+Sz2eWEf1OwAfddo4L7F1oAkBmXmzQepQJoOPGT5 KdnjcbkNVZ+a1fTWdmnEQZztOJ00A/m+vp6es61tGl3bWUPV4VFpSlMgiGxgAxzqFNIACiL48XSv lSCLq3J96GrQq1atWKQXOMkkkkA5od52fY25mS5ZVjWCiu2Zbr4d/IBtXWt29tq202pSWNSGWrFS bLelsJNMVP40LTFNbSa5NcLW2WrXMo1/F+PrmuGTKMMoyZYVrYaNKVtNUiZgs8TpptFjKDMoTMQz BLcZ6FZ/0zYQ2ENgDV9TZwmFvykzJTcBW+KlaWN2KENhKwlDj557RxdUqpwsg4HBZmZmZgEIAICQ EgQkgBCABCAAAAAQgAEIAEIABCAASb9M692q+JlWYC3sWpqjCqOuyb7JzzJg02aKmqkY9ajZxBmR TMFZjRQAB8b+T3X6dVVVVVVVVVVVVVVVVVVVWUgACALMCM5GKq5MWwlbZRWskqD/ExP/THwsohVt WEr3OA7Ttcu12Tr8a7u+d+MAcgAhACSM3E+VSgR4os1weqOk2XbeirlaTrf8pPe4OsyvStF69jc+ 3/jL2uTHFV+m97j81b6NwxWVGIdKNkufeNlCODx8/3PqMngQr1C6fYjtYpfFm+OTfap+tgfPyunW kFJAkvZiqn2st9KHj9m71/0XKCB5/l2k2r3csR/X2x1LHMnasUgY2tBHL9h4v15p+dqyW5Q5XuvZ 4e6/tPt17zLiS3Wvujt95887zbtt227ObdtuyOOOOOOO7siIgiIiIiIi+27W3p555rbW2ttba3mt 5rbW2ttba1t55eeWtrW1rbWcZZlmWZbazLMsyzLfPfr7qvsPnPrr85/a/0/8/+89nx/algqyaMFw ksvdxP6eI2tZoujq/2a+4quF+VLDeRdxk9/d12+v+L3m+8upjS1vhfPuuG8qs5nA1X3e73HaV8Rv Nx7Vx0VL38pkOKwNVz8dXmYz1n4GFuOd5KozUYGKzBfr8q20kVe97nj/Q9huK1oj57veo+L/iV99 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 oYySACCFtZJRshRx/I9LvsvFMLq2VevH1isVgSAGYghjxcXHex6GQ2Njxs9VeyH8gy6eI6hlS2AU QgvsrInMswuApvJN1OKTpk3guiTf04inEJxkiZU2QFhBYQWRIsoLKEWQiYAovVY7IrCLAnxVkRCm FURGimKkiehZo0bNKzTslSpZq2JrE1eGqqaKwU0UggVkKCJQkRYRLFO6vRo16VeOtWp1rFWvNNBN NYmp07FixVq1atWrVqOqCponRXRUFTRTRZphSRKKiihWs0qVmnPUnszTKxNZrVq0T1ZKqiqBUSpl dhVIxU0FICVKigoioFGvXep16lSpUrVatmrZmmslaaaaanTp07E9iaaaaaxTp0rSQj/VkkhBjY7O WJjYz3qSgcMwYsCEDZsSYEyDc3c3d3d66TitvcZIzJ2lnk/O0pwoc3PnLz8/JzWSrMSF8tnRlx5M +buPLyw5Vq1exMgvYHTEiSTNishTZET+VkY9BoIIJaeNjNUZqGUljA5D4stFMUQsoUYqospEtGhl 2aNqlVKdOapXq2qs9itWrT169evWK1ahWrVppq7qpTKZSKVAoSqOsWJa9ajRrUqeTWpWLNSvVquq VatWrVq1a808000001SzVq06dOzZqVKlSpPVqzk0000001WzNNNNVq1ZpnmaYqWCrUKZSkjlJFIE gSBIFRShKpQlRKEpWrUaNivSns1KhYq2LFatWr169evXgrVq1atWVatWrVpq9StVplmWONiEIkRJ TJRiq1BVAJRSInAoJQSzWKVixBUmq2JpqM1ezNNRq1atWrVq1atWarVrTTTVatWrNNNTp1qlmezN N27c8888888888889te3bt25110bZg3B40jt2je7u/FaRFYijxFaxWHeHd3es4nEPR3k84iLXPF9 +e085xmIirw7vDvFIeIiKQ9XpR3pEO/UViKWiIi0g8xBUgqgQHKA7iBDzkzznOtaO9HeDrWrvOda w7vWHrDsxssWd7PD1raKUo72ikPOcQ9XZ3ekPFYrV3m9aVh3m7u8Q9Yh3eHiLWe0d0ABIyLzPemg 8z5nnNXhuM51qgzUqNzJPq4NeVMWwprypamDl5s5Pg83NcSrMolZiI7nEok4cc48ePH2FmYPIHIq tZHHkzhycm7w/lvDopFIZGRZZrbM1s+JICFEIJEkBUcqLqdSpTVIElngEe0SRZYGZCBmQnBJK0ck vQFBREMTRRRQqELQhBKyBRRtHHHmyBiYmZQooJaDY8tGGgUAj53ZgAgJGCUvDAIKYAAix2300p93 oBAq5vT/g/jjyg4DkFAABVc3er1AaoIp0NZ0p4AA805IaECICxAAamCAeDiIhwLF8AgACpU6zrWo FSKdDpOkT8QZogIxGw6AEJyQiCWWOSVpQivgAo42j46KRpPY+TzP34udT+F690WfU3kfWPa/w+Zp 1NxtNDKqzRVOfgeh6eGW9HUoUdnV5+takkiswwxxeJcjtR5d21Tkmq3ZIq0UVG72El6nUuUaNq7B bfgtR1fEpQzVMupLBQsReHTpdDdu5N+GlDC/DDNZnpy06lipZwTVYadG5HDSpxT25sFy7fhvVJKl WYjLg9BYnwUqGDBPXnho0cSletTyW371G9Xkr1LlWaabBgux4Kk9KrPM9VmvT0MNyeevO857FolC jdvRx3rMGHLCUG0e32uLitkZWXmNx8oUEHPJAmeBIGI5GkikkdIHuAQbsSCRCjkaSKRpNrzm1ooc CDecTjef7f5fpeMN+fQ8wScAh+4UKHpD8Z2xU785ybyZWqv3cBaQkbtkkzJJWsO0xCLBiYmFGYAg NACd3Du+nr4IORIRAgDIndw9beTTyf0nfer/Qn5Xlb+Tkti/r/v+xyfnraJvIS097TdyXGVDk7nN 2NjzXIm6Z0ksb0L1mrRtTP0vI068u7t6bu8a1iF7y/Nas/nOeKXfGM5SvT4vitepZxjp2fjOc9Pj GaUrLPOMPlYzm+YiUYxziIhecZzEQ2c55d4nzftnKra0rZznFmZlta2cYytmW1rSvnObKq2tK2c5 zZVZbWtm982Zle1p5vnKnZXizZxm9ma1mtnOMKqxEWxjGVOzWtZr4vmxq0WtO+eYRIho6xfmMsy2 60znPS2ZbWtLHXXR2VbWa3WcwvTK8dXvWtXnOfWcTz1p5q9eaevPXnnnnrVp57FixYnr2J7FaxYs WbNixYr17FSnPSp06dmjQlo2bNOaxPNNVnmmmmnrTVqlepWrWa1mvNNVqWatmaaaaarVqU6tWxNP WsWJ5561avYrVp56088881evXrzzz2K9exYrzWLFixPPYq2LFieeexm9+s3vmk+q5zfq1rW66zl7 Wt111ERHXWLxHVr4ze1rWzfmIiL3vjNrWvnPURFs5zm1rZ5ziIiOc4zZ7Wznl4iMY55rGLY6zm1r Wzjl3eOcY5d4xi/Naxe98UiI3xjFrRjHbOM4zjnnN98b8ZxjOc5znN75zfOc45zjN85znOc4veIi IiIzFrZxjOb5vjOMZznOcXzfPOMYvi98T169evXmq2K889aeepPXnnnnsWK89ixYrV7FivPPXrV6 9eetPPWr168+L3xm+M4xznNa1rSta1zjGc5vjOb4xm+c84zfPOMYxi+MXxfjjti+FzjnD9Quc5zE RnObw7zzjN6vLOc5V3frN8xEZzm9IeWMYyrxGMZStc9sYrlXxzl3Z737UrjPWMdRDYxnnp3n111e IlGOuuUd4xm9arfrF61l1nOcrERnPDu8r9ua3zEZzbfSNF3lJtd9IatHPtGunGl+2N9ddNb68nGK a1vOzuu1Jc1pw94ynMcpeDy/KXviuEu+Eu+EvbCXjD3y9+Xve2b5zjTOOBjdNjAMujghwSoioSJV wK8oqIqIqiVCSxZkhs1bMc81etYpVqdKtWs1qFRUwcqIUAoKVSKuqylT7nnrLp54I6FJFIHIpIpC gCiikFAJBUkSvtPQnozztUU4RIhFAiwEJYCwiwiwiUggaxHYlpQNXrNZtQMCR5wQJllZWUW8rKwc zz03GhW9yDMK3d3dbu5ube4fgLS/CpHbQKxET1tawDEMgAEfiG7x3VntaxBzAMAnd3eju5B3fir0 d/beg+X0IaEPCAIisYBSBEQ222221227aldLUIlr4uqr+NlHNz9HR0c/R0eDdborpJRBcGSBANJg gKqEUqdOnFRp0/JeQq1UWBIKXlnkkFRkoRIB9KpUqVKlSpU+IUESqWWWSWSSXXOup0VaBNdLfIs6 enp6enp9l0+q517GufYVfoa34vsUWJHT09PT09HJ213Qhrb6b5v7SzorYHaYThw3VmvypTY1kqa9 fk+n9U8S2egimshwNvb2Lfhq1dfcwlrb8zzOJV6HRdTCVxzK4cNAuSJMsIVrbYWtdlbNtvMeL9z8 h+35PRvob6lk4RLlDjlFy8vi7Va21XQWZIGZRUZiSkwaav5en7m2GLe5BqqTY86TdgrjrwRf+Nir 0HxXGnDn7O2ltt+d77KluaSXmUc+JWxv4cbarbbSqzXmdsUtnJWJ06DY2PC1bLBatWogaacSlI1Z O16G7mp1fdN3W2tvkQa8VdZUbGvLpEt+QbfD8Hy8Vw4bA37cKS12K+xp2s2trDvNvvsvetwN/xmn xtqRipqJTskgZhAS8bx16pHVfdrUdtSp6kXwjdLjau7WjeL6jD9u1Vv2nI4t06Hdz57nbup6Z7Yr VG2hu1rRTXadfWL1ET27acc7tGsjRKc7Rmi8rbjtO1rRHHWtt82kzcW2m6JLZry6vgN2vtRjR+Vv bLLPs9HqmZ69b3rmGWfZG6nWlESuMb9udaVXWjwm95447bYRbXSemukRzk5DEtp9p6ba7cVzfszX lJpKq10d72zrz24yjXvsjY2611x2fHOvCz3dungz6SMNnWlZa9q4u1mnK1t+ODRekXfjL77boeeu bquu9N9ddbRvpvSustZTfTXRVv1zftjG/PGuvHPY58ryst4zWsmraJWVqV7Rnfnjnee7hGouNsGf Pbtx25vR8dr5xxluZ830xdFVWvzy161rxnjjhuO3HbnOMzrnfXTGbWi22++2+mk5zlPer2zjVe2T lRXmFnpXTU00O6M8Yw/ZlqkmlK3XbKytue+sroK4k1OK8otEwmNRPJ6y5dpNrx0yQmOllttpt1Ka dtKb6byrSenLabSlW2b56U0ROd+Kv1prola1rae6axLWqaproiN04nTao2scpSlOcprKZ7Pa0TrD wgV1RpGrPV6NlUs9XSHtZ1eVkN3ZWpStYhZziUqUWiqixpwmMDip7Z0HVL5UW5okr2SnDS0lpm2H vpxjnmuuOcWm3NNdNtDN7b9tuNcadc4zt2tvrXjnbtjtv27b3g+dL2ptwvaMZd4xI1hZNK774Vo0 1TWWHwqR2k7vdFmjpjWtMHpxDV0fObLejLLba1cS3tG6tKtuW1tKrxnnGVMz4vXbbKbbaJXV30n2 zvLeqbsuuiJFTE66yoK6znOUqSmiymesO8pvU0Q3U1Y1nWxhzik6LSK1WsQaI7srbVerxOULak1l RWlKwxXitd5rOXFL7xxjHOvASnN3xdmVc5402s67cZ0ONVvOnMsPzFOKYffnts292C1mGN+K15ed VxpJDkisc6KiIeoV9INJPObTacmo7nISq8hniU7V0pKtrLI1Wla1FNFaT0FESSz0lWc5o0upSVjg 6VeLHOloxSlKO8oqtLc5tuidscqss0n1KUpyl1VaVYN0k0hWlJnE1V4nPTa91zjE7rNc4odczir1 etAoR0kkMsksr9WhTq1NzktnIQO7S+YjYbYjKfMsboEkk0HVfd/yq++/zbNIXtc80cuR8/oHJnpS jXPonDKvpCSvX3YIHJO477/G895ju/GxyKGDsSD8ZdPdFvcfiG9PT40/CevK1b6x9DDqABQYBDYu PzzmOn7bo9H4KqbeS2tNrtVDZ2w2O/ItnFWmu5+a8TMKabGvTrdTQZhjMskqGmCqHc7oPWyNvInf qnq0MkbPqWYR7WGyyK1O49u0W8IbGR8UWrI62laOexsZpRpkV6zgcft7V/RoamGpr17rYa2WwOJ+ My3bsAeCqN7lDGrcy8JLVhTR6f/T5G+TutdFv+Ddtcf6N9YHxlz5J05RmDm7n2qjenuVWfTBtZUd 44TU0SODozvL3+wWvFZ09/Y3jl+YicPxee7i5A5chOOUZlWYVex+G+PXn4+XgfDey7ofQeUWmx+9 AIq+0h9NvZ+09FvX5B3dWNmZ3eVGirViJRSInOHec5zelHeta0pEVrWsVq0PEJXioq1MaaWfR3d7 O+l8Y+Q7nqPUX8v5Hy4d3rWta1h3eIiIiIiId3d3d3eI6iXPPbt2zznNa5d36iIiHd3d3d3iIiIh 35ta1rWta0tte3bt2zkV11004vfnl3fnmIiIiIiLREREREREREO7u7u7vERERERECUVqta1rWsRE RERERLp88WxXtri3OmOeuc4xe98YxjGMYxjGL3r17M88888888889evXr2J557M8888889evXr2Z 5569evXs169evXr1+sYxe979YxjGMYxjGL3unPW+jy7b62i7lnqUpSta1LWtERERERERERA5FcZn xp1rbnftvfrtfOOs052d74ljF73ve+3OrM15XvfOMWxi+YiIiIiM2zpnPWc5lLqUpddddddda5zn Ob88344znmta5zmIrnOc2vZu1MYw173x1rnXOc9s5zjjOuK4xPGMYxjF73vtiUpSznOc5znOc5ta 1rW7aaaaadddddddSlKUpdddZjGMYxjGOuedc8cZpmtc5y72z1nNr2ZHmD1F8Lusab0vV681rOc5 zelHd3eIiIiHeta1rRqo02nOc4cY335Lkcjks3KuA4yVI8q9tL2ve221rbXnZ3eJvNbbbbF5Nszb bVrWtWrRLtctiWstiWst1C3MpqQS/LrbFM7R1tjtrz2jg8XrZOOJ775pxxjjjbjrt1i2+8b7773x PjjjjjjHXR87bbba66666669dZppp2111007a6664xjNNNO3O223W21tttus9X66655fXR58M+L9 VrWzvEREREO71rWkUnFKUisO8RESKZznOUQK7dc9uOusNk5SSTSrnMRWIiIiHd61rWkVpFa1rDu8 REREO7vWta1h3G5xFrWta1rREB3d3d3eHd3d3d5RJmWIiKw8REREREQ7u40iTSOURERZ3d4hmZmi IiHd61rSkVpFaxWtaw7u8REQESu+++cZ44rxvxvtPf8Dc7fUOG595pS7f1wZUPxYc3kc7r3amvBq wnZSsxJtvJxcThcd4iLsordwvYUmut9cLrFON8T8Z+NqlWiXHHhfN9a203YWZddQcz7BtuoaoNnF dBvXKi15E7UpqcnsgvmdC4LuDVsuuQc/7HocJnR93qmVV+GTpO3k4eRaVVt9X0yPX753gTby+p7u S1YPFo6bj1NeE0qWmcKn91asjSH5e/8LFd72cUZjy4dMK5rnonCe9V7PR0cTcynnonv1d6LXgZm/ yPdy4sNeEYquSW98YK76nZz+mk9gnHBcFV6kvZctt8sm30sTvJMpgdo3fg7b7HtccLp4bOVmRdwI 67kPT7jSqexHcqHUNe53AHDj5m+hczWy4ENrKtS6YLW2g/5nbgdLVONzPRdlttLe4J9r8bvxteEl bWnM6PA6UnF6C36rYcgp1btvC758Hh/CldmScDm+oSbH1hXvhNhK5HTifMpah6LJnimXeajRauFL UWi15pkNE14tQasLUaZmtTNQsRmLXNIms1ppGtNZrzUJotZaFrmmBra8jdF6LDaZviyLeq581mcN VWS35NiabY1vFiW2ZKzJur6jNqlvmb5ZTfU3bsGynosmy3pai31WZN60E1mZrTRNdTXeCythi1hr wtU2BajUlmZDGZk1mvGpRpNZaU1zPs9Le35ZuqWLeWqbpmbsjLdhmLZGlui1S3KtYVulyZOO+HBb 9cBaaUxmRptpb1uqW1Zm6rRblrWt2Jm6yZk2o0tyWotw3ZWVv1tJb1vLZsWFvrdm0q2ybLcWi2i1 7ODYxa5Wk17GYpmpTIZk1mkTXNaa9SZMZDXrwbOLMa5OoytczZzhqplaUyVvYM3ZGbRfz8mq3i0L YzEdklz9Rtfhk3+HV7OSO8i03sjl+ri2sT/Spx+Ip1NDpdzqlwuGQ1YReEaamjQ15LUzTMy6fv/i NjXEb+vCmgksuuK66juOo7uqd2tWdVUEaWKo0yBZklNMspR0WKlbQKbYJbspVNZL02RGsZhEUjIi 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 ZVwrTcwN7irdlMwrA0bavJy5WVazMOfG3U1QuGSzEutY7yFirpyQrq3NpU7jEK1z6QVdRBesQI+Y kkDwkhRMWotrtdznYcOrBi6GtJe2tTFlyt7mchyUkMO+43c7ObdbncVt9WtZewqYamw5PhaMOJYi sOkvX7fBhvXr9LIilov7vGw4cN/gX7163RmpXX7lyGznVas01C5sKlKxd0MNflZbte9lcfm5Ofl5 r2a9j4+XSsYtKtjZj9bHx9STRw4cODlsNTBJDSpTQX792/du3cy7TpUalx+5izXcOVlVclnTZM2N Wp1q1bOrwV8mtX4c8+VPYrZ2PSxKWPBVxfIxVrNavmZWlUjqVMrlsypfiip04MM9e/izZoopR2ia o5II2Ae1nCEjfDAIOLkJdYJlVSXYWCruGINeEK8plV1sRWZJG2SFawZklaynUYq3ZJbsB7TBItrI NsgAzAhIw3oZ8MVyvauUsXNvaEmlsb+wvY+vpaPLZmpzvIbDI53Y7Tb8fwtPg7HabXkdpuuS3W12 /C3fC3nG7zf8Lh8Df7lAJbBgQDMgQgNHkHIQbQADVW0TyFnshIA2+y3Mu52r78EEEA0EEG/heTki pndW2K26clV1Mg9PhUb8l2OKDj4q28E++/Rbz8z0bTYJwrCLaZQZkUX9f5DY8p+E07v7pp5b8lp5 jvrTwPrWnQf4tPGeIadv9Wnyf4ony/oRPiuoifI6COO5W6i/WPUxPm9nd0tXtIn1spum6KerrIn6 bPxP9yIEcgkKZhJFzJBcr58i2XUDu044diyDvNdUO6fph3estHSJ/J6aMJ4+ui/dp68T93x/rUtr 5UT7zpon3/mT/m8eJ+6ysT/n7GJ/M7uJ+5+VE+Z7r8A97zlx2Lijr14d3/gju78Yd2vqR1auO999 wdcuDvX8+O9/+odQok+DrYn3O+ifdbyJ8dns9ERKKUXPnxP2HgxPdd5E/T9xE/M81E/oxEREuWml EpppSiUsVioqP2+rE/qfXife7SJ8dV7WPEvov3gdhE9b10T97nIn9Pt4n8XjIn9Tqon8HcxPsNjE 9hYRP3HBifk8fE+Px8T+X40T28SlEo4zAYCKjmOYif0PeifN5uJ+b5uJ/R+CJ76+ie+6SJ85nYnq 6yJ899OJ7PNxPl8vE/4d3uYlFKlv4ni40UT971XP6SJVHMdBE8aWJue6OJ8j6sT7O1ifs/NifB2t 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 1aYFGg+qlF/acb1/uNZRkLb5kJJDMISW4riNMxcFjdFuIlwSi0cQ3uLwqnC4XC774WwHqtfwveH9 x/j/i/EsYT78zn6r8tPrlVHdWZp/+fzFMzMf5vc8D13xmxqW9xRt7evMzGrw2cS/b+wdgWzeBDs9 Quim+RdGe03xb+yrLbUe9vBKeKtVwtn3VuGu4f5V6h/K+XJNi/YtmTf6s0CcKyDqvB/Veh0fgbX2 eLB3Ia/Z5sMUvoxaqhqicPFubmQekBojXj/rwt4EXobtq7l08r+O/Z5lyU567NZeVrgHeriL1J3e ngO+/z8pmMzFiffajFjMpuZ+F4r13sc1X7GUfJZY25cn72DTMK73ObVch+rg55qiaU8SiVRKUYSW JyvDyvdvLn49yW+v8rWLW1tbW1tbW1taqXtep6HaZ3B8dD+o/JPJH850pvLuh3E9jvd57Pssxmmr 7hsM/v9313Gk1NUiaOk1kaROLmxz2kthWPyP16vifSO9H+Z3w/UPE1eHk2yt3dzpHXG8Rb6lwY7D +LHur07aPtT/pvtlObjfJisyTLgyXjqT4J7wc2q30p8fdV9nW31I/Rr79+vfqlzV9lHSvhr6GvC9 zIX5dXT+l/NO/2oeoY7e8x6j1HqPUeH6j1HK9L7j9+zM7C376rPVu69NuKNdsabERw2hKn8F86+X dO3JetuuC5t2knRm+W/qywv9O6376ejA2L++76guzZRuHww3OLSONgXbMqTfWUrVhPTGYJ5vLp8b mDXKK15SUZhR339z89mZgrEXczWSt4wpmMJmFWJUz7++BH2VR1faPc3qs7z4Ds3+W8l9JblIFx7W g++fhOeWzWw31FWliG43G43Em43G42kvsfSISF6l5zL1TfPfd/fqnON17zefHOc+cp4DMN1PIZAd 5cD5DIepIK1ZGaa/QmqQmyjEi2KLMAxU2dpiALS71Rg8/BOaxqweONW8qIoJ79ZxiQcchVhJF5J+ mV1J97cNL9pizdL7O7/6DyJ0lxS227PY/Yt06o/7JXe7Pyr1TmY2SKm8z4fduv3nenJ7dp0uOJ+T 9z3c42q1Mm+cqMTkyZaqkeDhoN8nC4bFNPicmQX+x6zDdnJY2tl058+5tVr76TW00rXPnNlwxN0x k+Bdicbcvl2zTJwvjtsunqatrGdiZiy/GzhjMKsxS6ct3ZXU2tba1N/VTprcXNjaWsT/cbdFlaWM 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 WVcY/FA56yB4QKLEzs7Ozs7Okzs7i+MqLcBBWAP/c5CM9CD4/3lbH5N/k6S++ePukfu+jm2fJvlH xVfT0rwZzLmToedcfvclfVC95P+s8HwfB5PB8Hp6fB5ZHx5fB7UPeJu9X2nD+l2Lmf3yeKaivgx0 +kp/lECHhBJTetPPAEHpBEAPpygAhu8H23oT61w+gt4f1XSH7s4/E18tv/F1WKd/hPqfiXgD9v8R +pfjRbiOtXyvtomFayi83P1D9OvB7zwLGTky5Gnp6enp6enp9HqYml+sWyBcVLvEjWSDx/Ue1IxA fYWxXZi6BFuvq8UOP8yuaOFVNg8bcF6J/X5rqXpRuHJQ47f3hLune1ZTl6dz/StX3wzLI3djrUyM w9Lcnl+TyeTyeTyfL9Z9f+N0CvKJHtLqepR/F8DqUOkv27coPx/SHsd1/dzRwK5w4P0j3F+w6CD9 SU/ILgdWhbNSvMaYhfq+0ZeXl5eXl5eXk0sX2Z/s4mBIQySWUg5y8pLu1+rEdGR4O//L/duX5V/P eldyV7JHPYriZePtR+leYPY3yp10h0GX8Z8q8xynOS/TTm3+H78hmeeZ0vqbqzzd11/7ePcc8una ssxM+7k7Zhl4/zR56lX1cnQk+TdR0kT1UdP1dzL10dj0fY9j2POdj2PxfQ+FxxMvWEv81PgT7nZQ /Lc5LjA7eHz93332Y28vKiIp5yI9bFSwnDRHjxGlzPH6rdV0UpRErOW/niUtX9qUcbwPvL5XtTDU VcPvKPwSxGPKVHt0ORp6enp6enDpe6+Xq03x8fGZ3UVWuR2HpLROpq/8tPHHVU/zJzB3+Pq0u0vt +s/fV/UXTb2L8ww8OrEPQh2Dpd+c7fstOMq905r3U7b/PWCs+D2XI5HI33I5HI5G2FOcV7AN+PQ8 NXIVd6vMXaLrJbZ2yPr1bjmTeP8X/z2jmiv9zh+FKuodQn475H3M9MTaPh6PSf/n7mfZm+8Z/n6f 2X5mhUkTju6+OvPX8IdXLqwud19472p5bDMzMsuOWtrMm2Sv6jFi2w9t6Lm/Wca74eBux4vsPH0m ils5NRplB5zvc7We546LZxaKtMqsw/Zl/Sdj2PY9j2PY9j2P1CX+rtRL2DspaTsivOOY/jfyeMz5 T/K5c6+8g8r3M9BcO7bI/l+J2b6M5bkW+xGZf6keYQ1YbJPjqczJeQOE7u419Rx/IjzcvrFt4VPg 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 +CSnafu3XWn5VGO/Xqy45kyi56jPmTH1Xt3nr1/BNrU6OCbE7H6ev4UzMotvc2XMzZlHBLx48OZa x4786n4NqSxgko05PCl0IuLKsaNbO8O3guX6jsFJ6OhVpV/iPacqtaqupV3plS3QkrWMVOO1btPX 8ebY2FaTHZs2YKs+xDcoxWbmCVMu3aE2xMr0Ks/Djdgw5lGxhzJllpMmKjNqTL2ZT12hA9JDdyxw 4MyG1Biq6kmV6jYHrF6/jqXL9qjUzK1/bT9fSn2Ndqwdt1Fbaa22ijtZJ1V6nZpXb9Tt4/46defa mZZKckmdDYatL9F0WCzbs27l2hRs3Lr2fQseeqSfxXJdfHZlJ6pJfsxUaF9qty/dm1MydUfm15dS hn4qjZYtrir2LVu29JUn07UvuZUl3izqRTx8pVKdJ1aZfoR2Ktyc/mULWlo1KU+rPx2KdWy/XneD YhahVpWSzasWJxLm1dy9anyU5zV9/Yp16VStv4a9OVPLE2SzWqlOVM378zUsPWN/eddqXIbdO1Vr WbNyVFXet27kqy+9TukyjgqVXrdx0qZjuz8OTMvzM6zLy1YM7f2YbUjrFunfmatKXvoJcNduz4Ic IEvtc54dvonusbv3sx6Vsf6o3/g8V0qu/Dxewo84HPU0CK0ybpcfotTXbDsIeHd2W12fmpfCm72z zOwp9xDzFSpq1tXba3ItcHSzdtqbTQ6Obvt5H8B7V63uH8zBDav7jDezMzzkrPzsXZZleLdWLE6/ Xqd50srqaU6hloUM2HRtP2nrXg27dzY7Dg5c7Nz8vLcDSc/oxRRRx5la7n1noddkx5mZHFp5Jd+D RhguW79vLdtVJLdq7bozbNSOlJZs2Y7NOzcy5uXha7Ye5zNLaW49G7oWLbrVvZWsdzaTK8kleSxS 1+uoW87Pv0+HDilWY5cuHWd6qZLmzdKKlocU9LuEJAHknq/82rfxegBfIQqv3GyI0Mb/V38H9Dr+ Zd1X6e/X+50ggdYfFwUPP+dX5H+pPWuf8Hs/kXNdbufs8dFdvDbd+tzubMddXbh2ud/xvDs7GmO2 7a8MY8O2jGAjE0jKMFQISTnMoSEilARERKKJBEOIkSQA2xiO3J61dtHDcrbbo7HbrhdPbta4XRRF IAoFOYhCEiM5zlMHtASnQ6A4QhA0SSIhS/H/A8L7Hwu1wq+oxR7Lc8VLU4C5mgmo9RouRZUbNGUA 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 DiWKo2B4LQQBPRAGIDgDkDxSDAeKA5BycBycBycBycnDgJvveENOE6HpU2U1LZHSjpa6Uc9xxvVv R0sbTc3JzcRqKwnSr0mry2hiSyjPTTStW0oururs7M9WpNmmq1qzKtVatHdqu7O6q9KMzMzu9Hd1 q6q6uzPWtJs02Zn4t1x1ze2cqrUozLl6O7qrurqqszLSjtRmZndXZ2mzMzu7MtFbKqq1dnoI0Jgo apOVCUlJwKipVKtQ4cO7u4cSEXZVVmZlVqMyq7uruz0d3o7uruyurszq9Go2M7Xvx2CLbulAcfqu j8J0VsEzDRKMr52TdxTMQ0t3dtvc17lijMFs2WvZrbMzuJiywOmTVI0nh4d48e+UoHdO57nwPW9c 4ax0fNk8E8coLWtZFAQ20IWBERSgf94iIgJTKkKTITA8sAA5yMTmnn+uUhQhAENDABmAQACzMKqU Ap2eGJAFmbb0/c3DZXHlG1sxm1sNjXrx8TZ2O0bVpIbuQAIQAnQxOlANwS0ICdDE6dgKAYAKYUAC dMbW2+u3DbXvq3slmQZiWYg6ybmLdy14BqYot3d4/md43jSkbe7jb2aYco2sYE9A0UPWT4kSvUMX kAp7CQzAII5bPtHL4klne2eDwn3483vovmfMz2lStnFbs8X0GyryvMlQVbHWeolTINSW6Zr5e0nT ovm0rfDmzJ86pKjtVLb9CxDFKhkn2o7XzaVK2/Rp1ZKE+S5VsV3bh1KhNiipRza0VCzHZdS56lSs 1IH79ixTkktWL8ubevUaNtrM6jFalWalkpvU79KfVvwQOvkuKxRo05jzOiLD1atZtVp9OzbirWpK s6rJTkm2o7UufLnVLVe1dt27cMk4mThqJVIYbdmZSs2LtunKpQ1quRFJVM/R8b2/SQ0aTDsuX5c1 NZoV1mSn0mq29zTRubm5NfZ4Wzaxps2u67Z3tv32rb2SXAyozCW7qze3m9vHQOrba+gSPi6bpm3f cMBKRnKMj7fta9z0x5/2P4D1dgNvT8Z/U77+L3PUnHyqD1HpSnrpe3h5M/ltqL7fPofNcO789c+Y 7u+/d66d718K6YV3frnnqtcVPF8Orvz1z07vbGLIzN11z07vjB4xzzzzKWFPGPH211ji9IZzbTbb bNN6JnONd95Svg71fTnWk85POb7bdb4pSiYxiu22054oebZrtttO88XTG2us54meLY0501nO1L4t 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 tK+vmOvGXnZ9o0LzZhxMFx8pfDqy9bcmmkh9JMXJwvbPoM0W6dBzudzudzudzt3fs58zDPmgLPvw fs0L059As+AqkwcTJoT4RGX0uOtx8kx65Jn/LB/NKzuTF5ow4Yr50aIcDK1ZcSy8hYngrD9Rkj57 E/YZVb+XQs+xYnfQMXgVg6VGJ0slUAw4cOHDhwRfFUvFM/FBZCBUXngYX02eYhQx5ghDJbSF/ppu sdg+I0q3TI5FMjjSr4eQPJMynSZk1PUNNJsj3+TvbD6cyr6Zi9Zi5Fh1oyPE3CNAsT6dpL++yP8v +rn/MWcu5cyEsdjHjx47+OKY0uYe9ASHGMBnmDEd6nkkkcAz2nMd9VbmS82f1QasF53D3Q+9uFU+ 8MvjC+G0S+U7LqsuNGK/tvoqlvr3h+Lf1dAc7nc7nc7nc7nfAK5rOPGK6PojCj9ktDxLvXptaV+L dMcY339SxVP/dN7xjvTgCtXRjMqfjYObcIbvxhw0+6dZS/8g+041w/uz/cfUKfSqnEz2Hu+di6dX Y1uJP3xPuUvTU1KrVD4sq+0o6N3XdcPdd13Xdd1wVTgi4I5C4bm/j/BLm4M8JQIQgIRkwXoTO0gi CAW81UHCH2UK/NzBECmCIEoIGBDxO2AEeeLePrt5Oc510bAhwsIA2hrMUjEgpzhQIcACBENtNlgs UYwQWA+4IATe2/bw2cHTSN7dmxtfVYt8/7vP+8xPdYvNSuG4fE4Nfzv1R9M6Xq6+7nwLjwuDKvAR /3vTNnSgufpDb4OQADbbC7VSloYAkRVOZ0GuWtNg4g4I40ufVz1NynQ03q3Kbobyt9OQ8C2vz2vs 5VU4M4XyX5Bv9oqvI9LePP4z+71NG3nnUVyOffaya+55h66prsx1wsX9p6S2YLMyT9R7jHR8xv3N c+4fNOz7Ps+z7PuvdfcTu38+P5jlBfuQBOHCUVWiKiimKiqiJiIqIiIIoqqKqYiKqqqqqIiqqIpq KqJqpqqqqqKmKiqqimKqqqiJqqiiKqqqqoiqiqoqJIioiqqqqoqiKoqoiqiaqIiqqoqImqqKKioq ImqqqqoigqoqIqqoqqqYiKqIqqqoqiqYqpiiIoioqKizMzMZxql3VR469/3bl/Nhz2UuVlZT3TMD +OFf5h3fBUio8IyHESkqVQ/T+knrL8Od/t6Zf/Ab2H6eeDfGP+un+BJejPtfzjs5L3NNn+rkVcYJ 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 UpStSlpUpSlMYpSlMYxl5SlSqXKpSlKYtiVKUuVMqUpXJIyNKUrWuxJJIpTExJSla0pZIpbFrSlK VqUtKUpjYxilKUxjGKUpTFrYpSlKYxilKYxaUpSla0pTJIla1rSlKlsYqVSlSypWpSmMkWlKUrlU xKUpSla40pXKtaUpStSlsZEx+R6SGFSksYxjErWpK1yKsPvsff4nPjjje973ve9rrWFVcqq7XSrn Krq+lrq272tW1axQS2IpZY5JZZVrXLIxTGLWyVbFMYtbGMYxi1KWljGMWpS2KYxjGMkjUtKVKiVI pSUqUpTI5FsYxUjGMYtbGLYxjEsYpi2KUxa2KWtS1KUpSZFRqUpSVMUtMq5VsYxiksYtd32u975X na7Vc70uVXWda0uda0KveuF0T3vXaqIiW972IiS70EhHK61sXv2qult65WW3vXenSFda1t7xVV2T 3jtV2Ilve1ER3rW2iMtb3tzhLa6lt48yJU22uota5JErkUqNKVSrkStUq1rlSxbFMUpaVrUpa1LV V1nS62hbfiDwJyq1uc7TO4i7LYpt1m4WDzxrfOc83k5FanLbplV5hzDeOJLqa3ee33c7DN8MUNqz LM5ZyxNBdlQtxxKMObWjza584xjmy60uc5znK8mZmZmaqqqq7sUo8MAFYAcAAQYx4ABMAIgAaYAG xhgARk15GQSACGGQiQlyQmOQiSQQAsKWABSkkqWSwiVELwEMC24YK8EEEEsssrJVyyrUpSpVrWta 1rW44pSlK0VKU0ejzbtIDe1OqrTF1Rz2oS2gi4IKLev37ZeMN9PDURCz/qv/VKU+JQkKySSWUpIl qJiwXO+KgzbwVHuoFGALAg+AugEADHgIMZKMmyCQBCYMBkIR9vYUgheLyW22yWHr/LlyYHdoAomn sUAxIlmRMwGZDc3W60zdNw21CjjZInH1mKIpfvyXy+6Xpw4tBuukuLg318bS0tOf9HebwN5LEUSJ evHVFzn2oi22lp5dEzIZQpWyNbr/vO4a40pJraUx/s8GGK5TouPqLlURuOx9J3P+H3cr8h3JTjrr vql8AbYorhMQhA+Up6XU8XrDZ0KzAWYVmS01OxhpRcekWYzEqamlPqSaNGORur6HQia41srGop2S 1W0ooZlCkwa34nnqt5hoFpiK18zl7jGy7aI+Wdfvuq3ReC8dnD1lQw0BALYC8coWhr+Q4/SbXCFx 2pSRN1izKpYuHDW1sZSjHV8WUQSpSO3rXc2cnvtHhwFsPQ0YAeF8uiBbEFLQtMaNPw1ZWhUaanX+ QotnBoVvVbS11WgUBH0Atd/hYeI1gVatt2AC+SQLCAACUIq4IeHxL2vUia/w3gLZ6l+Tb1VZim2t 6D7W48ZxYuL3m+76yp5CpZSuemxOtKO6GLwwuk6GxUyqZGRYA4Da2OKVrSZpTWMaNOOGuM6ZxSRH ZDSVp2tIxxS0J5vJzqrV24a3u/FYypuCTV97KtrSnp8dE6k1qiV1Oe6HjWLQlI7xrs6a1qOcxSeS Sy3pvjdaRhZTrSsX9Mox5bGRYndbboJq47CJLOdueJSnxRbUrc7glhlzfWSlcjvvNZGdGvdTkpS5 tmldSpTM8gnEkTMWtroc6hw3bsJcoqtBhB0MzpPE1o+K0vy1tI0zhdttxFSrbjVrXrbPHFOBk+8q tuLSkcZXe/UYZKMdldFm09bLRLfMXzw5HyLc91vEr5Xd8OTiFMvpklpgeE4nxjjjWam+dr1fKRLL G68Xw50LFxxc6zTgIufG9Z4tO0r11J+s31TG1fHMpBOJC+Up4295NjIpFjEuVO18Rk92dc6quNFx fMN1fuud86pRbJO0pR5xuEbQcJne13UbCEdxvJ5lJu1QXprdya0RxSz8S44nwIJehBjhJVmksXub r7CJ2wk8ng03zEN8lwLnpgG8PzDmkHk6Iv4M5k90LXwsoxOZWk99ZkfMptKG5nO4anNHFzwkUmVp 23xTXN9cVnozzbertmJ6pUqu4Hh1VwbcW4XVXzXG873bVp2KKbI0tLURhiyVjiaSzDGuM7WCxiCR yT4RlznnmELzcJGh31ouRbyawjpz+L23pXWpgkTHNcLXK45nxxVJrKMd4hAqwe8ztXNxRsYyhGVj KTVPIvLK7JrRHE+H4lPifAglaEGDjVHQxe93bCBUumZSyuIKJuk8qhp94LBsJNi2PG5Ccyg6NbXj CEZyrrh9okbYlOetEXCZ3eur52qhSRjOOMRxjOAJq7hqk8vltK1oougYxN19anOXOtwtrDawfxmN b5ySb3VRVcYWkqRmeOeIQhWgRrJEEr64knCYpSbicTWxLXNbNThoiNiKcoSnPiJSRxvI56rq7rwx vknLykHQFoi5/M2uKcEKDRMTOcoSkSCaPeYib3icHPgCRi0XCx0YNRrnveiIDTJDJDeKSgaYrmz0 pWkxenEIYXHWV4okKEbi69Z/orQtoBtjA1cCCB4RJqBoBENVshsv7Y7wWZ161BQuLA78LQKc+oLq YkgrU0ektSpHHgzZURRQJFAUD1KPVdJq4iu7ySbFcpl9wW2aZBbGVTT2VMOa/FBtgAPLiWY0w6Cg XQAJBEK4lcNWQLgDxY0j67mlUboi9gJ7xKwJ3oC9fAKL2PXaHqb1UVkUQuAPFjBeIQwQKep6bI8x l7kW/EQkAxKURAkBpAF2Gxp/nttZj8Voq0z798pbsuKvS7PwBEXYnJLFKUZzIplMpmZmZEhvj7X2 nXdrjtvDXDtpXhmVWxnKc/Ddv0J1RERERERERERERERERDMyIpSQrQ4RcWVVXe+DOpcGZmZTmRFK U+SKZmc0RJoiIiGZmZmZwvS9l53vnkzMzIuTMzMzREQMWbOc580hCGpb5J78b3Te0TlESBEQkRES IiIiGZmZmZIZmZmZoiIiIiIiIiIiIBECvqiytwttWXHO8c65VVqUpSlKUpSlMWtalKUxa1rWta1r WpSlMWta1rWta1q1rW1VeVVVVVVVVed72qwxWe1zevCQhexPeREU5z4RERECk9JArcymJ4FzqXNw OdmeeObU4pdda0q1qRFszM61rWu9wvluMYxi975xxjF773t73vfrnWta1yq5znPOta1rXOtaznPF rWm2F5RjCVxc697uBzp3vvNacUwucZXmtdmZmRWta1rb3C+W4xe984xjGMYxje9zhCHMFVV53taK q873tVXaquta1yvFrWm2MLqlOTUrXN73LbFiKsq1rqtaoiIkBBqEREiPk8jJDujWtXuFwbjcHA46 211rXz1eTAYDmgDgFzQaDY4ljjm0ggVFvukuHC2gtCEyKUikSUpdc7xtd83ve9rWla1rVrrd8quw pxxxulK7bGMYxta1KT3veVXWda1rOc5XWueeOb2mWAjGfOtZM9oiIiIiJVERERERJoiIiIiIhmda azje975Oc9a1rWtKqIiIiIhEREUpBjHOc5zne9oiIiIiIiIZmZmZmaIiIiIiIkGve5EREJDNERER ERERERDMzMzMzRDMzMz5M5ogTfzys5pFEStamdERISk6UpSkiIiIiIxILTdcRta1rWtax2gKIiIQ whAiREPb4+quFgj6s76Icxyfh1B8k1OB4zxe6z3SBsB7hudGVWzhxON5janoKJs4U+38XmeCeqOy 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 Da/jQbVbfUT4+7W21t+Arz75Fy/CH/58q1E9Mx7GOqmT4WknEkTeT8d6lsaqnEQIPa6/o6nY5a82 j1zwIB8XMff5BUT7/Lh4AgagQSH34otQQQRxug1iir5/mRqR7KUgtjT3v2WzywrNGDG1C76gC72g HxQP0V5q+nHz4c9Aa/FnwLi80euNj/ifHnOTyk/KNjwS7FPOg9PPwZ0U/insJ4edGfUpfZvyZ9ad QfVP0DxV1TqN0brQ9HZPBg6WvVWgBWAlKu6khCQRi2RU02as01yattO8DEmMFs6aUhobpvtd837d 5ed1277pd5vT089dPXdzt6b1LznUpCWWWUjWVlhUINSytaBQoJWtSqFa1jIkrCLWqVaxgFa1rQo0 jFqVqFQKldzeWTdq7u7XXSVM155eedXV2itQqwIf/zFBWSZTWZDI60kCBXr///////////////// ////////////////////////////4T1bnu8PvB6+fAAAAAAA7gAAD2SQoUhUooD5aqZ6FD7vet18 1dLABffe17woy7YvvZ4HjRXeyh4AD5DvgPLx8c8RqDPefXg2e+HyD3uhwDzo1JVnizrnW6rt0tM5 jpAxrAsN20oABIbOtqCwA6AALgMZCC+sg70fLKlAkVQKuNqpC1n23UUNbV6+5ntp8RRs8AdAHoAA x48Xrg+BNKgxnyd3HHUhIqhIAr7aiJXvHPvm+Nu53XtyrgAGUqo+7ilAAKHWpfVAttmlXKWu5pXG 5bu6PWV72NGQ0octcmuz10il7yO6qqpPe5wl5V92Ir00EVIvrD7DRSSKjAHmOu2KUKrrSpFSRGm+ 2lxlMgVK2aD6yt93X1oCPYMQC+RgvdudMVNtQqRSIUqumuta0d97n08+Zt92b3d99gPib27l24Qt s31n20ib3Nzpw2OlcutD1r333dPRKpUAFI+zTybybRpazbU0rIc7PQ099dcEINrbbtiuqdCulHX0 MS1nWRIEh6GtaD1l7MFptGku2OqCijW93Uoovec7bEhSKTbVVJQVQqVU+mpVUSqV0N7NSKlpT6VF 2nudxlVUKlV9Br6BpQXgLUhX2aW2SlKKXs0qU6YFG2lT7aRdsgKVVFKeWOgxoNTY+3VzcADHTM7t rFAPIdDqtNKApVctdA9aKoKOiRsweqbrFsapqlHXR21AEFs1FsNWsfQMRQFEnl7soL7OhTr2YB0D xbsAtmcHu9eVU0OgddCtAXbQdaVVedjpTnYyXdw0aoe7HbNsqW++95T5ze7e83Z7mewyzb2w0+59 3ub7bs7ju7Z887nd3N59gbjeuvqqA2wLY00tgUtr20DhtT3Y8A0iSAmmU9BppkaQYjQaYmp4Jiek 3qPUammnkCMm0mINqCbT0IyaHqaaYJsUyDU8mgYp6YmptMTIYmJpppiYIaZDU2JhNGk8RiYP3+qq k3qkGUgRkNMbRRpkJo0NNCYAjJimmIaNTyBpkCZqYU2QamCaZkmZMlPU9CZtGiYmJNpppNkZMmU9 J+psiGE0yaGFPAnqnihp7UwmmankU8kDIgMkAQqYTTJqabSYJNppoyMNGplNqe1U/EGjVPGRPTRp 6p4kbEp7I0o2KHgp4U/VG1G9RP1MyhtTU9JkZ6aI0nk1NPUzJkMo2hDDSNNDGmj0gjT1BJ6pSSmi ZTaUeqeFHppp6Cj9TxCnlPDVHoj9UGnkh6mmnpAAMnlB6ajQGIaNNA0NABoAGg0AD1ABoAAAHqDQ AAGgAACapRIAgARoCYCmaGExNNJg0A1MmFPIxNMATQaMjaTTJiA000E2RoJ6Gg0GjUNHiaT1MTZT Go2SeppgNCNT0YA00T1NNoTUClKQgIAmQBoGRoaTJkZNAABMCYATTAg0yMmTTTQwmRpkyMjTQMEa aBoMIAKbJtATDRoAAAABqYCYp9okkJv+6mMORyn1on4qGQIyz0gEQGAUKSBAKoCJry7drXbrtV3n nlvN26teXdry661eNc15du21127avO7by661ed55rzztZrZoVs011rLRoVpo0Gq9t9t/b2PcdRt3 K6RH72WvMT1rn2lykKGguN6obreu3ortQXruL5eaG93iu3m83y932+0d+o6Oj7zA4LBd3Vr/Y5m8 yM5g52dak7PP6mTmTUa7dC/2fXczTpyvL87Dz9fn9j12xtbXZ9hwuf2Wnt8/k7utt7nP6fd3d3f3 +fvb/QPaFWbW3rO9tN4NqyiM6De6LhK6DhN19fX2NbV1s/Pz9DPz9DS1NTP0+24nmdvtu409je2t jY43b8Libfme44vF4vccXpONx+Rx7+LS6HiaWZpZuxwMehv7u/0O5wuDt8fkbG9x72Txsjb4HE6T iYej2NXV4Ofobu7p+a4XmtXd193f3t/f393f396yCABrqid+p5jV4+8h5vTTE8lo0WZNGjTyeTMN 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 ukdNwnBoYVdrjvXsjBkYsl99VaDNzHn48YrqiYM6bOidqDEapxgRmyKxsGuWmISC0ZDIZjKZchTD jLC02WloDS0NDS01A0tLS0tLS0tYppaWhoaWla5bFitDVYahQVRMITCIQGLCxqo3WyukbjcLhcLs b7r1uE5XwG7HA4DdiN2W7dMF2WoGrDWlohruMDAwMYWBjCwRMDBYCFAgQNDAwMYa9lgYwMYWCAMD BCGBjAwMYGBjAwMDDFsxueBGgGhEjkDMjE0AuIsBYhnICAhwA5AcgOQHIDghwA5AcgUhWVJoknkz M891a0o9q1tV92mGme7bt27dyy2DLDIZR3bYbNkay2ttabu1aiM4QeTzo7s7szMzMzMzM9auz1q7 szVd3d3d3d3dmZmZq1erO7u7u7s7s1a1rVquzPJ3atatWb0d3Z6LR61D1Faita1Fah3deICfzN8S CCQANyJDwOQpWMVJA6nqOpzVz/UcLy7qGxDLVCdPiq8n+/VbUbW/vb+b+/vtqhlja2NrZtcPbdyh uIaWLsTn8kcPEltS17+9vt6tERzalIpNIpNkUlglpNwUmkCIKFYXoIqtgngkk/LDVi1RyeRyc1cj k9g6XoJpFvYjcxWmSTbWIzSSrVImDvQSlJ0TGvz9zEVIUgAG5AAiAIgIAX2oAghBEJECLs6O7l0a pFaVSvYcCpCAEAshBIvBM2ZoMzAz/hIJ7yyE1izBKtm4MwAoJA/RQkF0JJAhRmCs1xDkU3u9tIgc 3ICaM9kX7i7z8aA6EEE2QkH4AIP8oAWz2qrsRKEZIssz4xNCKAwIJAGicyABmQas6K7ENnwuHy8f 2yQcim5ut7Te6PfmKc9idlg0ySZlWzb280qO/x3J+uzP5X693gdXDtwbH9idnVs1u3m7nMtdFWlR eVrusqNszV5OG++7Xb09+7XlwOWa1SKzt1a9ng5HzLaNmnktUIlupkXFX6tWtLVojpuTPrkjsTwJ JLUqVLMsq1xy112p1sr0T2KK6wki1xLhXFHekqVJatVLMK7T1M9ORLJkSSWbNmvWiq1atWrVC6Mk ispWYQcQGQp0jA7fkdw/3c0gIcCpEAQKoASSpiSZ0qka1AUmUZJLzZnWzgpqJv4swqbsm7u7eayb u60vkL/OgX4FQQGAB54PN9L72Tm9WM3oBwui1cyehT3Ey/57ty0ehfq8HKs9HqWY4RCIgxnz3GRo xzg0OcszN0PVXU4F+KL9vbnN5RI577HZWss99qyF56rKiI7DC+++xJkYxFrYiMWxiIxjGIyaZcrF rmRJklWta1rXKyVLKLRS0VMjHFMRGOMddcYxSmMUi333n30nqsEhDZrsVdkYQjHXZxF2bNonGcpb du1NsJSWMpbdqJs2yfffefYimtdfeca++jrXHHXHWot1111FsYtjGLYxi2LWiIi0mXUqVKtWrAky lLRFrWi2SskZNMyvXrLmXHXrRxpZjijimRcrJGPrYksUUUCIkML0KIxIYWQMYjIoon2MYkUT8TGI 5DVRFo1sMEEDajGMa1szGMW1jGsYxq1sYtjGMREYtjGMYxjVrYxGMYjFsYiOuuvPIjGMZMxjGLWx FypNMkjUWuZctmZq1rlcVMuVqNYtbEREaiMYjFrSWZaIiIkyLRa0Yxi2SzSrRESaVa5VrmWtiSLX NMta2SotFrRFotjEYiIiIuZrERcy5plrW1FrWtsqTTNYi0mRJkRGsYyayiTSI1EWtJloiIiNWtjF taiNWxiIxiMYxkzGTIiNZMiTIiSrREWtqMYxiLWi1oi1rRJkmRFrai1pMi0RERFzIjEYxGLYyZiI iIky1pMiTJKi2raxERIGPvyrSqxxiIx2Sq6i2NhhdY1lR12oiIjtV5q11KiNRrGQuwvIjGOtehY1 rasLzrUa2q67CiMbDC6xjKtVxa1uQMdWtbKrzJmMZC89CiMY7DC+iMZC89CxjGQuuwoiMhehYxjI XoXdddm1mht12bcIYrTZpjrtndjijQGWKRrCl+GssLs6Yvsrspni74Ver1vyvvW2eMMLTtgLrPaG lKbK2trdSgnINmL77EYfswLqJAkLImSI44K7rZpg1YYgaGVWBjGIiIGBcD0EDkDGMWkqIjWSNZEy syulhjI2WbKSJIklmOaaWVclmzHYr16800zFrXAoELICEiYASkiQhqiJARZBFgEVwRWIFaEPqbXb Ya+1sbbLa7bLZmraldQWxS5g0QCQ2XDwOK03d3e4/B1xdIhpgrMMwp1dXV9XdX0r3AEIpGIl3IAM pS8OYmR8cgguhIAPTm4EMzJUaY7bA0pMcUdMSRFpext1fJsHEgCB5ZCACVmAKtnt5srgKBP+tm1w NtsUpHMyUXR9qpuwFa1t59x1YIBvQgAiJK0nIVMKx5wAyMjlOc+Oxyt1rFdzhF13k0uAk4OJw8HJ FG1aYsyfP0D44trK4S2eSf5ttCWp77R55E3Mhbi+4K2beLPlNvVrsd+uJRLZkC/gk10XiMom3kbp ubbptHouy+YhoS3MpZkqzOz5fde006/a4F1fB4DHFBBlhAmnuqLqsktvIPCO0DZ+HVNmKTc7zuyt Gx7Aq2siZiGnRjd2aVq7ji69XmLcWJDTV3hWmhUZ4/nOACGvGXI3NckbXZSzZnIo2sKsxJfja9r7 qm3eavnfvPOibOo0kcGACiEz5/6JInDh+U6jeedj53qZQ4nEceZdly5p6C60pT6qN/F4D1rXy10Z yvuHkq8pfN57/FrrtKUg85T4d7X0ww2TmvEvvtcKbLklHWeOzPqssqNnTHZtv2Z5a6NnLZjldsns 2JDZtjtm6yG3RZNsrCWr5aa3WTSKxjq9stgd86bNm2ON9Ns6a45X36X33yd6TezM1ZZPk8pTjt27 dFjnbZLZntztad2ul+Gyd2ebDJstI5bazSsrW1u139qPdtzwtRnaFZ4OmCRts2IltueGGdGbNmGK 0pttuy0tdCEqz2bYR2XxnbDCm7dS2MMZShKMZx3Y7oaWpdu3aV0nazuzPrfdbdWmumwbIQy0ikdZ 0qustddiXR24Z20d7lzhrHZtuzz1ldNrM7ypTCayyttfDXGezC2emOWy27C66QSW2WONM4bG03Yz dMBnpns2xnpZMU24SwwzE8L7pXsfedmimr2arr60dgekro81deWwyFjJUlljja9KkU0SBi3kfpSG U88ZSju2TtPS+l7WxuzlPaI5XXrTcjzljVnacFg1N2tUtOmsdBDPHDGONKZvkjXwXRds9ccaWtXd jps2Tpq1MtkdYQ23bA4kGdUSgfaHoloidYYqyuKCMaRmJ7rCtqThFaQab1SYkwlYRo1rVs6TiItC emeSZ7L667a7awpXV9iRjujVa7rSor2ZVegosWecZ0Y0acovFphYSnStHdIUnuaeSx10VbpW27dc Hzwz27p43zoK5XW1ml087tVzznfGs8rsLMNsNN2GExLXLHLREguy8VrkJiGaolA+geiWiJ1gytOD hUSMaTFXE4xglI0d2qu6thYLW1avaCSjWVozutrttqt66aa51wVJbt2u3c+u3PZs27rUwxaeemue OeWO7V1jspemzbsuzzxbCOts602brbZ4ay22ybJttbY5jDGuGt879dkYznOela3436YZY7bYvdG0 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 GsuNYbeWZW0W1lzdredecy61vVXXnre7ur1ZV22ZkG1k1teqyhJqpmEy2acJU0xKjTSwZljl6aWT MrHmDyps90bKXHDgNGZvy1TfalqG7Y4bhM16sUrUYlGzKiywia5DMKzIZiVZkMTiWgPEVtaI7jEt qxFtZQzEo3MVaWo0yMqaMSWZI+KCxFaZEzFNGIasOxFX5el3TNZmUJr0riLfF1v4uvNbtKpXwtXU k+r5bWi1r263mpsvkP8CxZ5st52hcGMnx/z+njPRaOecPc1buN3JvYZlGrIsxMyk8FgtWSuDkJ1K YP3FKzdw0w5mJpk7axqzS7aNC1Y6dYywn77Ji9ZxuLrHDzMrMkf3TsNI8wPG/Y6jibmzVQ2sqd9S MW1jSyP+lPmNJyMR29YvQYr7rrk5F1mBrycfTh4vVHdtKcTEvY17rQ42NWB0eUm8ivl80jZho3s0 Ti2U6Xg7NVdVkPp57He1tcB2ZYuNnZFlUcOWtgOmg9liL2H7vC1OFtOBkabemvIcqmJcPO+Tmbmq ashuM89TAbLDcz9zB+5wNvVw87ox2/+nGWpcQ9+iuD6b2/Gcfg7W5m5pVyfP4OJta3U5DwVin/l/ EivmuVwmytezRcGwOFZDiYbzf0FycmwwD9fCUAQR/WO2AAJmIcn0y8UQhCEYLGAiqBFVYwhCCxiq xSP+D17DQNUDBFso/WCAggdThWAFCgJ+wQkuhw53f/5+Dr3MmzIPx6pZZ4TW2aze2aS6eKZFcyyJ zcrutdGYsxGuXba6RZktfx+bNR4jVol4LNrI2a80kbeI28rZiGvFRVV7KqZV5NreTmt6bXKt5NU8 dqvO7c22/eVq954qxq8b3mLbwXUzA6Hk//eZxrjbUT93KuBlZlrZWmA0spyiD4vryTi4qcZAzNib VYL9bKH+XtvFer+W9X6v1fq/V+//UBfpr2/Eon5vrrZtaCcjCswoZiOKnYbe5dCa/pNiNMJqyPI+ f8TqEVUVYe30VFCdt/EfM8pdogCy7jtBIxIQgkkIRJYjWiaWllZl7O8enKJuh5asI8tYd5yFuIXB xGrUqrB+19Pt9d+X776rsPFe1+t+3qf82r5qTeRet6+07q/bzH7TXYDGpldkq8kmokrRoGVCl3zW C+KSWIknqcUWV8JJ63P+WqkvHZcXy7TzL1jS/YDE7cB6A0ndsX6cSPj5Wm/6VUvu+104JwlLbS4P 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 D1PK5dMQ9fw8rW9J0de02V9XXlaHk/Kb2u9nS/7uhrPHI3/FM9Gjzz1hHxuHTazzjT6vi+j9TzMb VzpV5be0f5uc2CodThDeyUJ/Net1czy9su+beGvk1M32SagTMqbBU01TU1NTeLKMyZSq+VkkthB5 cRmys/TUbvUeoj85q16abH9+88M5O96j0V5fa4tsa1I02mFLoj7RNols39y37Y+YLy8aL3T/RfAt b6vnGkdYmf6WRaFrI9f2One+aQ2xxWblZ/T5T7PsNk9vdxcxObTflfyvY25epUfN6KcnXR/QyHq1 dRTSVXM429y42CL74vT1H+XDp9p9/P+mWYxjMzMAESaMGo1UWDX4e1947OS+Uz/Plb3RXF2PPcTk fgfn/TccoyU7lisyX1YrWDVknETTE/qNPpodC9pD2651V7WnYo28L3f8PUyXh+h0f4TvHxKj8hR+ 3T9tOjODjvK8V5Dx2vtmzXjUQbWlSYyJr/FVWrFTRRswrXEadH1Whe7xKdoyvIx/vv431Z3x9rJf 6dFp9Qt37Lg6E7P41F0W5o+TuHtFzxnb4r8tF3fP5t3gauwV5p45uS8FelPvTg48HC7nwNHE9C4W 9CrmK8LacDvb0cL3W/psL93d0gfiSl+l8n6Ljeh9D6H0O7Avn99vwtb0Ff/PAv9W3/Jegv+tng/j Zlmuz5xt999z+B6B93wPQ8V31ja1zUA/kq67VUp1HXz0Lx7c4fDzh8NuldD5Z7Uajrq6M9qvV2t0 u5pVF+qpWQV8x91FNLK1rQorg/TO/oOZsL0H0GkHKeGj6xyly3eK+3C63pNPLvcdn0jdYynSy0uC XTLLL7Q+5uYk9R6yU5PD0eC/5c+8XxP9r+mU8du6d4+I8z9n+1vuunZntNoRplU0Ura4zFKylNmD cvhqtcmZPgHFf7V5zk9L0h2V1LzvTcp63ZbXapLjYo0gaYNapaWSOljvavBUX5PSaeuK+Vp8cvi2 z+PzYV8iU4mE1Vpl9RLxv/f/WSmFP0dUDAPN9yug/C1amFGUVv2SXtCrTFOwQ2uzhueQ+wD21/Q7 D/+bj2FNw7E7c9BSavIdP2Gveuwvq3vYn7mbedl0O7t3W9Cd818L7KJ4Df08rNq/L+zPklDxO955 3LwlR6bOBh5B4jb43SX3cj8jP883drTkJeIYzMeM1+FvFbEmp9bkylJKzJjI2zNsmZFsyZtmTJkV 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 2w1HFNM4GaYsLLhGLRkuBWi3sem1WMaWDjrVqNjLGW041ua013FraaRSEKEN8s/ZLmyFEmecUFcS lEDQChCgIAQ4gKUChSNpgQMBjEqqoFHtgYcEoA4QpcqgsFZv6b8sZNa0OHE1GtgtFcjFxOXWjLDK adAb1bGMVvtHOYm7bLexpjLTG9i4DXZjFw00TLZZaFgxg2brUsPMLZ0VrOezg5pnB05AtVi2nFy0 jVJhcRpZgtvRA3gxKGZUgKd4JqAcSIlE3pTAIUouQQplk4KrTVx2vP2S0l2k5U1Y4ctDcaPGsV8F esmzXst68x7d8q8iW9XRfp7e/dnG05NquTxxrYbxpLQnFaWYzoVxk2dLpZsVo5li6CtasrDHDku+ fpcPnjnfro8h3XWU2w9fXkvb8ivUh6INxXk/C7/+ddjXUV8RHlKOMX9Hrfg9/tK/b/ynnm/UfS3r 8d8Ptb8n978yuBy5Umo5nOSUyrtgcDgcDfb7fpZeNQZblQTrOwjWy9SCk1QOtiZ7JJLMQL9htaXq vQ39Mr5WWvofcdMbl9d16q2gj0P9g5ruu9+5/mrk3V3C/1mK+sbHxlq/KXtg9texvh+/XK424tOc Gj14Fb7PlvC8t6yzr9AoR8ZyPqqcbuV1xyqgHMDigVKLgAUDEAsEKifNH8k1PHPYmteuKGBr8Ayi AoxI2gN6Izn6QoYPNNmtb3P1zWvMctl6JtbNGMeJa6ujuHL5ubPMNqvr2ulaTtprarRYyeYmtqtG Meaa6+ZY1e0c7p62VY28ZkugtWa6f62mmjGPq2uvoWNXKNGWyxouoVq06bJaytZpHLyXPy4+xaJr km3gl1rZppY29LNGZrpxK1rXRttNa0eQZPlWzZ9Oxq/vne55pt7VdI1V070D8mbdt1aU9E119Cxq 49pWzQ+cnJtjNmn/z+74HelbGNpjSrKdPdPO630Ls87519Dt3neXl+Prz03X3Er5PzL1nt3W+puz zvnzO75onclfM+bdnnfb7zfbV5l6u11vtbs875+832FeZertdb6+7PO+nqZXVomjvLJXebVnI07l q6u1Zuaf0NXLNWVsdlrVrVdhaM2aaTv92TtH+p09ts3NO1austWbNPoWrwGuIYqBonKiKBCkIiBg TgFHl1jBQfMHuTmIoQhQSY0O72l8wteWs7h1V1F2RrsbTSaU6Y0samldDrOkNWWyxo7bOQtmlatV +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